mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-04-23 08:14:31 +00:00
[Rando] Shuffle Icicles and Red Ice (#6462)
Separate options for Icicles (stalagmites and stalactites) and Red Ice. Icicles drop an item when broken and red ice gives an item when melted. CMC options for icicles were more limited - the particle effect strobes because there are too many icicles in certain rooms. This currently uses Dampe's halo centered around the tips, which are visible for both types, but model replacement could be used here if a set was made.
This commit is contained in:
parent
67191665df
commit
49e740b6f2
|
|
@ -1267,6 +1267,14 @@ typedef enum {
|
||||||
// - None
|
// - None
|
||||||
VB_HEARTS_INCREASE_WITH_CONTAINERS,
|
VB_HEARTS_INCREASE_WITH_CONTAINERS,
|
||||||
|
|
||||||
|
// #### `result`
|
||||||
|
// ```c
|
||||||
|
// true
|
||||||
|
// ```
|
||||||
|
// #### `args`
|
||||||
|
// - `*BgIceTurara`
|
||||||
|
VB_ICICLE_SETUP_DRAW,
|
||||||
|
|
||||||
// #### `result`
|
// #### `result`
|
||||||
// ```c
|
// ```c
|
||||||
// (respawnFlag == 1) || (respawnFlag == -1)
|
// (respawnFlag == 1) || (respawnFlag == -1)
|
||||||
|
|
@ -1943,6 +1951,22 @@ typedef enum {
|
||||||
// - `*EnRd`
|
// - `*EnRd`
|
||||||
VB_REDEAD_GIBDO_FREEZE_LINK,
|
VB_REDEAD_GIBDO_FREEZE_LINK,
|
||||||
|
|
||||||
|
// #### `result`
|
||||||
|
// ```c
|
||||||
|
// this->alpha <= 0
|
||||||
|
// ```
|
||||||
|
// #### `args`
|
||||||
|
// - `*BgIceShelter`
|
||||||
|
VB_RED_ICE_DROP_ITEM,
|
||||||
|
|
||||||
|
// #### `result`
|
||||||
|
// ```c
|
||||||
|
// !((this->dyna.actor.params >> 6) & 1) && (Flags_GetSwitch(play, this->dyna.actor.params & 0x3F))
|
||||||
|
// ```
|
||||||
|
// #### `args`
|
||||||
|
// - `*BgIceShelter`
|
||||||
|
VB_RED_ICE_MELTED_FLAG,
|
||||||
|
|
||||||
// #### `result`
|
// #### `result`
|
||||||
// #### `result`
|
// #### `result`
|
||||||
// ```c
|
// ```c
|
||||||
|
|
@ -2263,6 +2287,22 @@ typedef enum {
|
||||||
// - None
|
// - None
|
||||||
VB_SPEAK,
|
VB_SPEAK,
|
||||||
|
|
||||||
|
// #### `result`
|
||||||
|
// ```c
|
||||||
|
// this->dyna.actor.params == TURARA_STALACTITE_REGROW
|
||||||
|
// ```
|
||||||
|
// #### `args`
|
||||||
|
// - `*BgIceTurara`
|
||||||
|
VB_STALACTITE_DROP_ITEM,
|
||||||
|
|
||||||
|
// #### `result`
|
||||||
|
// ```c
|
||||||
|
// this->collider.base.acFlags & AC_HIT
|
||||||
|
// ```
|
||||||
|
// #### `args`
|
||||||
|
// - `*BgIceTurara`
|
||||||
|
VB_STALAGMITE_DROP_ITEM,
|
||||||
|
|
||||||
// #### `result`
|
// #### `result`
|
||||||
// ```c
|
// ```c
|
||||||
// varies, never set should to true
|
// varies, never set should to true
|
||||||
|
|
|
||||||
|
|
@ -1865,6 +1865,14 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
||||||
/*french*/ "Selon moi, #appeler la pluie près de l’entrée d’une grotte gelée# révèle #[[1]]#.", {QM_RED, QM_GREEN}));
|
/*french*/ "Selon moi, #appeler la pluie près de l’entrée d’une grotte gelée# révèle #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
// /*spanish*/ Según dicen, una #Skulltula tras un ardiente hielo# otorga #[[1]]#.
|
// /*spanish*/ Según dicen, una #Skulltula tras un ardiente hielo# otorga #[[1]]#.
|
||||||
|
|
||||||
|
hintTextTable[RHT_ICE_CAVERN_ICICLE] = HintText(CustomMessage("They say that #breaking an icicle in a frozen cavern# reveals #[[1]]#.",
|
||||||
|
/*german*/ "Man erzählt sich, daß das #Zerschlagen eines Eiszapfens in einer gefrorenen Kaverne# #[[1]]# enthülle.",
|
||||||
|
/*french*/ "Selon moi, #briser un stalactite de glace dans la Caverne Polaire# révèle #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
|
hintTextTable[RHT_ICE_CAVERN_RED_ICE] = HintText(CustomMessage("They say that #melting red ice in a frozen cavern# gives #[[1]]#.",
|
||||||
|
/*german*/ "Man erzählt sich, daß das #Schmelzen von rotem Eis in einer gefrorenen Kaverne# #[[1]]# gäbe.",
|
||||||
|
/*french*/ "Selon moi, #faire fondre la glace rouge dans la Caverne Polaire# donne #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
/*--------------------------
|
/*--------------------------
|
||||||
| Gerudo Training Ground |
|
| Gerudo Training Ground |
|
||||||
---------------------------*/
|
---------------------------*/
|
||||||
|
|
@ -2059,6 +2067,14 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
||||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in der Gerudo-Trainingsarena# #[[1]]# verstecke.",
|
/*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}));
|
/*french*/ "Selon moi, un #objet merveilleux dans le Gymnase Gerudo# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
|
hintTextTable[RHT_GERUDO_TRAINING_GROUND_ICICLE] = HintText(CustomMessage("They say that #breaking an icicle in in Gerudo Training Ground# reveals #[[1]]#.",
|
||||||
|
/*german*/ "Man erzählt sich, daß das #Zerschlagen eines Eiszapfens in der Gerudo-Trainingsarena# #[[1]]# enthülle.",
|
||||||
|
/*french*/ "Selon moi, #briser un stalactite de glace dans le Gymnase Gerudo# révèle #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
|
hintTextTable[RHT_GERUDO_TRAINING_GROUND_RED_ICE] = HintText(CustomMessage("They say that #melting red ice in Gerudo Training Ground# gives #[[1]]#.",
|
||||||
|
/*german*/ "Man erzählt sich, daß das #Schmelzen von rotem Eis in der Gerudo-Trainingsarena# #[[1]]# gäbe.",
|
||||||
|
/*french*/ "Selon moi, #faire fondre la glace rouge dans le Gymnase Gerudo# donne #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
/*--------------------------
|
/*--------------------------
|
||||||
| GANONS CASTLE |
|
| GANONS CASTLE |
|
||||||
---------------------------*/
|
---------------------------*/
|
||||||
|
|
@ -2272,6 +2288,13 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
|
||||||
/*german*/ "Man erzählt sich, daß sich ein #Wunder-Gegenstand in Ganons Schloß# #[[1]]# verstecke.",
|
/*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}));
|
/*french*/ "Selon moi, un #objet merveilleux dans le Château de Ganon# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
|
hintTextTable[RHT_GANONS_CASTLE_ICICLE] = HintText(CustomMessage("They say that #breaking an icicle in Ganon's Castle# reveals #[[1]]#.",
|
||||||
|
/*german*/ "Man erzählt sich, daß das #Zerschlagen eines Eiszapfens Ganons Schloß# #[[1]]# enthülle.",
|
||||||
|
/*french*/ "Selon moi, #briser un stalactite de glace dans le Château de Ganon# révèle #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
|
hintTextTable[RHT_GANONS_CASTLE_RED_ICE] = HintText(CustomMessage("They say that #melting red ice in a Ganon's Castle# gives #[[1]]#.",
|
||||||
|
/*german*/ "Man erzählt sich, daß das #Schmelzen von rotem Eis in Ganons Schloß# #[[1]]# gäbe.",
|
||||||
|
/*french*/ "Selon moi, #faire fondre la glace rouge dans le Château de Ganon# donne #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
// clang-format on
|
// clang-format on
|
||||||
}
|
}
|
||||||
} // namespace Rando
|
} // namespace Rando
|
||||||
|
|
|
||||||
|
|
@ -2323,6 +2323,11 @@ void StaticData::HintTable_Init_Exclude_Overworld() {
|
||||||
hintTextTable[RHT_BEGGAR_KAKARIKO_VILLAGE] = HintText(CustomMessage("They say that #trading with a beggar in Kakariko Village# gives #[[1]]#.",
|
hintTextTable[RHT_BEGGAR_KAKARIKO_VILLAGE] = HintText(CustomMessage("They say that #trading with a beggar in Kakariko Village# gives #[[1]]#.",
|
||||||
/*german*/ "Man erzählt sich, daß das #Handeln mit einem Bettler in Kakariko# #[[1]]# gäbe.",
|
/*german*/ "Man erzählt sich, daß das #Handeln mit einem Bettler in Kakariko# #[[1]]# gäbe.",
|
||||||
/*french*/ "Selon moi, #échanger avec un mendiant dans le Village de Cocorico# donne #[[1]]#.", {QM_RED, QM_GREEN}));
|
/*french*/ "Selon moi, #échanger avec un mendiant dans le Village de Cocorico# donne #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
|
hintTextTable[RHT_RED_ICE_ZORAS_DOMAIN] = HintText(CustomMessage("They say that #melting red ice in Zora's Domain# gives #[[1]]#.",
|
||||||
|
/*german*/ "Man erzählt sich, daß das #Schmelzen von rotem Eis in Zoras Reich# #[[1]]# gäbe.",
|
||||||
|
/*french*/ "Selon moi, #faire fondre la glace rouge dans le Domaine Zora# donne #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
// clang-format on
|
// clang-format on
|
||||||
}
|
}
|
||||||
} // namespace Rando
|
} // namespace Rando
|
||||||
|
|
|
||||||
|
|
@ -217,6 +217,8 @@ void Context::GenerateLocationPool() {
|
||||||
(location.GetRCType() == RCTYPE_NLTREE &&
|
(location.GetRCType() == RCTYPE_NLTREE &&
|
||||||
(!mOptions[RSK_SHUFFLE_TREES] || mOptions[RSK_LOGIC_RULES].IsNot(RO_LOGIC_NO_LOGIC))) ||
|
(!mOptions[RSK_SHUFFLE_TREES] || mOptions[RSK_LOGIC_RULES].IsNot(RO_LOGIC_NO_LOGIC))) ||
|
||||||
(location.GetRCType() == RCTYPE_BUSH && !mOptions[RSK_SHUFFLE_BUSHES]) ||
|
(location.GetRCType() == RCTYPE_BUSH && !mOptions[RSK_SHUFFLE_BUSHES]) ||
|
||||||
|
(location.GetRCType() == RCTYPE_ICICLE && !mOptions[RSK_SHUFFLE_ICICLES]) ||
|
||||||
|
(location.GetRCType() == RCTYPE_RED_ICE && !mOptions[RSK_SHUFFLE_RED_ICE]) ||
|
||||||
(location.GetRCType() == RCTYPE_SIGN && mOptions[RSK_SHUFFLE_SIGNS].Is(RO_SHUFFLE_SIGNS_OFF)) ||
|
(location.GetRCType() == RCTYPE_SIGN && mOptions[RSK_SHUFFLE_SIGNS].Is(RO_SHUFFLE_SIGNS_OFF)) ||
|
||||||
(location.GetRCType() == RCTYPE_WONDER_ITEM &&
|
(location.GetRCType() == RCTYPE_WONDER_ITEM &&
|
||||||
mOptions[RSK_SHUFFLE_WONDER_ITEMS].Is(RO_SHUFFLE_WONDER_ITEMS_OFF)) ||
|
mOptions[RSK_SHUFFLE_WONDER_ITEMS].Is(RO_SHUFFLE_WONDER_ITEMS_OFF)) ||
|
||||||
|
|
|
||||||
308
soh/soh/Enhancements/randomizer/ShuffleIcicles.cpp
Normal file
308
soh/soh/Enhancements/randomizer/ShuffleIcicles.cpp
Normal file
|
|
@ -0,0 +1,308 @@
|
||||||
|
#include "soh/OTRGlobals.h"
|
||||||
|
#include "soh/ObjectExtension/ObjectExtension.h"
|
||||||
|
#include "item_category_adj.h"
|
||||||
|
#include "particle_cmc.h"
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "functions.h"
|
||||||
|
#include "overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.h"
|
||||||
|
#include "objects/object_ice_objects/object_ice_objects.h"
|
||||||
|
#include "objects/object_tk/object_tk.h"
|
||||||
|
extern PlayState* gPlayState;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct StalactiteDropped {};
|
||||||
|
static ObjectExtension::Register<StalactiteDropped> StalactiteDroppedRegister;
|
||||||
|
|
||||||
|
extern void EnItem00_DrawRandomizedItem(EnItem00* enItem00, PlayState* play);
|
||||||
|
|
||||||
|
extern "C" void DrawItemHalo(Actor* icicleActor) {
|
||||||
|
// If the regrowing stalactite has already dropped, return
|
||||||
|
if (ObjectExtension::GetInstance().Has<StalactiteDropped>(icicleActor)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetItemCategory getItemCategory;
|
||||||
|
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));
|
||||||
|
const auto icicleIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(icicleActor);
|
||||||
|
|
||||||
|
GetItemEntry icicleItem =
|
||||||
|
Rando::Context::GetInstance()->GetFinalGIEntry(icicleIdentity->randomizerCheck, true, GI_NONE);
|
||||||
|
getItemCategory = Randomizer_AdjustItemCategory(icicleItem);
|
||||||
|
|
||||||
|
if (isNotCMC) {
|
||||||
|
getItemCategory = ITEM_CATEGORY_MAJOR;
|
||||||
|
}
|
||||||
|
Color_RGBA8 primColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_PRIMARY);
|
||||||
|
|
||||||
|
// Align halo to center of icicles
|
||||||
|
// Ice Cavern HP room is slightly different for stalactites
|
||||||
|
f32 yOffset = (icicleActor->params == 0) ? 135.0f : 45.0f;
|
||||||
|
f32 xOffset = -23.0f;
|
||||||
|
f32 zOffset = (icicleActor->params == 0) ? 5.0f
|
||||||
|
: (gPlayState->sceneNum == SCENE_ICE_CAVERN && gPlayState->roomCtx.curRoom.num == 11) ? 4.0f
|
||||||
|
: 2.0f;
|
||||||
|
|
||||||
|
// Rotate and draw halo with CMC colors
|
||||||
|
Matrix_Translate(icicleActor->world.pos.x + xOffset, icicleActor->world.pos.y + yOffset,
|
||||||
|
icicleActor->world.pos.z + zOffset, MTXMODE_NEW);
|
||||||
|
Matrix_RotateZ(-M_PI / 2, MTXMODE_APPLY);
|
||||||
|
Matrix_Scale(0.01f, 0.01f, 0.01f, MTXMODE_APPLY);
|
||||||
|
OPEN_DISPS(gPlayState->state.gfxCtx);
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(gPlayState->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gDPSetGrayscaleColor(POLY_OPA_DISP++, primColor.r, primColor.g, primColor.b, 175);
|
||||||
|
gSPGrayscale(POLY_OPA_DISP++, true);
|
||||||
|
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gDampeHaloDL);
|
||||||
|
gSPGrayscale(POLY_OPA_DISP++, false);
|
||||||
|
CLOSE_DISPS(gPlayState->state.gfxCtx);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t BgIceTurara_RandomizerHoldsItem(Actor* actor) {
|
||||||
|
const auto icicleIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(actor);
|
||||||
|
if (icicleIdentity == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
RandomizerCheck rc = icicleIdentity->randomizerCheck;
|
||||||
|
|
||||||
|
// Don't pull randomized item if icicle isn't randomized or is already checked
|
||||||
|
if (!IS_RANDO || Flags_GetRandomizerInf(icicleIdentity->randomizerInf) ||
|
||||||
|
icicleIdentity->randomizerCheck == RC_UNKNOWN_CHECK) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BgIceTurara_RandomizerSpawnCollectible(void* actor) {
|
||||||
|
BgIceTurara* icicleActor = (BgIceTurara*)actor;
|
||||||
|
const auto icicleIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(&icicleActor->dyna.actor);
|
||||||
|
|
||||||
|
EnItem00* item00 =
|
||||||
|
(EnItem00*)Item_DropCollectible2(gPlayState, &icicleActor->dyna.actor.world.pos, ITEM00_SOH_DUMMY);
|
||||||
|
item00->randoInf = icicleIdentity->randomizerInf;
|
||||||
|
item00->itemEntry = Rando::Context::GetInstance()->GetFinalGIEntry(icicleIdentity->randomizerCheck, true, GI_NONE);
|
||||||
|
item00->actor.draw = (ActorFunc)EnItem00_DrawRandomizedItem;
|
||||||
|
item00->actor.velocity.y = 8.0f;
|
||||||
|
item00->actor.speedXZ = 2.0f;
|
||||||
|
item00->actor.world.rot.y = static_cast<int16_t>(Rand_CenteredFloat(65536.0f));
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegisterShuffleIcicles() {
|
||||||
|
bool shouldRegister = IS_RANDO && Rando::Context::GetInstance()->GetOption(RSK_SHUFFLE_ICICLES).Get();
|
||||||
|
|
||||||
|
COND_ID_HOOK(OnActorInit, ACTOR_BG_ICE_TURARA, shouldRegister, [](void* actorRef) {
|
||||||
|
Actor* actor = static_cast<Actor*>(actorRef);
|
||||||
|
BgIceTurara* icicleActor = static_cast<BgIceTurara*>(actorRef);
|
||||||
|
|
||||||
|
auto icicleIdentity = OTRGlobals::Instance->gRandomizer->IdentifyIcicle(
|
||||||
|
gPlayState->sceneNum, (s16)actor->world.pos.x, (s16)actor->world.pos.z);
|
||||||
|
ObjectExtension::GetInstance().Set<CheckIdentity>(actor, std::move(icicleIdentity));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Draw halo around icicles
|
||||||
|
COND_VB_SHOULD(VB_ICICLE_SETUP_DRAW, shouldRegister, {
|
||||||
|
BgIceTurara* icicleActor = va_arg(args, BgIceTurara*);
|
||||||
|
if (BgIceTurara_RandomizerHoldsItem(&icicleActor->dyna.actor) &&
|
||||||
|
!ObjectExtension::GetInstance().Has<StalactiteDropped>(&icicleActor->dyna.actor)) {
|
||||||
|
DrawItemHalo(&icicleActor->dyna.actor);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Drop item for stalagmites
|
||||||
|
COND_VB_SHOULD(VB_STALAGMITE_DROP_ITEM, shouldRegister, {
|
||||||
|
BgIceTurara* icicleActor = va_arg(args, BgIceTurara*);
|
||||||
|
|
||||||
|
if (*should) {
|
||||||
|
if (BgIceTurara_RandomizerHoldsItem(&icicleActor->dyna.actor)) {
|
||||||
|
BgIceTurara_RandomizerSpawnCollectible(&icicleActor->dyna.actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Drop item for stalactites
|
||||||
|
COND_VB_SHOULD(VB_STALACTITE_DROP_ITEM, shouldRegister, {
|
||||||
|
BgIceTurara* icicleActor = va_arg(args, BgIceTurara*);
|
||||||
|
|
||||||
|
if (BgIceTurara_RandomizerHoldsItem(&icicleActor->dyna.actor)) {
|
||||||
|
// Set and check if regrowing stalactite has already dropped
|
||||||
|
if (*should) {
|
||||||
|
auto& ext = ObjectExtension::GetInstance();
|
||||||
|
if (!ext.Has<StalactiteDropped>(&icicleActor->dyna.actor)) {
|
||||||
|
ext.Set(&icicleActor->dyna.actor, StalactiteDropped{});
|
||||||
|
BgIceTurara_RandomizerSpawnCollectible(&icicleActor->dyna.actor);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
BgIceTurara_RandomizerSpawnCollectible(&icicleActor->dyna.actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Remove the drop indicator when the actor is destroyed
|
||||||
|
COND_ID_HOOK(OnActorDestroy, ACTOR_BG_ICE_TURARA, shouldRegister,
|
||||||
|
[](void* actor) { ObjectExtension::GetInstance().Remove<StalactiteDropped>(actor); });
|
||||||
|
}
|
||||||
|
|
||||||
|
void Rando::StaticData::RegisterIcicleLocations() {
|
||||||
|
static bool registered = false;
|
||||||
|
if (registered)
|
||||||
|
return;
|
||||||
|
registered = true;
|
||||||
|
// clang-format off
|
||||||
|
// Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Spoiler Collection Check
|
||||||
|
locationTable[RC_ICE_CAVERN_ENTRANCE_LEFT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_ENTRANCE_LEFT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(295, 2386), "Entrance Left Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_LEFT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_ENTRANCE_MIDDLE_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_ENTRANCE_MIDDLE_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(313, 2446), "Entrance Middle Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_MIDDLE_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_ENTRANCE_RIGHT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_ENTRANCE_RIGHT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(400, 2443), "Entrance Right Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_RIGHT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_ENTRANCE_STALACTITE_1] = Location::Icicle(RC_ICE_CAVERN_ENTRANCE_STALACTITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(499, 2229), "Entrance Stalactite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_STALACTITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_ENTRANCE_STALACTITE_2] = Location::Icicle(RC_ICE_CAVERN_ENTRANCE_STALACTITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(536, 2071), "Entrance Stalactite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_STALACTITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_LOBBY_STALACTITE] = Location::Icicle(RC_ICE_CAVERN_LOBBY_STALACTITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-18, 1760), "Lobby Stalactite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_LOBBY_STALACTITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_LOBBY_LEFT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_LOBBY_LEFT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-62, 1642), "Lobby Left Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_LOBBY_LEFT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_LOBBY_MIDDLE_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_LOBBY_MIDDLE_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-19, 1676), "Lobby Middle Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_LOBBY_MIDDLE_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_LOBBY_RIGHT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_LOBBY_RIGHT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(36, 1643), "Lobby Right Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_LOBBY_RIGHT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_AFTER_LOBBY_STALACTITE] = Location::Icicle(RC_ICE_CAVERN_AFTER_LOBBY_STALACTITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-237, 472), "After Lobby Stalactite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_AFTER_LOBBY_STALACTITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_AFTER_LOBBY_LEFT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_AFTER_LOBBY_LEFT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-308, 322), "After Lobby Left Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_AFTER_LOBBY_LEFT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_AFTER_LOBBY_CENTER_LEFT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_AFTER_LOBBY_CENTER_LEFT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-272, 348), "After Lobby Center Left Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_AFTER_LOBBY_CENTER_LEFT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_AFTER_LOBBY_CENTER_RIGHT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_AFTER_LOBBY_CENTER_RIGHT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-226, 371), "After Lobby Center Right Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_AFTER_LOBBY_CENTER_RIGHT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_AFTER_LOBBY_RIGHT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_AFTER_LOBBY_RIGHT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-187, 395), "After Lobby Right Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_AFTER_LOBBY_RIGHT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_SPINNING_BLADE_LEFT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_SPINNING_BLADE_LEFT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(44, -139), "Spinning Blade Left Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_LEFT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_SPINNING_BLADE_MIDDLE_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_SPINNING_BLADE_MIDDLE_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(22, -170), "Spinning Blade Middle Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_MIDDLE_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_SPINNING_BLADE_RIGHT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_SPINNING_BLADE_RIGHT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-9, -175), "Spinning Blade Right Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_RIGHT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_1] = Location::Icicle(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1264, -890), "Map Hallway Stalactite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_2] = Location::Icicle(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1141, -946), "Map Hallway Stalactite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_3] = Location::Icicle(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1229, -1134), "Map Hallway Stalactite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_4] = Location::Icicle(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_4, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1063, -1300), "Map Hallway Stalactite 4", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_5] = Location::Icicle(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_5, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1088, -1505), "Map Hallway Stalactite 5", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_5));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_HALLWAY_LEFT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_MAP_HALLWAY_LEFT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(951, -1217), "Map Hallway Left Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_HALLWAY_LEFT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_HALLWAY_MIDDLE_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_MAP_HALLWAY_MIDDLE_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1029, -1217), "Map Hallway Middle Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_HALLWAY_MIDDLE_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_HALLWAY_RIGHT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_MAP_HALLWAY_RIGHT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1187, -1217), "Map Hallway Right Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_HALLWAY_RIGHT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_1] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1026, 296), "Heart Piece Room Center Stalactite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_2] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1092, 274), "Heart Piece Room Center Stalactite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_3] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1058, 369), "Heart Piece Room Center Stalactite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_4] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_4, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1148, 347), "Heart Piece Room Center Stalactite 4", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_5] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_5, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1252, 356), "Heart Piece Room Center Stalactite 5", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_5));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_1] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1187, 66), "Heart Piece Room Left Stalactite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_2] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1347, 110), "Heart Piece Room Left Stalactite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1361, 312), "Heart Piece Room Center Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1336, 343), "Heart Piece Room Center Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_3] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1348, 382), "Heart Piece Room Center Stalagmite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_4] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_4, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1321, 404), "Heart Piece Room Center Stalagmite 4", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_5] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_5, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1341, 438), "Heart Piece Room Center Stalagmite 5", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_5));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_6] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_6, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1317, 470), "Heart Piece Room Center Stalagmite 6", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_6));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1223, 195), "Heart Piece Room Left Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1257, 202), "Heart Piece Room Left Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_3] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1297, 200), "Heart Piece Room Left Stalagmite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1159, 552), "Heart Piece Room Right Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1191, 565), "Heart Piece Room Right Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_3] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1227, 549), "Heart Piece Room Right Stalagmite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_4] = Location::Icicle(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_4, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1267, 559), "Heart Piece Room Right Stalagmite 4", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_PUSH_BLOCK_HALL_LEFT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_PUSH_BLOCK_HALL_LEFT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-518, -601), "Push Block Hall Left Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_LEFT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_LEFT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_LEFT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-487, -600), "Push Block Hall Center Left Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_LEFT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-451, -604), "Push Block Hall Center Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_RIGHT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_RIGHT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-414, -610), "Push Block Hall Center Right Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_RIGHT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_PUSH_BLOCK_HALL_RIGHT_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_PUSH_BLOCK_HALL_RIGHT_STALAGMITE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-373, -605), "Push Block Hall Right Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_RIGHT_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_1] = Location::Icicle(RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-385, -686), "Push Block Hall Stalactite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_2] = Location::Icicle(RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-314, -768), "Push Block Hall Stalactite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_3] = Location::Icicle(RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-359, -862), "Push Block Hall Stalactite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALACTITE_1] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALACTITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1231, 170), "Near End Stalactite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALACTITE_2] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALACTITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1328, 215), "Near End Stalactite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALACTITE_3] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALACTITE_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1412, 246), "Near End Stalactite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALACTITE_4] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALACTITE_4, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1571, 422), "Near End Stalactite 4", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALAGMITE_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1288, 184), "Near End Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALAGMITE_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1367, 206), "Near End Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALAGMITE_3] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALAGMITE_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1349, 270), "Near End Stalagmite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALAGMITE_4] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALAGMITE_4, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1514, 307), "Near End Stalagmite 4", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALAGMITE_5] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALAGMITE_5, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1507, 443), "Near End Stalagmite 5", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_5));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALAGMITE_6] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALAGMITE_6, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1624, 431), "Near End Stalagmite 6", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_6));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALAGMITE_7] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALAGMITE_7, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1587, 497), "Near End Stalagmite 7", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_7));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_STALAGMITE_8] = Location::Icicle(RC_ICE_CAVERN_NEAR_END_STALAGMITE_8, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1595, 600), "Near End Stalagmite 8", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_8));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_1] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1687, -859), "Water Trial Stalagmite 1", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_2] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1706, -884), "Water Trial Stalagmite 2", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_3] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_3, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1735, -898), "Water Trial Stalagmite 3", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_4] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_4, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1761, -887), "Water Trial Stalagmite 4", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_5] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_5, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1787, -871), "Water Trial Stalagmite 5", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_5));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_6] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_6, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1783, -833), "Water Trial Stalagmite 6", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_6));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_7] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_7, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1770, -798), "Water Trial Stalagmite 7", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_7));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_8] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_8, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1737, -787), "Water Trial Stalagmite 8", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_8));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_9] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_9, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1698, -797), "Water Trial Stalagmite 9", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_9));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_10] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_10, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1683, -828), "Water Trial Stalagmite 10", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_10));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_1] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1966, -1089), "Water Trial Left Stalagmite 1", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_2] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2040, -1015), "Water Trial Left Stalagmite 2", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_1] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1980, -590), "Water Trial Right Stalagmite 1", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_2] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2058, -655), "Water Trial Right Stalagmite 2", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_1] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1549, -836), "Water Trial Stalactite 1", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_2] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1611, -843), "Water Trial Stalactite 2", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_3] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_3, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1657, -882), "Water Trial Stalactite 3", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_4] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_4, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1651, -805), "Water Trial Stalactite 4", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_5] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_5, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1761, -949), "Water Trial Stalactite 5", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_5));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_6] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_6, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1714, -757), "Water Trial Stalactite 6", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_6));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_7] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_7, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1811, -905), "Water Trial Stalactite 7", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_7));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_8] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_8, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1769, -761), "Water Trial Stalactite 8", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_8));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_9] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_9, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1821, -817), "Water Trial Stalactite 9", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_9));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_10] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_10, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1996, -1033), "Water Trial Stalactite 10", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_10));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_11] = Location::Icicle(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_11, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1995, -648), "Water Trial Stalactite 11", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_11));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(287, 2346), "Entrance Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(324, 2280), "Entrance Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_1] = Location::Icicle(RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(268, 980), "Lobby Stalactite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_LOBBY_STALACTITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_2] = Location::Icicle(RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(204, 910), "Lobby Stalactite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_LOBBY_STALACTITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-351, 423), "After Lobby Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-288, 402), "After Lobby Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_3] = Location::Icicle(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_3, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-258, 461), "After Lobby Stalagmite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_4] = Location::Icicle(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_4, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-212, 398), "After Lobby Stalagmite 4", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_5] = Location::Icicle(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_5, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-19, 193), "After Lobby Stalagmite 5", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_5));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(607, -170), "Hub Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(598, -213), "Hub Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_STALAGMITE_3] = Location::Icicle(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_3, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(597, -256), "Hub Stalagmite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_STALAGMITE_4] = Location::Icicle(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_4, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(614, -292), "Hub Stalagmite 4", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_STALAGMITE_5] = Location::Icicle(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_5, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(640, -312), "Hub Stalagmite 5", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_5));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1170, 97), "Map Room Left Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1149, 64), "Map Room Left Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1334, 473), "Map Room Center Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1327, 442), "Map Room Center Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_3] = Location::Icicle(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_3, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1321, 410), "Map Room Center Stalagmite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_4] = Location::Icicle(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_4, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1325, 369), "Map Room Center Stalagmite 4", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_5] = Location::Icicle(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_5, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1344, 332), "Map Room Center Stalagmite 5", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_5));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_6] = Location::Icicle(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_6, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1375, 291), "Map Room Center Stalagmite 6", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_6));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_7] = Location::Icicle(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_7, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1345, 260), "Map Room Center Stalagmite 7", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_7));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(742, -2464), "Compass Left Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(783, -2453), "Compass Left Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_1] = Location::Icicle(RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(903, -2353), "Compass Right Stalagmite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_2] = Location::Icicle(RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(929, -2303), "Compass Right Stalagmite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_BEFORE_SCARECROW_STALAGMITE] = Location::Icicle(RC_ICE_CAVERN_MQ_BEFORE_SCARECROW_STALAGMITE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-261, -840), "Before Scarecrow Stalagmite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_BEFORE_SCARECROW_STALAGMITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_SCARECROW_ROOM_STALACTITE] = Location::Icicle(RC_ICE_CAVERN_MQ_SCARECROW_ROOM_STALACTITE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-763, -896), "Scarecrow Room Stalactite", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_SCARECROW_ROOM_STALACTITE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_1] = Location::Icicle(RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1524, 326), "West Corridor Stalactite 1", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_2] = Location::Icicle(RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1583, 609), "West Corridor Stalactite 2", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_3] = Location::Icicle(RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_3, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1487, 569), "West Corridor Stalactite 3", RHT_ICE_CAVERN_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_3));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_1] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1265, -2067), "Boulder Room Stalagmite 1", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_1));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_2] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1235, -2054), "Boulder Room Stalagmite 2", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_2));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_3] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_3, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1205, -2080), "Boulder Room Stalagmite 3", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_3));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_4] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_4, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1170, -2080), "Boulder Room Stalagmite 4", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_4));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_5] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_5, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1183, -2132), "Boulder Room Stalagmite 5", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_5));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_1] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1261, -1001), "Boulder Room Right Stalactite 1", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_1));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_2] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1247, -1096), "Boulder Room Right Stalactite 2", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_2));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_3] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_3, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1182, -1181), "Boulder Room Right Stalactite 3", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_3));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_4] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_4, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1255, -1273), "Boulder Room Right Stalactite 4", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_4));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_LEFT_STALACTITE] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_LEFT_STALACTITE, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1884, -1024), "Boulder Room Left Stalactite", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_LEFT_STALACTITE));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_1] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1263, -2028), "Boulder Room Top Right Stalactite 1", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_1));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_2] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1216, -2029), "Boulder Room Top Right Stalactite 2", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_2));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_3] = Location::Icicle(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_3, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1168, -2028), "Boulder Room Top Right Stalactite 3", RHT_GERUDO_TRAINING_GROUND_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_1] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1791, -1141), "Water Trial Left Stalactite 1", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_2] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1890, -1068), "Water Trial Left Stalactite 2", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_3] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_3, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2002, -1068), "Water Trial Left Stalactite 3", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_1] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1864, -568), "Water Trial Right Stalactite 1", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_2] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1937, -658), "Water Trial Right Stalactite 2", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_3] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_3, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2054, -667), "Water Trial Right Stalactite 3", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_1] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1868, -1175), "Water Trial Left Stalagmite 1", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_2] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1908, -1151), "Water Trial Left Stalagmite 2", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_3] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_3, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1960, -1123), "Water Trial Left Stalagmite 3", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_4] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_4, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2008, -1115), "Water Trial Left Stalagmite 4", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_1] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1916, -511), "Water Trial Right Stalagmite 1", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_2] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1936, -551), "Water Trial Right Stalagmite 2", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_3] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_3, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1984, -567), "Water Trial Right Stalagmite 3", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_4] = Location::Icicle(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_4, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2044, -591), "Water Trial Right Stalagmite 4", RHT_GANONS_CASTLE_ICICLE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_4));
|
||||||
|
// clang-format on
|
||||||
|
}
|
||||||
|
|
||||||
|
static RegisterShipInitFunc initFunc_ShuffleIcicles(RegisterShuffleIcicles, { "IS_RANDO" });
|
||||||
|
static RegisterShipInitFunc registerIcicleLocations(Rando::StaticData::RegisterIcicleLocations);
|
||||||
206
soh/soh/Enhancements/randomizer/ShuffleRedIce.cpp
Normal file
206
soh/soh/Enhancements/randomizer/ShuffleRedIce.cpp
Normal file
|
|
@ -0,0 +1,206 @@
|
||||||
|
#include "soh/OTRGlobals.h"
|
||||||
|
#include "soh/ObjectExtension/ObjectExtension.h"
|
||||||
|
#include "item_category_adj.h"
|
||||||
|
#include "particle_cmc.h"
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "functions.h"
|
||||||
|
#include "overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.h"
|
||||||
|
#include "objects/object_ice_objects/object_ice_objects.h"
|
||||||
|
extern PlayState* gPlayState;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void EnItem00_DrawRandomizedItem(EnItem00* enItem00, PlayState* play);
|
||||||
|
|
||||||
|
uint8_t BgIceShelter_RandomizerHoldsItem(Actor* actor) {
|
||||||
|
const auto redIceIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(actor);
|
||||||
|
if (redIceIdentity == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
RandomizerCheck rc = redIceIdentity->randomizerCheck;
|
||||||
|
|
||||||
|
// Don't pull randomized item if icicle isn't randomized or is already checked
|
||||||
|
if (!IS_RANDO || Flags_GetRandomizerInf(redIceIdentity->randomizerInf) ||
|
||||||
|
redIceIdentity->randomizerCheck == RC_UNKNOWN_CHECK) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void BgIceShelter_RandomizerDraw(Actor* actor, Color_RGBA8* primColor, Color_RGBA8* secColor,
|
||||||
|
Color_RGBA8* envColor) {
|
||||||
|
Vec3f pos;
|
||||||
|
s32 type = (actor->params >> 8) & 7;
|
||||||
|
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;
|
||||||
|
|
||||||
|
// align for King Zora's much bigger red ice
|
||||||
|
f32 xzScale = (type == RED_ICE_KING_ZORA) ? 30.0f : 15.0f;
|
||||||
|
f32 yOffset = (type == RED_ICE_KING_ZORA) ? 200.0f : 0.0f;
|
||||||
|
f32 zOffset = (type == RED_ICE_KING_ZORA) ? 50.0f : 0.0f;
|
||||||
|
|
||||||
|
pos.x = Rand_CenteredFloat(xzScale) + actor->world.pos.x;
|
||||||
|
pos.y = (Rand_ZeroOne() * 15.0f) + actor->world.pos.y + yOffset;
|
||||||
|
pos.z = Rand_CenteredFloat(xzScale) + actor->world.pos.z + zOffset;
|
||||||
|
EffectSsKiraKira_SpawnFocused(gPlayState, &pos, &velocity, &accel, secColor, envColor, 2000, 100);
|
||||||
|
EffectSsKiraKira_SpawnFocused(gPlayState, &pos, &velocity, &accel, primColor, envColor, 2000, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BgIceShelter_RandomizerDrawSetup(void* actor) {
|
||||||
|
GetItemCategory getItemCategory;
|
||||||
|
Actor* redIceActor = (Actor*)actor;
|
||||||
|
|
||||||
|
// If not a randomized item or too far, don't draw
|
||||||
|
if (!BgIceShelter_RandomizerHoldsItem(redIceActor) || redIceActor->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 redIceIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(redIceActor);
|
||||||
|
if (redIceIdentity == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetItemEntry redIceItem =
|
||||||
|
Rando::Context::GetInstance()->GetFinalGIEntry(redIceIdentity->randomizerCheck, true, GI_NONE);
|
||||||
|
getItemCategory = Randomizer_AdjustItemCategory(redIceItem);
|
||||||
|
|
||||||
|
if (isNotCMC) {
|
||||||
|
getItemCategory = ITEM_CATEGORY_MAJOR;
|
||||||
|
}
|
||||||
|
primColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_PRIMARY);
|
||||||
|
secColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_SECONDARY);
|
||||||
|
envColor = Randomizer_GetParticleCMCColor(getItemCategory, COLOR_FLARE);
|
||||||
|
BgIceShelter_RandomizerDraw(redIceActor, &primColor, &secColor, &envColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BgIceShelter_RandomizerSpawnCollectible(Actor* actor) {
|
||||||
|
const auto redIceIdentity = ObjectExtension::GetInstance().Get<CheckIdentity>(actor);
|
||||||
|
Player* player = GET_PLAYER(gPlayState);
|
||||||
|
|
||||||
|
// If King Zora, autocollect to avoid spawning issues
|
||||||
|
if (redIceIdentity->randomizerCheck == RC_ZD_KING_ZORA_RED_ICE) {
|
||||||
|
Flags_SetRandomizerInf(redIceIdentity->randomizerInf);
|
||||||
|
} else {
|
||||||
|
EnItem00* item00 = (EnItem00*)Item_DropCollectible2(gPlayState, &actor->world.pos, ITEM00_SOH_DUMMY);
|
||||||
|
item00->randoInf = redIceIdentity->randomizerInf;
|
||||||
|
item00->itemEntry =
|
||||||
|
Rando::Context::GetInstance()->GetFinalGIEntry(redIceIdentity->randomizerCheck, true, GI_NONE);
|
||||||
|
item00->actor.draw = (ActorFunc)EnItem00_DrawRandomizedItem;
|
||||||
|
item00->actor.velocity.y = 8.0f;
|
||||||
|
// In general, spawn in place, but for checks with objects blocking, spawn out toward player
|
||||||
|
if ((redIceIdentity->randomizerCheck >= RC_ICE_CAVERN_HEART_PIECE_ROOM_FREESTANDING_RED_ICE &&
|
||||||
|
redIceIdentity->randomizerCheck <= RC_ICE_CAVERN_NEAR_END_RIGHT_RED_ICE) ||
|
||||||
|
redIceIdentity->randomizerCheck == RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_LEFT_RED_ICE ||
|
||||||
|
redIceIdentity->randomizerCheck == RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_RIGHT_RED_ICE ||
|
||||||
|
redIceIdentity->randomizerCheck == RC_GANONS_CASTLE_MQ_WATER_TRIAL_SILVER_RUPEE_RED_ICE) {
|
||||||
|
item00->actor.speedXZ = 2.0f;
|
||||||
|
item00->actor.world.rot.y =
|
||||||
|
Math_Vec3f_Yaw(&item00->actor.world.pos, &player->actor.world.pos) + (s16)Rand_CenteredFloat(16384.0f);
|
||||||
|
} else {
|
||||||
|
item00->actor.speedXZ = 0.0f;
|
||||||
|
item00->actor.world.rot.y = static_cast<int16_t>(Rand_CenteredFloat(65536.0f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegisterShuffleRedIce() {
|
||||||
|
bool shouldRegister = IS_RANDO && Rando::Context::GetInstance()->GetOption(RSK_SHUFFLE_RED_ICE).Get();
|
||||||
|
|
||||||
|
COND_VB_SHOULD(VB_RED_ICE_MELTED_FLAG, shouldRegister, {
|
||||||
|
BgIceShelter* redIceActor = va_arg(args, BgIceShelter*);
|
||||||
|
Actor* actor = (Actor*)redIceActor;
|
||||||
|
|
||||||
|
auto redIceIdentity = OTRGlobals::Instance->gRandomizer->IdentifyRedIce(
|
||||||
|
gPlayState->sceneNum, (s16)actor->world.pos.x, (s16)actor->world.pos.z);
|
||||||
|
ObjectExtension::GetInstance().Set<CheckIdentity>(actor, std::move(redIceIdentity));
|
||||||
|
|
||||||
|
if (*should) {
|
||||||
|
if (BgIceShelter_RandomizerHoldsItem(&redIceActor->dyna.actor)) {
|
||||||
|
BgIceShelter_RandomizerSpawnCollectible(actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Draw particle effect to indicate a randomized item
|
||||||
|
COND_ID_HOOK(OnActorUpdate, ACTOR_BG_ICE_SHELTER, shouldRegister, BgIceShelter_RandomizerDrawSetup);
|
||||||
|
|
||||||
|
// Collect item for melting red ice
|
||||||
|
COND_VB_SHOULD(VB_RED_ICE_DROP_ITEM, shouldRegister, {
|
||||||
|
BgIceShelter* redIceActor = va_arg(args, BgIceShelter*);
|
||||||
|
|
||||||
|
if (*should) {
|
||||||
|
if (BgIceShelter_RandomizerHoldsItem(&redIceActor->dyna.actor)) {
|
||||||
|
BgIceShelter_RandomizerSpawnCollectible(&redIceActor->dyna.actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void Rando::StaticData::RegisterRedIceLocations() {
|
||||||
|
static bool registered = false;
|
||||||
|
if (registered)
|
||||||
|
return;
|
||||||
|
registered = true;
|
||||||
|
// clang-format off
|
||||||
|
// Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Spoiler Collection Check
|
||||||
|
locationTable[RC_ZD_KING_ZORA_RED_ICE] = Location::RedIce(RC_ZD_KING_ZORA_RED_ICE, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(628, -1818), "King Zora Red Ice", RHT_RED_ICE_ZORAS_DOMAIN, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_KING_ZORA_RED_ICE));
|
||||||
|
locationTable[RC_ZD_ZORA_SHOP_RED_ICE] = Location::RedIce(RC_ZD_ZORA_SHOP_RED_ICE, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(483, 214), "Zora Shop Red Ice", RHT_RED_ICE_ZORAS_DOMAIN, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_ZORA_SHOP_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_ENTRANCE_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_ENTRANCE_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(411, 2332), "Entrance Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_ENTRANCE_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_LOBBY_LEFT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_LOBBY_LEFT_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-105, 854), "Lobby Left Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_LOBBY_LEFT_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_LOBBY_RIGHT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_LOBBY_RIGHT_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(119, 856), "Lobby Right Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_LOBBY_RIGHT_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_SPINNING_BLADE_EAST_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_SPINNING_BLADE_EAST_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(651, -232), "Spinning Blade East Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_EAST_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_SPINNING_BLADE_WEST_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_SPINNING_BLADE_WEST_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-134, -415), "Spinning Blade West Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_WEST_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_FREESTANDING_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_HEART_PIECE_ROOM_FREESTANDING_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1261, 68), "Heart Piece Room Freestanding Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_FREESTANDING_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_HEART_PIECE_ROOM_CHEST_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_HEART_PIECE_ROOM_CHEST_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1201, 643), "Heart Piece Room Chest Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CHEST_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_ROOM_POT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MAP_ROOM_POT_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(366, -2036), "Map Room Pot Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_ROOM_POT_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MAP_ROOM_CHEST_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MAP_ROOM_CHEST_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(277, -2600), "Map Room Chest Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MAP_ROOM_CHEST_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_RUPEE_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_SILVER_RUPEE_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1126, -1577), "Silver Rupee Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_RUPEE_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_LEFT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_NEAR_END_LEFT_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1422, 586), "Near End Left Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_LEFT_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_MIDDLE_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_NEAR_END_MIDDLE_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1459, 625), "Near End Middle Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_MIDDLE_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_NEAR_END_RIGHT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_NEAR_END_RIGHT_RED_ICE, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1488, 676), "Near End Right Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_RIGHT_RED_ICE));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_DOOR_RED_ICE] = Location::RedIce(RC_GANONS_CASTLE_WATER_TRIAL_DOOR_RED_ICE, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2212, -840), "Water Trial Door Red Ice", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_DOOR_RED_ICE));
|
||||||
|
locationTable[RC_GANONS_CASTLE_WATER_TRIAL_RUSTED_SWITCH_RED_ICE] = Location::RedIce(RC_GANONS_CASTLE_WATER_TRIAL_RUSTED_SWITCH_RED_ICE, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2912, -1420), "Water Trial Rusted Switch Red Ice", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_RUSTED_SWITCH_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_WEST_LEFT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_HUB_WEST_LEFT_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-142, -377), "Hub West Left Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_WEST_LEFT_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_WEST_MIDDLE_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_HUB_WEST_MIDDLE_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-121, -418), "Hub West Middle Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_WEST_MIDDLE_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_WEST_RIGHT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_HUB_WEST_RIGHT_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-134, -462), "Hub West Right Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_WEST_RIGHT_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_LEDGE_LEFT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_HUB_LEDGE_LEFT_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(577, -818), "Hub Ledge Left Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_LEDGE_LEFT_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_LEDGE_MIDDLE_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_HUB_LEDGE_MIDDLE_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(614, -770), "Hub Ledge Middle Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_LEDGE_MIDDLE_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_HUB_LEDGE_RIGHT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_HUB_LEDGE_RIGHT_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(656, -722), "Hub Ledge Right Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_HUB_LEDGE_RIGHT_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_COMPASS_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_COMPASS_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(376, -2048), "Compass Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_MAP_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_MAP_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1201, 648), "Map Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_MAP_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_SCARECROW_LEFT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_SCARECROW_LEFT_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1335, -159), "Scarecrow Left Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_SCARECROW_LEFT_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_SCARECROW_MIDDLE_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_SCARECROW_MIDDLE_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1386, -159), "Scarecrow Middle Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_SCARECROW_MIDDLE_RED_ICE));
|
||||||
|
locationTable[RC_ICE_CAVERN_MQ_SCARECROW_RIGHT_RED_ICE] = Location::RedIce(RC_ICE_CAVERN_MQ_SCARECROW_RIGHT_RED_ICE, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1438, -155), "Scarecrow Right Red Ice", RHT_ICE_CAVERN_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_SCARECROW_RIGHT_RED_ICE));
|
||||||
|
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_RED_ICE] = Location::RedIce(RC_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_RED_ICE, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-864, -2745), "Stalfos Room Red Ice", RHT_GERUDO_TRAINING_GROUND_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_RED_ICE));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_LEFT_RED_ICE] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_LEFT_RED_ICE, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1754, -1152), "Water Trial First Room Left Red Ice", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_LEFT_RED_ICE));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_RIGHT_RED_ICE] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_RIGHT_RED_ICE, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1743, -529), "Water Trial First Room Right Red Ice", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_RIGHT_RED_ICE));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_BACK_LEFT_RED_ICE] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_BACK_LEFT_RED_ICE, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2096, -1011), "Water Trial First Room Back Left Red Ice", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_BACK_LEFT_RED_ICE));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_1] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2209, -889), "Water Trial First Room Door Red Ice 1", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_2] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2198, -845), "Water Trial First Room Door Red Ice 2", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_3] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_3, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2194, -797), "Water Trial First Room Door Red Ice 3", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_4] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_4, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2200, -755), "Water Trial First Room Door Red Ice 4", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_SILVER_RUPEE_RED_ICE] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SILVER_RUPEE_RED_ICE, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3370, -729), "Water Trial Silver Rupee Red Ice", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SILVER_RUPEE_RED_ICE));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_1] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3370, -776), "Water Trial Second Door Red Ice 1", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_2] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3370, -834), "Water Trial Second Door Red Ice 2", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_3] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_3, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3370, -889), "Water Trial Second Door Red Ice 3", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_4] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_4, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3370, -950), "Water Trial Second Door Red Ice 4", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_5] = Location::RedIce(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_5, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2906, -1482), "Water Trial Second Door Red Ice 5", RHT_GANONS_CASTLE_RED_ICE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_5));
|
||||||
|
// clang-format on
|
||||||
|
}
|
||||||
|
|
||||||
|
static RegisterShipInitFunc initFunc_ShuffleRedIce(RegisterShuffleRedIce, { "IS_RANDO" });
|
||||||
|
static RegisterShipInitFunc registerRedIceLocations(Rando::StaticData::RegisterRedIceLocations);
|
||||||
|
|
@ -663,4 +663,20 @@ Rando::Location Rando::Location::Sign(RandomizerCheck rc, RandomizerCheckQuest q
|
||||||
SpoilerCollectionCheck collectionCheck) {
|
SpoilerCollectionCheck collectionCheck) {
|
||||||
return { rc, quest_, RCTYPE_SIGN, area_, actorId, scene_, actorParams_, std::move(shortName_),
|
return { rc, quest_, RCTYPE_SIGN, area_, actorId, scene_, actorParams_, std::move(shortName_),
|
||||||
hintKey, RG_NONE, false, collectionCheck };
|
hintKey, RG_NONE, false, collectionCheck };
|
||||||
|
}
|
||||||
|
|
||||||
|
Rando::Location Rando::Location::Icicle(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||||
|
SceneID scene_, int32_t actorParams_, std::string&& shortName_,
|
||||||
|
RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck) {
|
||||||
|
return { rc, quest_, RCTYPE_ICICLE, area_, ACTOR_BG_ICE_TURARA,
|
||||||
|
scene_, actorParams_, std::move(shortName_), hintKey, RG_NONE,
|
||||||
|
false, collectionCheck };
|
||||||
|
}
|
||||||
|
|
||||||
|
Rando::Location Rando::Location::RedIce(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||||
|
SceneID scene_, int32_t actorParams_, std::string&& shortName_,
|
||||||
|
RandomizerHintTextKey hintKey, SpoilerCollectionCheck collectionCheck) {
|
||||||
|
return { rc, quest_, RCTYPE_RED_ICE, area_, ACTOR_BG_ICE_SHELTER,
|
||||||
|
scene_, actorParams_, std::move(shortName_), hintKey, RG_NONE,
|
||||||
|
false, collectionCheck };
|
||||||
}
|
}
|
||||||
|
|
@ -266,6 +266,14 @@ class Location {
|
||||||
RandomizerHintTextKey hintKey, RandomizerGet vanillaItem,
|
RandomizerHintTextKey hintKey, RandomizerGet vanillaItem,
|
||||||
SpoilerCollectionCheck collectionCheck);
|
SpoilerCollectionCheck collectionCheck);
|
||||||
|
|
||||||
|
static Location Icicle(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_,
|
||||||
|
int32_t actorParams_, std::string&& shortName_, RandomizerHintTextKey hintKey,
|
||||||
|
SpoilerCollectionCheck collectionCheck);
|
||||||
|
|
||||||
|
static Location RedIce(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_, SceneID scene_,
|
||||||
|
int32_t actorParams_, std::string&& shortName_, RandomizerHintTextKey hintKey,
|
||||||
|
SpoilerCollectionCheck collectionCheck);
|
||||||
|
|
||||||
static Location OtherHint(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
static Location OtherHint(RandomizerCheck rc, RandomizerCheckQuest quest_, RandomizerCheckArea area_,
|
||||||
ActorID actorId_, SceneID scene_, std::string&& shortName_, std::string&& spoilerName_);
|
ActorID actorId_, SceneID scene_, std::string&& shortName_, std::string&& spoilerName_);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -154,8 +154,34 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)),
|
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)),
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
||||||
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_5, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_6, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_7, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_8, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_9, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_10, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_4, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_5, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_6, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_7, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_8, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_9, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_10, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_11, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_DOOR_RED_ICE, logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_GANONS_CASTLE_MAIN, true),
|
ENTRANCE(RR_GANONS_CASTLE_MAIN, true),
|
||||||
|
|
@ -165,16 +191,25 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
areaTable[RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM] = Region("Ganon's Castle Water Trial Block Room", SCENE_INSIDE_GANONS_CASTLE, {
|
areaTable[RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM] = Region("Ganon's Castle Water Trial Block Room", SCENE_INSIDE_GANONS_CASTLE, {
|
||||||
//Events
|
//Events
|
||||||
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->CanBreakPots()),
|
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->CanBreakPots()),
|
||||||
EVENT_ACCESS(LOGIC_WATER_TRIAL_RUSTED_SWITCH, logic->IsAdult && (logic->HasItem(RG_POWER_BRACELET) || logic->CanMiddairGroundJump()) &&
|
|
||||||
(logic->BlueFire() || ctx->GetTrickOption(RT_VISIBLE_COLLISION)) &&
|
|
||||||
logic->CanUse(RG_MEGATON_HAMMER)),
|
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_POT_3, logic->CanBreakPots()),
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_POT_3, logic->CanBreakPots()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM, true),
|
ENTRANCE(RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM, true),
|
||||||
ENTRANCE(RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM_END, logic->IsAdult || (logic->HasItem(RG_POWER_BRACELET) && logic->CanUse(RG_HOVER_BOOTS)) || logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)),
|
ENTRANCE(RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM_SWITCH, logic->IsAdult && (logic->HasItem(RG_POWER_BRACELET) || logic->CanMiddairGroundJump())),
|
||||||
|
ENTRANCE(RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM_END, logic->IsAdult || (logic->HasItem(RG_POWER_BRACELET) && logic->CanUse(RG_HOVER_BOOTS)) || logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)),
|
||||||
|
});
|
||||||
|
|
||||||
|
areaTable[RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM_SWITCH] = Region("Ganon's Castle Water Trial Block Room Switch", SCENE_INSIDE_GANONS_CASTLE, {
|
||||||
|
//Events
|
||||||
|
EVENT_ACCESS(LOGIC_WATER_TRIAL_RUSTED_SWITCH, (logic->BlueFire() || ctx->GetTrickOption(RT_VISIBLE_COLLISION)) && logic->CanUse(RG_MEGATON_HAMMER)),
|
||||||
|
}, {
|
||||||
|
//Locations
|
||||||
|
LOCATION(RC_GANONS_CASTLE_WATER_TRIAL_RUSTED_SWITCH_RED_ICE, logic->BlueFire()),
|
||||||
|
}, {
|
||||||
|
//Exits
|
||||||
|
ENTRANCE(RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM, true),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM_END] = Region("Ganon's Castle Water Trial Block Room End", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
|
areaTable[RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM_END] = Region("Ganon's Castle Water Trial Block Room End", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
|
||||||
|
|
@ -502,8 +537,29 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, logic->CanJumpslash() || logic->HasExplosives()), // bow can also hit at right angle
|
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, logic->CanJumpslash() || logic->HasExplosives()), // bow can also hit at right angle
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_CHEST, logic->BlueFire() && logic->HasItem(RG_OPEN_CHEST)),
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_CHEST, logic->BlueFire() && logic->HasItem(RG_OPEN_CHEST)),
|
||||||
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, logic->BlueFire()),
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, logic->BlueFire()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_LEFT_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_RIGHT_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_BACK_LEFT_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_1, logic->BlueFire()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_2, logic->BlueFire()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_3, logic->BlueFire()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_4, logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_GANONS_CASTLE_MQ_MAIN, true),
|
ENTRANCE(RR_GANONS_CASTLE_MQ_MAIN, true),
|
||||||
|
|
@ -513,16 +569,31 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
areaTable[RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM] = Region("Ganon's Castle MQ Water Trial Block Room", SCENE_INSIDE_GANONS_CASTLE, {
|
areaTable[RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM] = Region("Ganon's Castle MQ Water Trial Block Room", SCENE_INSIDE_GANONS_CASTLE, {
|
||||||
//Events
|
//Events
|
||||||
EVENT_ACCESS(LOGIC_WATER_TRIAL_MQ_SILVER_RUPEES, logic->IsAdult && (logic->HasItem(RG_POWER_BRACELET) || logic->CanMiddairGroundJump()) && logic->BlueFire()),
|
EVENT_ACCESS(LOGIC_WATER_TRIAL_MQ_SILVER_RUPEES, logic->IsAdult && (logic->HasItem(RG_POWER_BRACELET) || logic->CanMiddairGroundJump()) && logic->BlueFire()),
|
||||||
EVENT_ACCESS(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE, (ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS)) || (logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS)) && logic->HasItem(RG_POWER_BRACELET) && logic->CanUse(RG_BOTTLE_WITH_BLUE_FIRE)),
|
EVENT_ACCESS(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE, (ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS)) || ((logic->IsAdult || logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS)/* && logic->CanUse(RG_ROLL)*/)) && logic->HasItem(RG_POWER_BRACELET) && logic->CanUse(RG_BOTTLE_WITH_BLUE_FIRE))),
|
||||||
}, {}, {
|
}, {
|
||||||
|
//Locations
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SILVER_RUPEE_RED_ICE, logic->IsAdult && (logic->HasItem(RG_POWER_BRACELET) || logic->CanMiddairGroundJump()) && logic->BlueFire()),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_1, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE) && logic->CanUse(RG_BOOMERANG)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_2, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE) && logic->CanUse(RG_BOOMERANG)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_3, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE) && logic->CanUse(RG_BOOMERANG)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_4, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE) && logic->CanUse(RG_BOOMERANG)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_5, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE) && logic->CanUse(RG_BOOMERANG)),
|
||||||
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM, logic->SmallKeys(SCENE_INSIDE_GANONS_CASTLE, 3)),
|
ENTRANCE(RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM, logic->SmallKeys(SCENE_INSIDE_GANONS_CASTLE, 3)),
|
||||||
ENTRANCE(RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM_END, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE) && (logic->IsAdult || (logic->CanUse(RG_HOVER_BOOTS) && logic->HasItem(RG_POWER_BRACELET)) || logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP))),
|
ENTRANCE(RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM_END, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE) && (logic->IsAdult || ((logic->CanUse(RG_HOVER_BOOTS) || (ctx->GetTrickOption(RT_UNINTUITIVE_JUMPS)/* && logic->CanUse(RG_ROLL)*/)) && logic->HasItem(RG_POWER_BRACELET)) || logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP))),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM_END] = Region("Ganon's Castle MQ Water Trial Block Room End", SCENE_INSIDE_GANONS_CASTLE, {
|
areaTable[RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM_END] = Region("Ganon's Castle MQ Water Trial Block Room End", SCENE_INSIDE_GANONS_CASTLE, {
|
||||||
EVENT_ACCESS(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE, logic->BlueFire()),
|
EVENT_ACCESS(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE, logic->BlueFire()),
|
||||||
}, {}, {
|
}, {
|
||||||
|
//Locations
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_1, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_2, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_3, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_4, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_5, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE)),
|
||||||
|
}, {
|
||||||
ENTRANCE(RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE)),
|
ENTRANCE(RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM, logic->Get(LOGIC_WATER_TRIAL_MQ_MELTED_FINAL_DOOR_RED_ICE)),
|
||||||
ENTRANCE(RR_GANONS_CASTLE_MQ_WATER_TRIAL_FINAL_ROOM, logic->Get(LOGIC_WATER_TRIAL_MQ_SILVER_RUPEES)),
|
ENTRANCE(RR_GANONS_CASTLE_MQ_WATER_TRIAL_FINAL_ROOM, logic->Get(LOGIC_WATER_TRIAL_MQ_SILVER_RUPEES)),
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -245,7 +245,22 @@ void RegionTable_Init_GerudoTrainingGround() {
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM, AnyAgeTime([]{return logic->CanKillEnemy(RE_IRON_KNUCKLE);})),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM, AnyAgeTime([]{return logic->CanKillEnemy(RE_IRON_KNUCKLE);})),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM] = Region("Gerudo Training Ground MQ Left Side", SCENE_GERUDO_TRAINING_GROUND, {}, {}, {
|
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM] = Region("Gerudo Training Ground MQ Left Side", SCENE_GERUDO_TRAINING_GROUND, {}, {
|
||||||
|
//Locations
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_5, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_3, true),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_4, true),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_LEFT_STALACTITE, true),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_3, true),
|
||||||
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_SAND_ROOM, true),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_SAND_ROOM, true),
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, AnyAgeTime([]{return logic->CanUse(RG_LONGSHOT) || ctx->GetTrickOption(RT_GTG_MQ_WITHOUT_HOOKSHOT) || (ctx->GetTrickOption(RT_GTG_MQ_WITH_HOOKSHOT) && logic->IsAdult && logic->CanJumpslash() && logic->CanUse(RG_HOOKSHOT));})),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, AnyAgeTime([]{return logic->CanUse(RG_LONGSHOT) || ctx->GetTrickOption(RT_GTG_MQ_WITHOUT_HOOKSHOT) || (ctx->GetTrickOption(RT_GTG_MQ_WITH_HOOKSHOT) && logic->IsAdult && logic->CanJumpslash() && logic->CanUse(RG_HOOKSHOT));})),
|
||||||
|
|
@ -262,9 +277,9 @@ void RegionTable_Init_GerudoTrainingGround() {
|
||||||
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST, logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2, true) && logic->HasItem(RG_OPEN_CHEST)),
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_BEFORE_HEAVY_BLOCK_CHEST, logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2, true) && logic->HasItem(RG_OPEN_CHEST)),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM, true),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM, true),
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK, logic->Get(LOGIC_GTG_PUSHED_HEAVY_BLOCK)),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK, logic->Get(LOGIC_GTG_PUSHED_HEAVY_BLOCK)),
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE, logic->IsAdult && AnyAgeTime([]{return logic->CanKillEnemy(RE_STALFOS, ED_CLOSE, true, 2, true);}) && (ctx->GetTrickOption(RT_LENS_GTG_MQ) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || (ctx->GetTrickOption(RT_GTG_FAKE_WALL) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)) || (logic->IsAdult && logic->CanGroundJump()))),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_ALCOVE, logic->IsAdult && (ctx->GetTrickOption(RT_LENS_GTG_MQ) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || (ctx->GetTrickOption(RT_GTG_FAKE_WALL) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)) || (logic->IsAdult && logic->CanGroundJump()))),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK] = Region("Gerudo Training Ground MQ Behind Block", SCENE_GERUDO_TRAINING_GROUND, {}, {}, {
|
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK] = Region("Gerudo Training Ground MQ Behind Block", SCENE_GERUDO_TRAINING_GROUND, {}, {}, {
|
||||||
|
|
@ -280,15 +295,23 @@ void RegionTable_Init_GerudoTrainingGround() {
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK, true),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK, true),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_ALCOVE] = Region("Gerudo Training Ground MQ Stalfos Room Alcove", SCENE_GERUDO_TRAINING_GROUND, {}, {
|
||||||
|
//Locations
|
||||||
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_RED_ICE, logic->BlueFire()),
|
||||||
|
}, {
|
||||||
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, true),
|
||||||
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE, logic->Get(LOGIC_GTG_UNLOCKED_DOOR_BEHIND_HEAVY_BLOCK)),
|
||||||
|
});
|
||||||
|
|
||||||
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
|
//Locations
|
||||||
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE, logic->CanUse(RG_LONGSHOT) || logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && ctx->GetTrickOption(RT_GTG_STATUE_JUMP))), // Shuffle roll: Jumpslash doesn't require roll, jump only does
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_WONDER_EYE_STATUE, logic->CanUse(RG_LONGSHOT) || logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && ctx->GetTrickOption(RT_GTG_STATUE_JUMP))), // Shuffle roll: Jumpslash doesn't require roll, jump only does
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, true),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_ALCOVE, 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
|
//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
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_MAGENTA_FIRE_ROOM, AnyAgeTime([]{return logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_STICKS) || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOOMERANG);})),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_MAGENTA_FIRE_ROOM, AnyAgeTime([]{return logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_STICKS) || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOOMERANG);})),
|
||||||
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM, true),
|
ENTRANCE(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM, true),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_MAGENTA_FIRE_ROOM] = Region("Gerudo Training Ground MQ Magenta Fire Room", SCENE_GERUDO_TRAINING_GROUND, {}, {
|
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_MAGENTA_FIRE_ROOM] = Region("Gerudo Training Ground MQ Magenta Fire Room", SCENE_GERUDO_TRAINING_GROUND, {}, {
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,20 @@ void RegionTable_Init_IceCavern() {
|
||||||
|
|
||||||
areaTable[RR_ICE_CAVERN_BEGINNING] = Region("Ice Cavern Beginning", SCENE_ICE_CAVERN, {}, {
|
areaTable[RR_ICE_CAVERN_BEGINNING] = Region("Ice Cavern Beginning", SCENE_ICE_CAVERN, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, logic->CanUse(RG_SONG_OF_STORMS)),
|
LOCATION(RC_ICE_CAVERN_ENTRANCE_STORMS_FAIRY, logic->CanUse(RG_SONG_OF_STORMS)),
|
||||||
LOCATION(RC_ICE_CAVERN_LOBBY_RUPEE, logic->BlueFire()), // can get with rang trick
|
LOCATION(RC_ICE_CAVERN_LOBBY_RUPEE, logic->BlueFire()), // can get with rang trick
|
||||||
|
LOCATION(RC_ICE_CAVERN_ENTRANCE_LEFT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_ENTRANCE_MIDDLE_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_ENTRANCE_RIGHT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_ENTRANCE_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_ENTRANCE_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_LOBBY_STALACTITE, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_LOBBY_LEFT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_LOBBY_MIDDLE_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_LOBBY_RIGHT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_ENTRANCE_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_LOBBY_LEFT_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_LOBBY_RIGHT_RED_ICE, logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_ENTRYWAY, true),
|
ENTRANCE(RR_ICE_CAVERN_ENTRYWAY, true),
|
||||||
|
|
@ -29,12 +41,22 @@ void RegionTable_Init_IceCavern() {
|
||||||
|
|
||||||
areaTable[RR_ICE_CAVERN_HUB] = Region("Ice Cavern Hub", SCENE_ICE_CAVERN, {}, {
|
areaTable[RR_ICE_CAVERN_HUB] = Region("Ice Cavern Hub", SCENE_ICE_CAVERN, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, logic->HookshotOrBoomerang()),
|
LOCATION(RC_ICE_CAVERN_GS_SPINNING_SCYTHE_ROOM, logic->HookshotOrBoomerang()),
|
||||||
LOCATION(RC_ICE_CAVERN_HALL_POT_1, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_HALL_POT_1, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_HALL_POT_2, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_HALL_POT_2, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_POT_1, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_POT_1, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_POT_2, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_POT_2, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_POT_3, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_POT_3, logic->CanBreakPots()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_AFTER_LOBBY_STALACTITE, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_AFTER_LOBBY_LEFT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_AFTER_LOBBY_CENTER_LEFT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_AFTER_LOBBY_CENTER_RIGHT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_AFTER_LOBBY_RIGHT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_LEFT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_MIDDLE_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_RIGHT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_EAST_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SPINNING_BLADE_WEST_RED_ICE, logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_BEGINNING, true),
|
ENTRANCE(RR_ICE_CAVERN_BEGINNING, true),
|
||||||
|
|
@ -49,14 +71,24 @@ void RegionTable_Init_IceCavern() {
|
||||||
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, true),
|
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, true),
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ICE_CAVERN_MAP_CHEST, logic->BlueFire() && logic->HasItem(RG_OPEN_CHEST)),
|
LOCATION(RC_ICE_CAVERN_MAP_CHEST, logic->BlueFire() && logic->HasItem(RG_OPEN_CHEST)),
|
||||||
// Bow extension is possible, but very precise: X = 403, Z = 2062-3, Rot = -11475, needs a setup and is its own trick
|
// Bow extension is possible, but very precise: X = 403, Z = 2062-3, Rot = -11475, needs a setup and is its own trick
|
||||||
LOCATION(RC_ICE_CAVERN_FROZEN_POT_1, (logic->CanBreakPots() && logic->BlueFire()) || logic->HasExplosives() ||
|
LOCATION(RC_ICE_CAVERN_FROZEN_POT_1, (logic->CanBreakPots() && logic->BlueFire()) || logic->HasExplosives() ||
|
||||||
(ctx->GetTrickOption(RT_VISIBLE_COLLISION) && logic->CanJumpslash()) ||
|
(ctx->GetTrickOption(RT_VISIBLE_COLLISION) && logic->CanJumpslash()) ||
|
||||||
(ctx->GetTrickOption(RT_ITEM_EXTENSION) && logic->CanUse(RG_HOOKSHOT))),
|
(ctx->GetTrickOption(RT_ITEM_EXTENSION) && logic->CanUse(RG_HOOKSHOT))),
|
||||||
LOCATION(RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART, true),
|
LOCATION(RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART, true),
|
||||||
LOCATION(RC_ICE_CAVERN_MAP_ROOM_MIDDLE_HEART, true),
|
LOCATION(RC_ICE_CAVERN_MAP_ROOM_MIDDLE_HEART, true),
|
||||||
LOCATION(RC_ICE_CAVERN_MAP_ROOM_RIGHT_HEART, true),
|
LOCATION(RC_ICE_CAVERN_MAP_ROOM_RIGHT_HEART, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_3, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_4, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_5, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_HALLWAY_LEFT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_HALLWAY_MIDDLE_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_HALLWAY_RIGHT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_ROOM_POT_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MAP_ROOM_CHEST_RED_ICE, logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_HUB, true),
|
ENTRANCE(RR_ICE_CAVERN_HUB, true),
|
||||||
|
|
@ -67,9 +99,31 @@ void RegionTable_Init_IceCavern() {
|
||||||
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, true),
|
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, true),
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ICE_CAVERN_COMPASS_CHEST, (logic->IsChild || logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)) && logic->BlueFire() && logic->HasItem(RG_OPEN_CHEST)),
|
LOCATION(RC_ICE_CAVERN_COMPASS_CHEST, (logic->IsChild || logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)) && logic->BlueFire() && logic->HasItem(RG_OPEN_CHEST)),
|
||||||
LOCATION(RC_ICE_CAVERN_FREESTANDING_POH, (logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)) && logic->BlueFire()), // can skip blue fire with rang trick
|
LOCATION(RC_ICE_CAVERN_FREESTANDING_POH, (logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)) && logic->BlueFire()), // can skip blue fire with rang trick
|
||||||
LOCATION(RC_ICE_CAVERN_GS_HEART_PIECE_ROOM, logic->HookshotOrBoomerang()),
|
LOCATION(RC_ICE_CAVERN_GS_HEART_PIECE_ROOM, logic->HookshotOrBoomerang()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_3, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_4, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_5, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_1, logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_2, logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_5, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_6, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_FREESTANDING_RED_ICE, (logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)) && logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_HEART_PIECE_ROOM_CHEST_RED_ICE, (logic->IsChild || logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)) && logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_HUB, true),
|
ENTRANCE(RR_ICE_CAVERN_HUB, true),
|
||||||
|
|
@ -78,15 +132,24 @@ void RegionTable_Init_IceCavern() {
|
||||||
areaTable[RR_ICE_CAVERN_BLOCK_ROOM] = Region("Ice Cavern Block Room", SCENE_ICE_CAVERN, {}, {
|
areaTable[RR_ICE_CAVERN_BLOCK_ROOM] = Region("Ice Cavern Block Room", SCENE_ICE_CAVERN, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
// trick involves backflip, could be merged into general trick
|
// trick involves backflip, could be merged into general trick
|
||||||
LOCATION(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, logic->HookshotOrBoomerang() || (ctx->GetTrickOption(RT_ICE_BLOCK_GS) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_SHORT_JUMPSLASH))),
|
LOCATION(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, logic->HookshotOrBoomerang() || (ctx->GetTrickOption(RT_ICE_BLOCK_GS) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) && logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_SHORT_JUMPSLASH))),
|
||||||
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, logic->CanUse(RG_BOOMERANG)),
|
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, logic->CanUse(RG_BOOMERANG)),
|
||||||
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, logic->CanUse(RG_BOOMERANG)),
|
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, logic->CanUse(RG_BOOMERANG)),
|
||||||
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, logic->CanUse(RG_BOOMERANG)),
|
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, logic->CanUse(RG_BOOMERANG)),
|
||||||
|
LOCATION(RC_ICE_CAVERN_PUSH_BLOCK_HALL_LEFT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_LEFT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_RIGHT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_PUSH_BLOCK_HALL_RIGHT_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_3, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_RUPEE_RED_ICE, (logic->HasItem(RG_POWER_BRACELET) || (logic->IsAdult && (logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)))) && logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_HUB, logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)),
|
ENTRANCE(RR_ICE_CAVERN_HUB, logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)),
|
||||||
ENTRANCE(RR_ICE_CAVERN_BLOCK_ROOM_BLUE_FIRE, logic->HasItem(RG_POWER_BRACELET) || (logic->IsAdult && (logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)))),
|
ENTRANCE(RR_ICE_CAVERN_BLOCK_ROOM_BLUE_FIRE, logic->HasItem(RG_POWER_BRACELET) || (logic->IsAdult && (logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)))),
|
||||||
ENTRANCE(RR_ICE_CAVERN_BEFORE_FINAL_ROOM, (logic->HasItem(RG_POWER_BRACELET) || (logic->IsAdult && (logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)))) && AnyAgeTime([]{return logic->BlueFire();})),
|
ENTRANCE(RR_ICE_CAVERN_AFTER_BLOCK_ROOM, (logic->HasItem(RG_POWER_BRACELET) || (logic->IsAdult && (logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)))) && AnyAgeTime([]{return logic->BlueFire();})),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_ICE_CAVERN_BLOCK_ROOM_BLUE_FIRE] = Region("Ice Cavern Block Room Blue Fire", SCENE_ICE_CAVERN, {
|
areaTable[RR_ICE_CAVERN_BLOCK_ROOM_BLUE_FIRE] = Region("Ice Cavern Block Room Blue Fire", SCENE_ICE_CAVERN, {
|
||||||
|
|
@ -102,16 +165,38 @@ void RegionTable_Init_IceCavern() {
|
||||||
ENTRANCE(RR_ICE_CAVERN_BLOCK_ROOM, true),
|
ENTRANCE(RR_ICE_CAVERN_BLOCK_ROOM, true),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
areaTable[RR_ICE_CAVERN_AFTER_BLOCK_ROOM] = Region("Ice Cavern After Block Room", SCENE_ICE_CAVERN, {}, {
|
||||||
|
//Locations
|
||||||
|
LOCATION(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, ctx->GetTrickOption(RT_ICE_BLOCK_GS) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) && logic->BlueFire() && logic->HasItem(RG_POWER_BRACELET)),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALACTITE_3, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALACTITE_4, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALAGMITE_5, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALAGMITE_6, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALAGMITE_7, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_STALAGMITE_8, logic->CanClearStalagmite()),
|
||||||
|
}, {
|
||||||
|
//Exits
|
||||||
|
ENTRANCE(RR_ICE_CAVERN_BLOCK_ROOM, true),
|
||||||
|
ENTRANCE(RR_ICE_CAVERN_BEFORE_FINAL_ROOM, AnyAgeTime([]{return logic->BlueFire();})),
|
||||||
|
});
|
||||||
|
|
||||||
// this represents being past the red ice barricade, not just past the silver rupee door
|
// this represents being past the red ice barricade, not just past the silver rupee door
|
||||||
areaTable[RR_ICE_CAVERN_BEFORE_FINAL_ROOM] = Region("Ice Cavern Before Final Room", SCENE_ICE_CAVERN, {}, {
|
areaTable[RR_ICE_CAVERN_BEFORE_FINAL_ROOM] = Region("Ice Cavern Before Final Room", SCENE_ICE_CAVERN, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
//Assumes RR_ICE_CAVERN_BLOCK_ROOM access
|
LOCATION(RC_ICE_CAVERN_NEAR_END_POT_1, logic->CanBreakPots() && logic->BlueFire()),
|
||||||
LOCATION(RC_ICE_CAVERN_GS_PUSH_BLOCK_ROOM, ctx->GetTrickOption(RT_ICE_BLOCK_GS) && logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS) && logic->BlueFire() && logic->HasItem(RG_POWER_BRACELET)),
|
LOCATION(RC_ICE_CAVERN_NEAR_END_POT_2, logic->CanBreakPots() && logic->BlueFire()),
|
||||||
LOCATION(RC_ICE_CAVERN_NEAR_END_POT_1, logic->CanBreakPots() && logic->BlueFire()),
|
LOCATION(RC_ICE_CAVERN_NEAR_END_LEFT_RED_ICE, logic->BlueFire()),
|
||||||
LOCATION(RC_ICE_CAVERN_NEAR_END_POT_2, logic->CanBreakPots() && logic->BlueFire()),
|
LOCATION(RC_ICE_CAVERN_NEAR_END_MIDDLE_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_NEAR_END_RIGHT_RED_ICE, logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_BLOCK_ROOM, AnyAgeTime([]{return logic->BlueFire();})),
|
ENTRANCE(RR_ICE_CAVERN_AFTER_BLOCK_ROOM, AnyAgeTime([]{return logic->BlueFire();})),
|
||||||
ENTRANCE(RR_ICE_CAVERN_FINAL_ROOM, true),
|
ENTRANCE(RR_ICE_CAVERN_FINAL_ROOM, true),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -142,7 +227,11 @@ void RegionTable_Init_IceCavern() {
|
||||||
|
|
||||||
areaTable[RR_ICE_CAVERN_MQ_BEGINNING] = Region("Ice Cavern MQ Beginning", SCENE_ICE_CAVERN, {}, {
|
areaTable[RR_ICE_CAVERN_MQ_BEGINNING] = Region("Ice Cavern MQ Beginning", SCENE_ICE_CAVERN, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_ENTRANCE_POT, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_ENTRANCE_POT, logic->CanBreakPots()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_2, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_ENTRYWAY, true),
|
ENTRANCE(RR_ICE_CAVERN_ENTRYWAY, true),
|
||||||
|
|
@ -156,12 +245,28 @@ void RegionTable_Init_IceCavern() {
|
||||||
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->CanBreakPots()),
|
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->CanBreakPots()),
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4, logic->CanBreakPots()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_5, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_5, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_WEST_LEFT_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_WEST_MIDDLE_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_WEST_RIGHT_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_LEDGE_LEFT_RED_ICE, (logic->IsAdult /*|| logic->CanGroundJump()*/) && logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_LEDGE_MIDDLE_RED_ICE, (logic->IsAdult /*|| logic->CanGroundJump()*/) && logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_HUB_LEDGE_RIGHT_RED_ICE, (logic->IsAdult /*|| logic->CanGroundJump()*/) && logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_MQ_MAP_ROOM, AnyAgeTime([]{return logic->CanKillEnemy(RE_WHITE_WOLFOS) && logic->CanKillEnemy(RE_FREEZARD);})),
|
ENTRANCE(RR_ICE_CAVERN_MQ_MAP_ROOM, AnyAgeTime([]{return logic->CanKillEnemy(RE_WHITE_WOLFOS) && logic->CanKillEnemy(RE_FREEZARD);})),
|
||||||
|
|
@ -176,7 +281,17 @@ void RegionTable_Init_IceCavern() {
|
||||||
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, logic->IsChild || logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)),
|
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, logic->IsChild || logic->CanClearStalagmite() || ctx->GetTrickOption(RT_ICE_STALAGMITE_CLIP)),
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_MAP_CHEST, logic->BlueFire() && AnyAgeTime([]{return logic->CanHitSwitch();}) && logic->HasItem(RG_OPEN_CHEST)),
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_CHEST, logic->BlueFire() && AnyAgeTime([]{return logic->CanHitSwitch();}) && logic->HasItem(RG_OPEN_CHEST)),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_3, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_4, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_5, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_6, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_7, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_MAP_RED_ICE, logic->BlueFire()),
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
areaTable[RR_ICE_CAVERN_MQ_SCARECROW_ROOM] = Region("Ice Cavern MQ Scarecrow Room", SCENE_ICE_CAVERN, {
|
areaTable[RR_ICE_CAVERN_MQ_SCARECROW_ROOM] = Region("Ice Cavern MQ Scarecrow Room", SCENE_ICE_CAVERN, {
|
||||||
|
|
@ -185,8 +300,13 @@ void RegionTable_Init_IceCavern() {
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
//Implies being able to kill the skull if you hit the switch
|
//Implies being able to kill the skull if you hit the switch
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_GS_ICE_BLOCK, (logic->BlueFire() && logic->HasItem(RG_POWER_BRACELET) && logic->CanKillEnemy(RE_GOLD_SKULLTULA)) || logic->CanHitSwitch(logic->IsAdult ? ED_LONG_JUMPSLASH : ED_BOMB_THROW)),
|
LOCATION(RC_ICE_CAVERN_MQ_GS_ICE_BLOCK, (logic->BlueFire() && logic->HasItem(RG_POWER_BRACELET) && logic->CanKillEnemy(RE_GOLD_SKULLTULA)) || logic->CanHitSwitch(logic->IsAdult ? ED_LONG_JUMPSLASH : ED_BOMB_THROW)),
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_GS_SCARECROW, logic->ReachScarecrow() || (logic->IsAdult && (logic->CanUse(RG_LONGSHOT) || logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)))),
|
LOCATION(RC_ICE_CAVERN_MQ_GS_SCARECROW, logic->ReachScarecrow() || (logic->IsAdult && (logic->CanUse(RG_LONGSHOT) || logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)))),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_BEFORE_SCARECROW_STALAGMITE, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_SCARECROW_ROOM_STALACTITE, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_SCARECROW_LEFT_RED_ICE, logic->IsChild && ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS) && logic->CanUse(RG_BOOMERANG)),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_SCARECROW_MIDDLE_RED_ICE, logic->IsChild && ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS) && logic->CanUse(RG_BOOMERANG)),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_SCARECROW_RIGHT_RED_ICE, logic->IsChild && ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS) && logic->CanUse(RG_BOOMERANG)),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_MQ_HUB, logic->BlueFire()),
|
ENTRANCE(RR_ICE_CAVERN_MQ_HUB, logic->BlueFire()),
|
||||||
|
|
@ -196,8 +316,14 @@ void RegionTable_Init_IceCavern() {
|
||||||
|
|
||||||
areaTable[RR_ICE_CAVERN_MQ_WEST_CORRIDOR] = Region("Ice Cavern MQ West Corridor", SCENE_ICE_CAVERN, {}, {
|
areaTable[RR_ICE_CAVERN_MQ_WEST_CORRIDOR] = Region("Ice Cavern MQ West Corridor", SCENE_ICE_CAVERN, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2, logic->CanBreakPots()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_1, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_2, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_3, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_SCARECROW_LEFT_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_SCARECROW_MIDDLE_RED_ICE, logic->BlueFire()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_SCARECROW_RIGHT_RED_ICE, logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ICE_CAVERN_MQ_SCARECROW_ROOM, logic->BlueFire()),
|
ENTRANCE(RR_ICE_CAVERN_MQ_SCARECROW_ROOM, logic->BlueFire()),
|
||||||
|
|
@ -209,14 +335,20 @@ void RegionTable_Init_IceCavern() {
|
||||||
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, true),
|
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, true),
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
||||||
//It is possible for child with master, BGS or sticks, or adult with BGS, to hit this switch through the ice with a crouchstab, but it's precise and unintuitive for a trick
|
//It is possible for child with master, BGS or sticks, or adult with BGS, to hit this switch through the ice with a crouchstab, but it's precise and unintuitive for a trick
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_FREESTANDING_POH, logic->HasExplosives()), // can get with rang trick
|
LOCATION(RC_ICE_CAVERN_MQ_FREESTANDING_POH, logic->HasExplosives()), // can get with rang trick
|
||||||
//doing RT_ICE_MQ_RED_ICE_GS as child is untested, as I could not perform the trick reliably even as adult
|
//doing RT_ICE_MQ_RED_ICE_GS as child is untested, as I could not perform the trick reliably even as adult
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_GS_RED_ICE, (logic->CanUse(RG_BOTTLE_WITH_BLUE_FIRE) && (logic->CanUse(RG_SONG_OF_TIME) || (logic->IsAdult && ctx->GetTrickOption(RT_ICE_MQ_RED_ICE_GS))) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)) ||
|
LOCATION(RC_ICE_CAVERN_MQ_GS_RED_ICE, (logic->CanUse(RG_BOTTLE_WITH_BLUE_FIRE) && (logic->CanUse(RG_SONG_OF_TIME) || (logic->IsAdult && ctx->GetTrickOption(RT_ICE_MQ_RED_ICE_GS))) && logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA)) ||
|
||||||
(ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS)) || (ctx->GetTrickOption(RT_ITEM_EXTENSION) && logic->CanUse(RG_SONG_OF_TIME) && logic->CanUse(RG_HOOKSHOT))),
|
(ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS)) || (ctx->GetTrickOption(RT_ITEM_EXTENSION) && logic->CanUse(RG_SONG_OF_TIME) && logic->CanUse(RG_HOOKSHOT))),
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_POT_1, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_POT_1, logic->CanBreakPots()),
|
||||||
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_POT_2, logic->CanBreakPots()),
|
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_POT_2, logic->CanBreakPots()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_1, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_2, logic->CanClearStalagmite()),
|
||||||
|
LOCATION(RC_ICE_CAVERN_MQ_COMPASS_RED_ICE, (logic->CanUse(RG_BOTTLE_WITH_BLUE_FIRE) && (logic->CanUse(RG_SONG_OF_TIME) || (logic->IsAdult && ctx->GetTrickOption(RT_ICE_MQ_RED_ICE_GS))) && (logic->CanKillEnemy(RE_GOLD_SKULLTULA) || logic->TakeDamage())) ||
|
||||||
|
(ctx->GetOption(RSK_BLUE_FIRE_ARROWS) && logic->CanUse(RG_ICE_ARROWS))),
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
areaTable[RR_ICE_CAVERN_MQ_STALFOS_ROOM] = Region("Ice Cavern MQ Stalfos Room", SCENE_ICE_CAVERN, {}, {
|
areaTable[RR_ICE_CAVERN_MQ_STALFOS_ROOM] = Region("Ice Cavern MQ Stalfos Room", SCENE_ICE_CAVERN, {}, {
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,8 @@ void RegionTable_Init_ZorasDomain() {
|
||||||
LOCATION(RC_ZD_KING_ZORA_PATH_ARROW_SIGN, logic->CanRead()),
|
LOCATION(RC_ZD_KING_ZORA_PATH_ARROW_SIGN, logic->CanRead()),
|
||||||
LOCATION(RC_ZD_NEAR_KING_ZORA_RECTANGLE_SIGN, logic->CanRead()),
|
LOCATION(RC_ZD_NEAR_KING_ZORA_RECTANGLE_SIGN, logic->CanRead()),
|
||||||
LOCATION(RC_ZD_NEAR_KING_ZORA_ARROW_SIGN, logic->CanRead()),
|
LOCATION(RC_ZD_NEAR_KING_ZORA_ARROW_SIGN, logic->CanRead()),
|
||||||
|
LOCATION(RC_ZD_KING_ZORA_RED_ICE, logic->IsAdult && logic->Get(LOGIC_KING_ZORA_THAWED)),
|
||||||
|
LOCATION(RC_ZD_ZORA_SHOP_RED_ICE, logic->IsAdult && logic->BlueFire()),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ZR_BEHIND_WATERFALL, true),
|
ENTRANCE(RR_ZR_BEHIND_WATERFALL, true),
|
||||||
|
|
@ -61,6 +63,7 @@ void RegionTable_Init_ZorasDomain() {
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_ZD_BEHIND_KING_ZORA_BEEHIVE, logic->IsChild && logic->CanBreakUpperBeehives()),
|
LOCATION(RC_ZD_BEHIND_KING_ZORA_BEEHIVE, logic->IsChild && logic->CanBreakUpperBeehives()),
|
||||||
|
LOCATION(RC_ZD_KING_ZORA_RED_ICE, logic->IsAdult && logic->Get(LOGIC_KING_ZORA_THAWED)),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
ENTRANCE(RR_ZORAS_DOMAIN, logic->Get(LOGIC_DELIVER_RUTOS_LETTER) || ctx->GetOption(RSK_ZORAS_FOUNTAIN).Is(RO_ZF_OPEN) || (ctx->GetOption(RSK_ZORAS_FOUNTAIN).Is(RO_ZF_CLOSED_CHILD) && logic->IsAdult)),
|
ENTRANCE(RR_ZORAS_DOMAIN, logic->Get(LOGIC_DELIVER_RUTOS_LETTER) || ctx->GetOption(RSK_ZORAS_FOUNTAIN).Is(RO_ZF_OPEN) || (ctx->GetOption(RSK_ZORAS_FOUNTAIN).Is(RO_ZF_CLOSED_CHILD) && logic->IsAdult)),
|
||||||
|
|
|
||||||
|
|
@ -312,6 +312,12 @@ void Settings::CreateOptionDescriptions() {
|
||||||
"only shuffle with No Logic.";
|
"only shuffle with No Logic.";
|
||||||
mOptionDescriptions[RSK_SHUFFLE_BUSHES] =
|
mOptionDescriptions[RSK_SHUFFLE_BUSHES] =
|
||||||
"Bushes in Hyrule Field & Zora's Fountain will contain randomized items when first walked through.";
|
"Bushes in Hyrule Field & Zora's Fountain will contain randomized items when first walked through.";
|
||||||
|
mOptionDescriptions[RSK_SHUFFLE_ICICLES] =
|
||||||
|
"Stalagmites and stalactites in Ice Cavern and Ganon's Castle will contain randomized items when broken.\n"
|
||||||
|
"Icicles will have a halo around them when carrying randomized items.";
|
||||||
|
mOptionDescriptions[RSK_SHUFFLE_RED_ICE] =
|
||||||
|
"Red Ice will give randomized items when melted.\n"
|
||||||
|
"Red Ice will have a particle effect inside it when it holds a randomized item";
|
||||||
mOptionDescriptions[RSK_SHUFFLE_SIGNS] = "Signs and readable pedestals, plinths, altars, and graves will grant a "
|
mOptionDescriptions[RSK_SHUFFLE_SIGNS] = "Signs and readable pedestals, plinths, altars, and graves will grant a "
|
||||||
"randomized item the first time they are read. "
|
"randomized item the first time they are read. "
|
||||||
"Signs will have a particle effect when they hold a randomized item.\n"
|
"Signs will have a particle effect when they hold a randomized item.\n"
|
||||||
|
|
|
||||||
|
|
@ -3281,6 +3281,227 @@ std::map<RandomizerCheck, RandomizerInf> rcToRandomizerInf = {
|
||||||
{ RC_KAK_BEGGAR_BUGS, RAND_INF_KAK_BEGGAR_BUGS },
|
{ RC_KAK_BEGGAR_BUGS, RAND_INF_KAK_BEGGAR_BUGS },
|
||||||
{ RC_KAK_BEGGAR_FISH, RAND_INF_KAK_BEGGAR_FISH },
|
{ RC_KAK_BEGGAR_FISH, RAND_INF_KAK_BEGGAR_FISH },
|
||||||
{ RC_KAK_BEGGAR_BLUE_FIRE, RAND_INF_KAK_BEGGAR_BLUE_FIRE },
|
{ RC_KAK_BEGGAR_BLUE_FIRE, RAND_INF_KAK_BEGGAR_BLUE_FIRE },
|
||||||
|
// Icicles
|
||||||
|
{ RC_ICE_CAVERN_ENTRANCE_LEFT_STALAGMITE, RAND_INF_ICE_CAVERN_ENTRANCE_LEFT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_ENTRANCE_MIDDLE_STALAGMITE, RAND_INF_ICE_CAVERN_ENTRANCE_MIDDLE_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_ENTRANCE_RIGHT_STALAGMITE, RAND_INF_ICE_CAVERN_ENTRANCE_RIGHT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_ENTRANCE_STALACTITE_1, RAND_INF_ICE_CAVERN_ENTRANCE_STALACTITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_ENTRANCE_STALACTITE_2, RAND_INF_ICE_CAVERN_ENTRANCE_STALACTITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_LOBBY_STALACTITE, RAND_INF_ICE_CAVERN_LOBBY_STALACTITE },
|
||||||
|
{ RC_ICE_CAVERN_LOBBY_LEFT_STALAGMITE, RAND_INF_ICE_CAVERN_LOBBY_LEFT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_LOBBY_MIDDLE_STALAGMITE, RAND_INF_ICE_CAVERN_LOBBY_MIDDLE_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_LOBBY_RIGHT_STALAGMITE, RAND_INF_ICE_CAVERN_LOBBY_RIGHT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_AFTER_LOBBY_STALACTITE, RAND_INF_ICE_CAVERN_AFTER_LOBBY_STALACTITE },
|
||||||
|
{ RC_ICE_CAVERN_AFTER_LOBBY_LEFT_STALAGMITE, RAND_INF_ICE_CAVERN_AFTER_LOBBY_LEFT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_AFTER_LOBBY_CENTER_LEFT_STALAGMITE, RAND_INF_ICE_CAVERN_AFTER_LOBBY_CENTER_LEFT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_AFTER_LOBBY_CENTER_RIGHT_STALAGMITE, RAND_INF_ICE_CAVERN_AFTER_LOBBY_CENTER_RIGHT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_AFTER_LOBBY_RIGHT_STALAGMITE, RAND_INF_ICE_CAVERN_AFTER_LOBBY_RIGHT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_SPINNING_BLADE_LEFT_STALAGMITE, RAND_INF_ICE_CAVERN_SPINNING_BLADE_LEFT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_SPINNING_BLADE_MIDDLE_STALAGMITE, RAND_INF_ICE_CAVERN_SPINNING_BLADE_MIDDLE_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_SPINNING_BLADE_RIGHT_STALAGMITE, RAND_INF_ICE_CAVERN_SPINNING_BLADE_RIGHT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_1, RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_2, RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_3, RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_4, RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_4 },
|
||||||
|
{ RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_5, RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_5 },
|
||||||
|
{ RC_ICE_CAVERN_MAP_HALLWAY_LEFT_STALAGMITE, RAND_INF_ICE_CAVERN_MAP_HALLWAY_LEFT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_MAP_HALLWAY_MIDDLE_STALAGMITE, RAND_INF_ICE_CAVERN_MAP_HALLWAY_MIDDLE_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_MAP_HALLWAY_RIGHT_STALAGMITE, RAND_INF_ICE_CAVERN_MAP_HALLWAY_RIGHT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_1, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_2, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_3, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_4, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_4 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_5, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_5 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_1, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_2, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_1, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_2, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_3, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_4, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_4 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_5, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_5 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_6, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_6 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_1, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_2, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_3, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_1, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_2, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_3, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_4, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_4 },
|
||||||
|
{ RC_ICE_CAVERN_PUSH_BLOCK_HALL_LEFT_STALAGMITE, RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_LEFT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_LEFT_STALAGMITE,
|
||||||
|
RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_LEFT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_STALAGMITE, RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_RIGHT_STALAGMITE,
|
||||||
|
RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_RIGHT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_PUSH_BLOCK_HALL_RIGHT_STALAGMITE, RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_RIGHT_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_1, RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_2, RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_3, RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALACTITE_1, RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALACTITE_2, RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALACTITE_3, RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALACTITE_4, RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_4 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALAGMITE_1, RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALAGMITE_2, RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALAGMITE_3, RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALAGMITE_4, RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_4 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALAGMITE_5, RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_5 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALAGMITE_6, RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_6 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALAGMITE_7, RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_7 },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_STALAGMITE_8, RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_8 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_1, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_2, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_3, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_4, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_4 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_5, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_5 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_6, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_6 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_7, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_7 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_8, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_8 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_9, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_9 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_10, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_10 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_1, RAND_INF_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_2, RAND_INF_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_1, RAND_INF_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_2, RAND_INF_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_1, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_2, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_3, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_4, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_4 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_5, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_5 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_6, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_6 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_7, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_7 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_8, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_8 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_9, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_9 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_10, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_10 },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_11, RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_11 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_1, RAND_INF_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_2, RAND_INF_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_1, RAND_INF_ICE_CAVERN_MQ_LOBBY_STALACTITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_2, RAND_INF_ICE_CAVERN_MQ_LOBBY_STALACTITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_1, RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_2, RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_3, RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_4, RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_4 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_5, RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_5 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_STALAGMITE_1, RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_STALAGMITE_2, RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_STALAGMITE_3, RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_STALAGMITE_4, RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_4 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_STALAGMITE_5, RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_5 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_1, RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_2, RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_1, RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_2, RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_3, RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_3 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_4, RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_4 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_5, RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_5 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_6, RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_6 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_7, RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_7 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_1, RAND_INF_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_2, RAND_INF_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_1, RAND_INF_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_2, RAND_INF_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_BEFORE_SCARECROW_STALAGMITE, RAND_INF_ICE_CAVERN_MQ_BEFORE_SCARECROW_STALAGMITE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_SCARECROW_ROOM_STALACTITE, RAND_INF_ICE_CAVERN_MQ_SCARECROW_ROOM_STALACTITE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_1, RAND_INF_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_1 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_2, RAND_INF_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_2 },
|
||||||
|
{ RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_3, RAND_INF_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_3 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_1,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_1 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_2,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_2 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_3,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_3 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_4,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_4 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_5,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_5 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_1,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_1 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_2,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_2 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_3,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_3 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_4,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_4 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_LEFT_STALACTITE,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_LEFT_STALACTITE },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_1,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_1 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_2,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_2 },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_3,
|
||||||
|
RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_1, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_2, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_3, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_1, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_2, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_3, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_1, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_2, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_3, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_4, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_4 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_1, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_2, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_3, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_4, RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_4 },
|
||||||
|
// Red Ice
|
||||||
|
{ RC_ZD_KING_ZORA_RED_ICE, RAND_INF_ZD_KING_ZORA_RED_ICE },
|
||||||
|
{ RC_ZD_ZORA_SHOP_RED_ICE, RAND_INF_ZD_ZORA_SHOP_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_ENTRANCE_RED_ICE, RAND_INF_ICE_CAVERN_ENTRANCE_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_LOBBY_LEFT_RED_ICE, RAND_INF_ICE_CAVERN_LOBBY_LEFT_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_LOBBY_RIGHT_RED_ICE, RAND_INF_ICE_CAVERN_LOBBY_RIGHT_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_SPINNING_BLADE_EAST_RED_ICE, RAND_INF_ICE_CAVERN_SPINNING_BLADE_EAST_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_SPINNING_BLADE_WEST_RED_ICE, RAND_INF_ICE_CAVERN_SPINNING_BLADE_WEST_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_FREESTANDING_RED_ICE, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_FREESTANDING_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_HEART_PIECE_ROOM_CHEST_RED_ICE, RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CHEST_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MAP_ROOM_POT_RED_ICE, RAND_INF_ICE_CAVERN_MAP_ROOM_POT_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MAP_ROOM_CHEST_RED_ICE, RAND_INF_ICE_CAVERN_MAP_ROOM_CHEST_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_RUPEE_RED_ICE, RAND_INF_ICE_CAVERN_SILVER_RUPEE_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_LEFT_RED_ICE, RAND_INF_ICE_CAVERN_NEAR_END_LEFT_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_MIDDLE_RED_ICE, RAND_INF_ICE_CAVERN_NEAR_END_MIDDLE_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_NEAR_END_RIGHT_RED_ICE, RAND_INF_ICE_CAVERN_NEAR_END_RIGHT_RED_ICE },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_DOOR_RED_ICE, RAND_INF_GANONS_CASTLE_WATER_TRIAL_DOOR_RED_ICE },
|
||||||
|
{ RC_GANONS_CASTLE_WATER_TRIAL_RUSTED_SWITCH_RED_ICE, RAND_INF_GANONS_CASTLE_WATER_TRIAL_RUSTED_SWITCH_RED_ICE },
|
||||||
|
{ RC_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_RED_ICE, RAND_INF_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_WEST_LEFT_RED_ICE, RAND_INF_ICE_CAVERN_MQ_HUB_WEST_LEFT_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_WEST_MIDDLE_RED_ICE, RAND_INF_ICE_CAVERN_MQ_HUB_WEST_MIDDLE_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_WEST_RIGHT_RED_ICE, RAND_INF_ICE_CAVERN_MQ_HUB_WEST_RIGHT_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_LEDGE_LEFT_RED_ICE, RAND_INF_ICE_CAVERN_MQ_HUB_LEDGE_LEFT_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_LEDGE_MIDDLE_RED_ICE, RAND_INF_ICE_CAVERN_MQ_HUB_LEDGE_MIDDLE_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_HUB_LEDGE_RIGHT_RED_ICE, RAND_INF_ICE_CAVERN_MQ_HUB_LEDGE_RIGHT_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_COMPASS_RED_ICE, RAND_INF_ICE_CAVERN_MQ_COMPASS_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_MAP_RED_ICE, RAND_INF_ICE_CAVERN_MQ_MAP_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_SCARECROW_LEFT_RED_ICE, RAND_INF_ICE_CAVERN_MQ_SCARECROW_LEFT_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_SCARECROW_MIDDLE_RED_ICE, RAND_INF_ICE_CAVERN_MQ_SCARECROW_MIDDLE_RED_ICE },
|
||||||
|
{ RC_ICE_CAVERN_MQ_SCARECROW_RIGHT_RED_ICE, RAND_INF_ICE_CAVERN_MQ_SCARECROW_RIGHT_RED_ICE },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_LEFT_RED_ICE,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_LEFT_RED_ICE },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_RIGHT_RED_ICE,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_RIGHT_RED_ICE },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_BACK_LEFT_RED_ICE,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_BACK_LEFT_RED_ICE },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_1,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_2,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_3,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_4,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_4 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_SILVER_RUPEE_RED_ICE,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SILVER_RUPEE_RED_ICE },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_1,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_2,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_3,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_4,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_4 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_5,
|
||||||
|
RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_5 },
|
||||||
};
|
};
|
||||||
|
|
||||||
CheckIdentity Randomizer::IdentifyBeehive(s32 sceneNum, s16 xPosition, s32 respawnData) {
|
CheckIdentity Randomizer::IdentifyBeehive(s32 sceneNum, s16 xPosition, s32 respawnData) {
|
||||||
|
|
@ -3842,6 +4063,55 @@ CheckIdentity Randomizer::IdentifyBeggar(s32 sceneNum, s32 textId) {
|
||||||
return beggarIdentity;
|
return beggarIdentity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CheckIdentity Randomizer::IdentifyIcicle(s32 sceneNum, s32 posX, s32 posZ) {
|
||||||
|
struct CheckIdentity icicleIdentity;
|
||||||
|
uint32_t icicleSceneNum = sceneNum;
|
||||||
|
|
||||||
|
icicleIdentity.randomizerInf = RAND_INF_MAX;
|
||||||
|
icicleIdentity.randomizerCheck = RC_UNKNOWN_CHECK;
|
||||||
|
|
||||||
|
s32 actorParams = TWO_ACTOR_PARAMS(posX, posZ);
|
||||||
|
|
||||||
|
Rando::Location* location = GetCheckObjectFromActor(ACTOR_BG_ICE_TURARA, icicleSceneNum, actorParams);
|
||||||
|
|
||||||
|
if (location->GetRandomizerCheck() == RC_UNKNOWN_CHECK) {
|
||||||
|
LUSLOG_WARN("IdentifyIcicle did not receive a valid RC value (%d).", location->GetRandomizerCheck());
|
||||||
|
assert(false);
|
||||||
|
} else {
|
||||||
|
icicleIdentity.randomizerInf = rcToRandomizerInf[location->GetRandomizerCheck()];
|
||||||
|
icicleIdentity.randomizerCheck = location->GetRandomizerCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
return icicleIdentity;
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckIdentity Randomizer::IdentifyRedIce(s32 sceneNum, s32 posX, s32 posZ) {
|
||||||
|
struct CheckIdentity redIceIdentity;
|
||||||
|
uint32_t redIceSceneNum = sceneNum;
|
||||||
|
|
||||||
|
// Handle KZ moving
|
||||||
|
if (sceneNum == SCENE_ZORAS_DOMAIN && LINK_IS_ADULT && posX == 531 && posZ == -1818) {
|
||||||
|
posX = 628;
|
||||||
|
}
|
||||||
|
|
||||||
|
redIceIdentity.randomizerInf = RAND_INF_MAX;
|
||||||
|
redIceIdentity.randomizerCheck = RC_UNKNOWN_CHECK;
|
||||||
|
|
||||||
|
s32 actorParams = TWO_ACTOR_PARAMS(posX, posZ);
|
||||||
|
|
||||||
|
Rando::Location* location = GetCheckObjectFromActor(ACTOR_BG_ICE_SHELTER, redIceSceneNum, actorParams);
|
||||||
|
|
||||||
|
if (location->GetRandomizerCheck() == RC_UNKNOWN_CHECK) {
|
||||||
|
LUSLOG_WARN("IdentifyRedIce did not receive a valid RC value (%d).", location->GetRandomizerCheck());
|
||||||
|
assert(false);
|
||||||
|
} else {
|
||||||
|
redIceIdentity.randomizerInf = rcToRandomizerInf[location->GetRandomizerCheck()];
|
||||||
|
redIceIdentity.randomizerCheck = location->GetRandomizerCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
return redIceIdentity;
|
||||||
|
}
|
||||||
|
|
||||||
u8 Randomizer::GetRandoSettingValue(RandomizerSettingKey randoSettingKey) {
|
u8 Randomizer::GetRandoSettingValue(RandomizerSettingKey randoSettingKey) {
|
||||||
return Rando::Context::GetInstance()->GetOption(randoSettingKey).Get();
|
return Rando::Context::GetInstance()->GetOption(randoSettingKey).Get();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,8 @@ class Randomizer {
|
||||||
CheckIdentity IdentifySign(s32 sceneNum, s32 posX, s32 posZ, s32 id);
|
CheckIdentity IdentifySign(s32 sceneNum, s32 posX, s32 posZ, s32 id);
|
||||||
CheckIdentity IdentifyWonderItem(s32 sceneNum, s32 par1, s32 par2);
|
CheckIdentity IdentifyWonderItem(s32 sceneNum, s32 par1, s32 par2);
|
||||||
CheckIdentity IdentifyBeggar(s32 sceneNum, s32 textId);
|
CheckIdentity IdentifyBeggar(s32 sceneNum, s32 textId);
|
||||||
|
CheckIdentity IdentifyIcicle(s32 sceneNum, s32 posX, s32 posZ);
|
||||||
|
CheckIdentity IdentifyRedIce(s32 sceneNum, s32 posX, s32 posZ);
|
||||||
GetItemEntry GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogItemId,
|
GetItemEntry GetItemFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogItemId,
|
||||||
bool checkObtainability = true);
|
bool checkObtainability = true);
|
||||||
GetItemEntry GetItemFromActor(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogItemId,
|
GetItemEntry GetItemFromActor(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogItemId,
|
||||||
|
|
|
||||||
|
|
@ -2869,6 +2869,201 @@ RANDO_ENUM_ITEM(RC_KAK_BEGGAR_BUGS)
|
||||||
RANDO_ENUM_ITEM(RC_KAK_BEGGAR_FISH)
|
RANDO_ENUM_ITEM(RC_KAK_BEGGAR_FISH)
|
||||||
RANDO_ENUM_ITEM(RC_KAK_BEGGAR_BLUE_FIRE)
|
RANDO_ENUM_ITEM(RC_KAK_BEGGAR_BLUE_FIRE)
|
||||||
|
|
||||||
|
// Vanilla Icicles
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_ENTRANCE_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_ENTRANCE_MIDDLE_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_ENTRANCE_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_ENTRANCE_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_ENTRANCE_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_LOBBY_STALACTITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_LOBBY_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_LOBBY_MIDDLE_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_LOBBY_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_AFTER_LOBBY_STALACTITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_AFTER_LOBBY_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_AFTER_LOBBY_CENTER_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_AFTER_LOBBY_CENTER_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_AFTER_LOBBY_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_SPINNING_BLADE_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_SPINNING_BLADE_MIDDLE_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_SPINNING_BLADE_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_HALLWAY_STALACTITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_HALLWAY_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_HALLWAY_MIDDLE_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_HALLWAY_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_PUSH_BLOCK_HALL_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_PUSH_BLOCK_HALL_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALAGMITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALAGMITE_7)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_STALAGMITE_8)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_7)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_8)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_9)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_10)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_7)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_8)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_9)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_10)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_STALACTITE_11)
|
||||||
|
// MQ Icicles
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_LOBBY_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_7)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_BEFORE_SCARECROW_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_SCARECROW_ROOM_STALACTITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_LEFT_STALACTITE)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_4)
|
||||||
|
// Red Ice
|
||||||
|
RANDO_ENUM_ITEM(RC_ZD_KING_ZORA_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ZD_ZORA_SHOP_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_ENTRANCE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_LOBBY_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_LOBBY_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_SPINNING_BLADE_EAST_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_SPINNING_BLADE_WEST_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_FREESTANDING_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_HEART_PIECE_ROOM_CHEST_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_ROOM_POT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MAP_ROOM_CHEST_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_SILVER_RUPEE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_MIDDLE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_NEAR_END_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_DOOR_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_WATER_TRIAL_RUSTED_SWITCH_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_WEST_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_WEST_MIDDLE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_WEST_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_LEDGE_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_LEDGE_MIDDLE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_HUB_LEDGE_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_COMPASS_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_MAP_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_SCARECROW_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_SCARECROW_MIDDLE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_ICE_CAVERN_MQ_SCARECROW_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_BACK_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SILVER_RUPEE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_1)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_2)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_3)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_4)
|
||||||
|
RANDO_ENUM_ITEM(RC_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_5)
|
||||||
|
|
||||||
RANDO_ENUM_ITEM(RC_MAX)
|
RANDO_ENUM_ITEM(RC_MAX)
|
||||||
RANDO_ENUM_END(RandomizerCheck)
|
RANDO_ENUM_END(RandomizerCheck)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1609,6 +1609,15 @@ RANDO_ENUM_ITEM(RHT_SIGN_SPIRIT_TEMPLE)
|
||||||
// BEGGAR
|
// BEGGAR
|
||||||
RANDO_ENUM_ITEM(RHT_BEGGAR_MARKET)
|
RANDO_ENUM_ITEM(RHT_BEGGAR_MARKET)
|
||||||
RANDO_ENUM_ITEM(RHT_BEGGAR_KAKARIKO_VILLAGE)
|
RANDO_ENUM_ITEM(RHT_BEGGAR_KAKARIKO_VILLAGE)
|
||||||
|
// ICICLES
|
||||||
|
RANDO_ENUM_ITEM(RHT_ICE_CAVERN_ICICLE)
|
||||||
|
RANDO_ENUM_ITEM(RHT_GERUDO_TRAINING_GROUND_ICICLE)
|
||||||
|
RANDO_ENUM_ITEM(RHT_GANONS_CASTLE_ICICLE)
|
||||||
|
// RED ICE
|
||||||
|
RANDO_ENUM_ITEM(RHT_RED_ICE_ZORAS_DOMAIN)
|
||||||
|
RANDO_ENUM_ITEM(RHT_GERUDO_TRAINING_GROUND_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RHT_ICE_CAVERN_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RHT_GANONS_CASTLE_RED_ICE)
|
||||||
// MAX
|
// MAX
|
||||||
RANDO_ENUM_ITEM(RHT_MAX)
|
RANDO_ENUM_ITEM(RHT_MAX)
|
||||||
RANDO_ENUM_END(RandomizerHintTextKey)
|
RANDO_ENUM_END(RandomizerHintTextKey)
|
||||||
|
|
|
||||||
|
|
@ -2436,6 +2436,201 @@ RANDO_ENUM_ITEM(RAND_INF_KAK_BEGGAR_BUGS)
|
||||||
RANDO_ENUM_ITEM(RAND_INF_KAK_BEGGAR_FISH)
|
RANDO_ENUM_ITEM(RAND_INF_KAK_BEGGAR_FISH)
|
||||||
RANDO_ENUM_ITEM(RAND_INF_KAK_BEGGAR_BLUE_FIRE)
|
RANDO_ENUM_ITEM(RAND_INF_KAK_BEGGAR_BLUE_FIRE)
|
||||||
|
|
||||||
|
// Vanilla Icicles
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_ENTRANCE_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_ENTRANCE_MIDDLE_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_ENTRANCE_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_ENTRANCE_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_ENTRANCE_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_LOBBY_STALACTITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_LOBBY_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_LOBBY_MIDDLE_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_LOBBY_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_AFTER_LOBBY_STALACTITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_AFTER_LOBBY_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_AFTER_LOBBY_CENTER_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_AFTER_LOBBY_CENTER_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_AFTER_LOBBY_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_SPINNING_BLADE_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_SPINNING_BLADE_MIDDLE_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_SPINNING_BLADE_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_HALLWAY_STALACTITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_HALLWAY_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_HALLWAY_MIDDLE_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_HALLWAY_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALACTITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CENTER_STALAGMITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_LEFT_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_RIGHT_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_LEFT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_CENTER_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_RIGHT_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_PUSH_BLOCK_HALL_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_7)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_STALAGMITE_8)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_7)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_8)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_9)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALAGMITE_10)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_RIGHT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_7)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_8)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_9)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_10)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_STALACTITE_11)
|
||||||
|
// MQ Icicles
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_ENTRANCE_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_LOBBY_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_LOBBY_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_AFTER_LOBBY_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_6)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_ROOM_CENTER_STALAGMITE_7)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_COMPASS_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_COMPASS_RIGHT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_BEFORE_SCARECROW_STALAGMITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_SCARECROW_ROOM_STALACTITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_WEST_CORRIDOR_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_STALAGMITE_5)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_RIGHT_STALACTITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_LEFT_STALACTITE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM_TOP_RIGHT_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALACTITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_LEFT_STALAGMITE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_RIGHT_STALAGMITE_4)
|
||||||
|
// Red Ice
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ZD_KING_ZORA_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ZD_ZORA_SHOP_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_ENTRANCE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_LOBBY_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_LOBBY_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_SPINNING_BLADE_EAST_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_SPINNING_BLADE_WEST_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_FREESTANDING_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_HEART_PIECE_ROOM_CHEST_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_ROOM_POT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MAP_ROOM_CHEST_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_SILVER_RUPEE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_MIDDLE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_NEAR_END_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_DOOR_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_WATER_TRIAL_RUSTED_SWITCH_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_WEST_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_WEST_MIDDLE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_WEST_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_LEDGE_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_LEDGE_MIDDLE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_HUB_LEDGE_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_COMPASS_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_MAP_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_SCARECROW_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_SCARECROW_MIDDLE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_ICE_CAVERN_MQ_SCARECROW_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_RIGHT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_BACK_LEFT_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_FIRST_ROOM_DOOR_RED_ICE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SILVER_RUPEE_RED_ICE)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_1)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_2)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_3)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_4)
|
||||||
|
RANDO_ENUM_ITEM(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_SECOND_DOOR_RED_ICE_5)
|
||||||
|
|
||||||
RANDO_ENUM_ITEM(RAND_INF_MAX)
|
RANDO_ENUM_ITEM(RAND_INF_MAX)
|
||||||
|
|
||||||
RANDO_ENUM_END(RandomizerInf)
|
RANDO_ENUM_END(RandomizerInf)
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,8 @@ RANDO_ENUM_ITEM(RCTYPE_BUTTERFLY_FAIRY) // Fairies from Butterflies
|
||||||
RANDO_ENUM_ITEM(RCTYPE_GRASS) // Grass
|
RANDO_ENUM_ITEM(RCTYPE_GRASS) // Grass
|
||||||
RANDO_ENUM_ITEM(RCTYPE_SIGN) // Signs
|
RANDO_ENUM_ITEM(RCTYPE_SIGN) // Signs
|
||||||
RANDO_ENUM_ITEM(RCTYPE_BEGGAR) // Beggar
|
RANDO_ENUM_ITEM(RCTYPE_BEGGAR) // Beggar
|
||||||
|
RANDO_ENUM_ITEM(RCTYPE_ICICLE) // Icicles
|
||||||
|
RANDO_ENUM_ITEM(RCTYPE_RED_ICE) // Red Ice
|
||||||
RANDO_ENUM_END(RandomizerCheckType)
|
RANDO_ENUM_END(RandomizerCheckType)
|
||||||
|
|
||||||
RANDO_ENUM_BEGIN(RandomizerCheckQuest)
|
RANDO_ENUM_BEGIN(RandomizerCheckQuest)
|
||||||
|
|
|
||||||
|
|
@ -945,6 +945,7 @@ RANDO_ENUM_ITEM(RR_ICE_CAVERN_MAP_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_ICE_CAVERN_COMPASS_ROOM)
|
RANDO_ENUM_ITEM(RR_ICE_CAVERN_COMPASS_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_ICE_CAVERN_BLOCK_ROOM)
|
RANDO_ENUM_ITEM(RR_ICE_CAVERN_BLOCK_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_ICE_CAVERN_BLOCK_ROOM_BLUE_FIRE)
|
RANDO_ENUM_ITEM(RR_ICE_CAVERN_BLOCK_ROOM_BLUE_FIRE)
|
||||||
|
RANDO_ENUM_ITEM(RR_ICE_CAVERN_AFTER_BLOCK_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_ICE_CAVERN_BEFORE_FINAL_ROOM)
|
RANDO_ENUM_ITEM(RR_ICE_CAVERN_BEFORE_FINAL_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_ICE_CAVERN_FINAL_ROOM)
|
RANDO_ENUM_ITEM(RR_ICE_CAVERN_FINAL_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_ICE_CAVERN_FINAL_ROOM_UNDERWATER)
|
RANDO_ENUM_ITEM(RR_ICE_CAVERN_FINAL_ROOM_UNDERWATER)
|
||||||
|
|
@ -987,6 +988,7 @@ RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_BOULDER_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM)
|
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK)
|
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_BEHIND_BLOCK)
|
||||||
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_ROOM_BEHIND_BLOCK)
|
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_ROOM_BEHIND_BLOCK)
|
||||||
|
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM_ALCOVE)
|
||||||
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE)
|
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM_LEDGE)
|
||||||
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_MAGENTA_FIRE_ROOM)
|
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_MAGENTA_FIRE_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM)
|
RANDO_ENUM_ITEM(RR_GERUDO_TRAINING_GROUND_MQ_STATUE_ROOM)
|
||||||
|
|
@ -1016,6 +1018,7 @@ RANDO_ENUM_ITEM(RR_GANONS_CASTLE_FIRE_TRIAL_FINAL_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM)
|
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM_END)
|
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLUE_FIRE_ROOM_END)
|
||||||
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM)
|
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM)
|
||||||
|
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM_SWITCH)
|
||||||
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM_END)
|
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_BLOCK_ROOM_END)
|
||||||
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_FINAL_ROOM)
|
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_WATER_TRIAL_FINAL_ROOM)
|
||||||
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_SHADOW_TRIAL_START)
|
RANDO_ENUM_ITEM(RR_GANONS_CASTLE_SHADOW_TRIAL_START)
|
||||||
|
|
|
||||||
|
|
@ -248,6 +248,8 @@ RANDO_ENUM_ITEM(RSK_LOCK_OVERWORLD_DOORS)
|
||||||
RANDO_ENUM_ITEM(RSK_SHUFFLE_GRASS)
|
RANDO_ENUM_ITEM(RSK_SHUFFLE_GRASS)
|
||||||
RANDO_ENUM_ITEM(RSK_SHUFFLE_SIGNS)
|
RANDO_ENUM_ITEM(RSK_SHUFFLE_SIGNS)
|
||||||
RANDO_ENUM_ITEM(RSK_ROCS_FEATHER)
|
RANDO_ENUM_ITEM(RSK_ROCS_FEATHER)
|
||||||
|
RANDO_ENUM_ITEM(RSK_SHUFFLE_ICICLES)
|
||||||
|
RANDO_ENUM_ITEM(RSK_SHUFFLE_RED_ICE)
|
||||||
RANDO_ENUM_ITEM(RSK_MAX)
|
RANDO_ENUM_ITEM(RSK_MAX)
|
||||||
RANDO_ENUM_END(RandomizerSettingKey)
|
RANDO_ENUM_END(RandomizerSettingKey)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -203,6 +203,10 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
|
||||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleSigns"), RO_GENERIC_NO)) &&
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleSigns"), RO_GENERIC_NO)) &&
|
||||||
(location.GetRCType() != RCTYPE_WONDER_ITEM ||
|
(location.GetRCType() != RCTYPE_WONDER_ITEM ||
|
||||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleWonderItems"), RO_GENERIC_NO)) &&
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleWonderItems"), RO_GENERIC_NO)) &&
|
||||||
|
(location.GetRCType() != RCTYPE_ICICLE ||
|
||||||
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleIcicles"), RO_GENERIC_NO)) &&
|
||||||
|
(location.GetRCType() != RCTYPE_RED_ICE ||
|
||||||
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleRedIce"), RO_GENERIC_NO)) &&
|
||||||
(location.GetRCType() != RCTYPE_FISH ||
|
(location.GetRCType() != RCTYPE_FISH ||
|
||||||
ctx->GetFishsanity()->GetFishLocationIncluded(&location, FSO_SOURCE_CVARS)) &&
|
ctx->GetFishsanity()->GetFishLocationIncluded(&location, FSO_SOURCE_CVARS)) &&
|
||||||
(location.GetRCType() != RCTYPE_ADULT_TRADE ||
|
(location.GetRCType() != RCTYPE_ADULT_TRADE ||
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,8 @@ bool showDungeonSigns;
|
||||||
bool showOverworldWonderItems;
|
bool showOverworldWonderItems;
|
||||||
bool showDungeonWonderItems;
|
bool showDungeonWonderItems;
|
||||||
bool showBeggar;
|
bool showBeggar;
|
||||||
|
bool showIcicles;
|
||||||
|
bool showRedIce;
|
||||||
bool showFrogSongRupees;
|
bool showFrogSongRupees;
|
||||||
bool showFountainFairies;
|
bool showFountainFairies;
|
||||||
bool showStoneFairies;
|
bool showStoneFairies;
|
||||||
|
|
@ -1514,6 +1516,8 @@ void LoadSettings() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
showBeggar = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_BEGGAR);
|
showBeggar = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_BEGGAR);
|
||||||
|
showIcicles = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_ICICLES);
|
||||||
|
showRedIce = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_RED_ICE);
|
||||||
} else { // Vanilla
|
} else { // Vanilla
|
||||||
showOverworldTokens = true;
|
showOverworldTokens = true;
|
||||||
showDungeonTokens = true;
|
showDungeonTokens = true;
|
||||||
|
|
@ -1530,6 +1534,8 @@ void LoadSettings() {
|
||||||
showOverworldWonderItems = false;
|
showOverworldWonderItems = false;
|
||||||
showDungeonWonderItems = false;
|
showDungeonWonderItems = false;
|
||||||
showBeggar = false;
|
showBeggar = false;
|
||||||
|
showIcicles = false;
|
||||||
|
showRedIce = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
fortressFast = false;
|
fortressFast = false;
|
||||||
|
|
@ -1654,6 +1660,8 @@ bool IsCheckShuffled(RandomizerCheck rc) {
|
||||||
(loc->GetRCType() != RCTYPE_WONDER_ITEM ||
|
(loc->GetRCType() != RCTYPE_WONDER_ITEM ||
|
||||||
(showOverworldWonderItems && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
(showOverworldWonderItems && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||||
(showDungeonWonderItems && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
(showDungeonWonderItems && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||||
|
(loc->GetRCType() != RCTYPE_ICICLE || showIcicles) &&
|
||||||
|
(loc->GetRCType() != RCTYPE_RED_ICE || showRedIce) &&
|
||||||
(loc->GetRCType() != RCTYPE_FISH ||
|
(loc->GetRCType() != RCTYPE_FISH ||
|
||||||
OTRGlobals::Instance->gRandoContext->GetFishsanity()->GetFishLocationIncluded(loc)) &&
|
OTRGlobals::Instance->gRandoContext->GetFishsanity()->GetFishLocationIncluded(loc)) &&
|
||||||
(loc->GetRCType() != RCTYPE_FREESTANDING ||
|
(loc->GetRCType() != RCTYPE_FREESTANDING ||
|
||||||
|
|
|
||||||
|
|
@ -841,6 +841,8 @@ void Settings::CreateOptions() {
|
||||||
OPT_U8(RSK_SHUFFLE_CRATES, "Shuffle Crates", {"Off", "Dungeons", "Overworld", "All Crates"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleCrates"), mOptionDescriptions[RSK_SHUFFLE_CRATES], WIDGET_CVAR_COMBOBOX, RO_SHUFFLE_CRATES_OFF);
|
OPT_U8(RSK_SHUFFLE_CRATES, "Shuffle Crates", {"Off", "Dungeons", "Overworld", "All Crates"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleCrates"), mOptionDescriptions[RSK_SHUFFLE_CRATES], WIDGET_CVAR_COMBOBOX, RO_SHUFFLE_CRATES_OFF);
|
||||||
OPT_BOOL(RSK_SHUFFLE_TREES, "Shuffle Trees", CVAR_RANDOMIZER_SETTING("ShuffleTrees"), mOptionDescriptions[RSK_SHUFFLE_TREES]);
|
OPT_BOOL(RSK_SHUFFLE_TREES, "Shuffle Trees", CVAR_RANDOMIZER_SETTING("ShuffleTrees"), mOptionDescriptions[RSK_SHUFFLE_TREES]);
|
||||||
OPT_BOOL(RSK_SHUFFLE_BUSHES, "Shuffle Bushes", CVAR_RANDOMIZER_SETTING("ShuffleBushes"), mOptionDescriptions[RSK_SHUFFLE_BUSHES]);
|
OPT_BOOL(RSK_SHUFFLE_BUSHES, "Shuffle Bushes", CVAR_RANDOMIZER_SETTING("ShuffleBushes"), mOptionDescriptions[RSK_SHUFFLE_BUSHES]);
|
||||||
|
OPT_BOOL(RSK_SHUFFLE_ICICLES, "Shuffle Icicles", CVAR_RANDOMIZER_SETTING("ShuffleIcicles"), mOptionDescriptions[RSK_SHUFFLE_ICICLES]);
|
||||||
|
OPT_BOOL(RSK_SHUFFLE_RED_ICE, "Shuffle Red Ice", CVAR_RANDOMIZER_SETTING("ShuffleRedIce"), mOptionDescriptions[RSK_SHUFFLE_RED_ICE]);
|
||||||
OPT_U8(RSK_SHUFFLE_SIGNS, "Shuffle Signs", {"Off", "Dungeons", "Overworld", "All Signs"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleSigns"), mOptionDescriptions[RSK_SHUFFLE_SIGNS], WIDGET_CVAR_COMBOBOX, RO_SHUFFLE_SIGNS_OFF);
|
OPT_U8(RSK_SHUFFLE_SIGNS, "Shuffle Signs", {"Off", "Dungeons", "Overworld", "All Signs"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleSigns"), mOptionDescriptions[RSK_SHUFFLE_SIGNS], WIDGET_CVAR_COMBOBOX, RO_SHUFFLE_SIGNS_OFF);
|
||||||
OPT_BOOL(RSK_SHUFFLE_FISHING_POLE, "Shuffle Fishing Pole", CVAR_RANDOMIZER_SETTING("ShuffleFishingPole"), mOptionDescriptions[RSK_SHUFFLE_FISHING_POLE]);
|
OPT_BOOL(RSK_SHUFFLE_FISHING_POLE, "Shuffle Fishing Pole", CVAR_RANDOMIZER_SETTING("ShuffleFishingPole"), mOptionDescriptions[RSK_SHUFFLE_FISHING_POLE]);
|
||||||
OPT_CALLBACK(RSK_SHUFFLE_FISHING_POLE, {
|
OPT_CALLBACK(RSK_SHUFFLE_FISHING_POLE, {
|
||||||
|
|
@ -1862,6 +1864,8 @@ void Settings::CreateOptions() {
|
||||||
&mOptions[RSK_SHUFFLE_CRATES],
|
&mOptions[RSK_SHUFFLE_CRATES],
|
||||||
&mOptions[RSK_SHUFFLE_TREES],
|
&mOptions[RSK_SHUFFLE_TREES],
|
||||||
&mOptions[RSK_SHUFFLE_BUSHES],
|
&mOptions[RSK_SHUFFLE_BUSHES],
|
||||||
|
&mOptions[RSK_SHUFFLE_ICICLES],
|
||||||
|
&mOptions[RSK_SHUFFLE_RED_ICE],
|
||||||
&mOptions[RSK_SHUFFLE_SIGNS],
|
&mOptions[RSK_SHUFFLE_SIGNS],
|
||||||
&mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES],
|
&mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES],
|
||||||
&mOptions[RSK_SHUFFLE_ADULT_TRADE],
|
&mOptions[RSK_SHUFFLE_ADULT_TRADE],
|
||||||
|
|
@ -2145,6 +2149,8 @@ void Settings::CreateOptions() {
|
||||||
&mOptions[RSK_SHUFFLE_CRATES],
|
&mOptions[RSK_SHUFFLE_CRATES],
|
||||||
&mOptions[RSK_SHUFFLE_TREES],
|
&mOptions[RSK_SHUFFLE_TREES],
|
||||||
&mOptions[RSK_SHUFFLE_BUSHES],
|
&mOptions[RSK_SHUFFLE_BUSHES],
|
||||||
|
&mOptions[RSK_SHUFFLE_ICICLES],
|
||||||
|
&mOptions[RSK_SHUFFLE_RED_ICE],
|
||||||
&mOptions[RSK_SHUFFLE_SIGNS],
|
&mOptions[RSK_SHUFFLE_SIGNS],
|
||||||
&mOptions[RSK_SHUFFLE_KOKIRI_SWORD],
|
&mOptions[RSK_SHUFFLE_KOKIRI_SWORD],
|
||||||
&mOptions[RSK_SHUFFLE_OCARINA],
|
&mOptions[RSK_SHUFFLE_OCARINA],
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,8 @@ class StaticData {
|
||||||
static void RegisterSignLocations();
|
static void RegisterSignLocations();
|
||||||
static void RegisterWonderItemLocations();
|
static void RegisterWonderItemLocations();
|
||||||
static void RegisterBeggarLocations();
|
static void RegisterBeggarLocations();
|
||||||
|
static void RegisterIcicleLocations();
|
||||||
|
static void RegisterRedIceLocations();
|
||||||
static void InitHashMaps();
|
static void InitHashMaps();
|
||||||
static std::array<std::pair<RandomizerCheck, RandomizerCheck>, 17> randomizerFishingPondFish;
|
static std::array<std::pair<RandomizerCheck, RandomizerCheck>, 17> randomizerFishingPondFish;
|
||||||
static std::unordered_map<int8_t, RandomizerCheck> randomizerGrottoFishMap;
|
static std::unordered_map<int8_t, RandomizerCheck> randomizerGrottoFishMap;
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,9 @@ void BgIceShelter_Init(Actor* thisx, PlayState* play) {
|
||||||
|
|
||||||
this->dyna.actor.colChkInfo.mass = MASS_IMMOVABLE;
|
this->dyna.actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||||
|
|
||||||
if (!((this->dyna.actor.params >> 6) & 1) && (Flags_GetSwitch(play, this->dyna.actor.params & 0x3F))) {
|
if (GameInteractor_Should(
|
||||||
|
VB_RED_ICE_MELTED_FLAG,
|
||||||
|
!((this->dyna.actor.params >> 6) & 1) && (Flags_GetSwitch(play, this->dyna.actor.params & 0x3F)), this)) {
|
||||||
Actor_Kill(&this->dyna.actor);
|
Actor_Kill(&this->dyna.actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -414,7 +416,7 @@ void BgIceShelter_Melt(BgIceShelter* this, PlayState* play) {
|
||||||
|
|
||||||
sSteamSpawnFuncs[type](this, play, particleSpawningChance, sSteamEffectScales[type]);
|
sSteamSpawnFuncs[type](this, play, particleSpawningChance, sSteamEffectScales[type]);
|
||||||
|
|
||||||
if (this->alpha <= 0) {
|
if (GameInteractor_Should(VB_RED_ICE_DROP_ITEM, this->alpha <= 0, this)) {
|
||||||
if (!((this->dyna.actor.params >> 6) & 1)) {
|
if (!((this->dyna.actor.params >> 6) & 1)) {
|
||||||
Flags_SetSwitch(play, this->dyna.actor.params & 0x3F);
|
Flags_SetSwitch(play, this->dyna.actor.params & 0x3F);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include "z_bg_ice_turara.h"
|
#include "z_bg_ice_turara.h"
|
||||||
#include "objects/object_ice_objects/object_ice_objects.h"
|
#include "objects/object_ice_objects/object_ice_objects.h"
|
||||||
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
|
||||||
#define FLAGS 0
|
#define FLAGS 0
|
||||||
|
|
||||||
|
|
@ -114,7 +115,7 @@ void BgIceTurara_Break(BgIceTurara* this, PlayState* play, f32 arg2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BgIceTurara_Stalagmite(BgIceTurara* this, PlayState* play) {
|
void BgIceTurara_Stalagmite(BgIceTurara* this, PlayState* play) {
|
||||||
if (this->collider.base.acFlags & AC_HIT) {
|
if (GameInteractor_Should(VB_STALAGMITE_DROP_ITEM, this->collider.base.acFlags & AC_HIT, this)) {
|
||||||
BgIceTurara_Break(this, play, 50.0f);
|
BgIceTurara_Break(this, play, 50.0f);
|
||||||
Actor_Kill(&this->dyna.actor);
|
Actor_Kill(&this->dyna.actor);
|
||||||
return;
|
return;
|
||||||
|
|
@ -165,7 +166,7 @@ void BgIceTurara_Fall(BgIceTurara* this, PlayState* play) {
|
||||||
this->dyna.actor.world.pos.y = this->dyna.actor.floorHeight;
|
this->dyna.actor.world.pos.y = this->dyna.actor.floorHeight;
|
||||||
}
|
}
|
||||||
BgIceTurara_Break(this, play, 40.0f);
|
BgIceTurara_Break(this, play, 40.0f);
|
||||||
if (this->dyna.actor.params == TURARA_STALACTITE_REGROW) {
|
if (GameInteractor_Should(VB_STALACTITE_DROP_ITEM, this->dyna.actor.params == TURARA_STALACTITE_REGROW, this)) {
|
||||||
this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y + 120.0f;
|
this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y + 120.0f;
|
||||||
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId);
|
func_8003EC50(play, &play->colCtx.dyna, this->dyna.bgId);
|
||||||
this->actionFunc = BgIceTurara_Regrow;
|
this->actionFunc = BgIceTurara_Regrow;
|
||||||
|
|
@ -198,4 +199,5 @@ void BgIceTurara_Update(Actor* thisx, PlayState* play) {
|
||||||
|
|
||||||
void BgIceTurara_Draw(Actor* thisx, PlayState* play) {
|
void BgIceTurara_Draw(Actor* thisx, PlayState* play) {
|
||||||
Gfx_DrawDListOpa(play, object_ice_objects_DL_0023D0);
|
Gfx_DrawDListOpa(play, object_ice_objects_DL_0023D0);
|
||||||
|
if (GameInteractor_Should(VB_ICICLE_SETUP_DRAW, true, thisx)) {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue