mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-21 05:43:42 -07:00
Merge 78d841e77d
into 6d4c6f8ea6
This commit is contained in:
commit
7aab55329d
31 changed files with 1481 additions and 20 deletions
|
@ -160,6 +160,35 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct ShipRandomizerSaveContextData {
|
typedef struct ShipRandomizerSaveContextData {
|
||||||
u8 triforcePiecesCollected;
|
u8 triforcePiecesCollected;
|
||||||
|
s8 silverShadowBlades;
|
||||||
|
s8 silverShadowPit;
|
||||||
|
s8 silverShadowSpikes;
|
||||||
|
s8 silverSpiritChild;
|
||||||
|
s8 silverSpiritSun;
|
||||||
|
s8 silverSpiritBoulders;
|
||||||
|
s8 silverBotw;
|
||||||
|
s8 silverIceCavernBlades;
|
||||||
|
s8 silverIceCavernBlock;
|
||||||
|
s8 silverGtgSlope;
|
||||||
|
s8 silverGtgLava;
|
||||||
|
s8 silverGtgWater;
|
||||||
|
s8 silverGanonLight;
|
||||||
|
s8 silverGanonForest;
|
||||||
|
s8 silverGanonFire;
|
||||||
|
s8 silverGanonSpirit;
|
||||||
|
s8 silverMqDodongosCavern;
|
||||||
|
s8 silverMqShadowBlades;
|
||||||
|
s8 silverMqShadowPit;
|
||||||
|
s8 silverMqShadowInvisibleBlades;
|
||||||
|
s8 silverMqShadowSpikes;
|
||||||
|
s8 silverMqSpiritLobby;
|
||||||
|
s8 silverMqSpiritBigWall;
|
||||||
|
s8 silverMqGtgSlope;
|
||||||
|
s8 silverMqGtgLava;
|
||||||
|
s8 silverMqGtgWater;
|
||||||
|
s8 silverMqGanonFire;
|
||||||
|
s8 silverMqGanonWater;
|
||||||
|
s8 silverMqGanonShadow;
|
||||||
} ShipRandomizerSaveContextData;
|
} ShipRandomizerSaveContextData;
|
||||||
|
|
||||||
typedef struct ShipBossRushSaveContextData {
|
typedef struct ShipBossRushSaveContextData {
|
||||||
|
|
|
@ -1926,6 +1926,14 @@ typedef enum {
|
||||||
// - None
|
// - None
|
||||||
VB_SHOW_TITLE_CARD,
|
VB_SHOW_TITLE_CARD,
|
||||||
|
|
||||||
|
// #### `result`
|
||||||
|
// ```c
|
||||||
|
// Flags_GetSwitch(play, this->switchFlag)
|
||||||
|
// ```
|
||||||
|
// #### `args`
|
||||||
|
// - *EnGSwitch
|
||||||
|
VB_SILVER_DESPAWN,
|
||||||
|
|
||||||
// #### `result`
|
// #### `result`
|
||||||
// ```c
|
// ```c
|
||||||
// (collectible >= 0) && (collectible <= 0x19
|
// (collectible >= 0) && (collectible <= 0x19
|
||||||
|
|
|
@ -6,6 +6,15 @@ namespace Rando {
|
||||||
void StaticData::HintTable_Init_Exclude_Dungeon() {
|
void StaticData::HintTable_Init_Exclude_Dungeon() {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
|
||||||
|
// TODO move these to region specific sections when hint text stable
|
||||||
|
hintTextTable[RHT_DODONGOS_CAVERN_SILVER] = HintText(CustomMessage("They say that silver in #Dodongo's Cavern# holds #[[1]]#.", TODO_TRANSLATE, "Selon moi, un Rubis d'argent dans la #Caverne Dodongo# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_SHADOW_TEMPLE_SILVER] = HintText(CustomMessage("They say that silver in #Shadow Temple# holds #[[1]]#.", TODO_TRANSLATE, "Selon moi, un Rubis d'argent dans le #Temple de l'Ombre# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_SPIRIT_TEMPLE_SILVER] = HintText(CustomMessage("They say that silver in #Spirit Temple# holds #[[1]]#.", TODO_TRANSLATE, "Selon moi, un Rubis d'argent dans le #Temple de l'Esprit# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_BOTW_SILVER] = HintText(CustomMessage("They say that silver in #Bottom of the Well# holds #[[1]]#.", TODO_TRANSLATE, "Selon moi, un Rubis d'argent dans le #Puits# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_ICE_CAVERN_SILVER] = HintText(CustomMessage("They say that silver in #Ice Cavern# holds #[[1]]#.", TODO_TRANSLATE, "Selon moi, un Rubis d'argent dans la #Caverne Polaire# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_GTG_SILVER] = HintText(CustomMessage("They say that silver in #Gerudo Training Ground# holds #[[1]]#.", TODO_TRANSLATE, "Selon moi, un Rubis d'argent dans le #Gymnase Gerudo# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_GANONS_CASTLE_SILVER] = HintText(CustomMessage("They say that silver in #Ganon's Castle# holds #[[1]]#.", TODO_TRANSLATE, "Selon moi, un Rubis d'argent dans le #Château de Ganon# cache #[[1]]#.", {QM_RED, QM_GREEN}));
|
||||||
|
|
||||||
/*--------------------------
|
/*--------------------------
|
||||||
| DEKU TREE |
|
| DEKU TREE |
|
||||||
---------------------------*/
|
---------------------------*/
|
||||||
|
|
|
@ -2091,6 +2091,8 @@ void StaticData::HintTable_Init_Item() {
|
||||||
}, {
|
}, {
|
||||||
CustomMessage("sack of mice", /*german*/"ein Sack Mäuse", /*french*/"un Sac rempli de souris")});
|
CustomMessage("sack of mice", /*german*/"ein Sack Mäuse", /*french*/"un Sac rempli de souris")});
|
||||||
|
|
||||||
|
hintTextTable[RHT_SILVER] = HintText(CustomMessage("a Silver Rupee", /*german*/ TODO_TRANSLATE, /*french*/ "un Rubis d'argent"));
|
||||||
|
|
||||||
hintTextTable[RHT_SKELETON_KEY] = HintText(CustomMessage("a Skeleton Key", /*german*/ "der Skelettschlüssel", /*french*/ "une Clé Squelette"),
|
hintTextTable[RHT_SKELETON_KEY] = HintText(CustomMessage("a Skeleton Key", /*german*/ "der Skelettschlüssel", /*french*/ "une Clé Squelette"),
|
||||||
// /*spanish*/una Llave Maestra
|
// /*spanish*/una Llave Maestra
|
||||||
{
|
{
|
||||||
|
|
|
@ -1057,6 +1057,9 @@ void GenerateItemPool() {
|
||||||
ctx->GetOption(RSK_SHUFFLE_FREESTANDING).Is(RO_SHUFFLE_FREESTANDING_ALL);
|
ctx->GetOption(RSK_SHUFFLE_FREESTANDING).Is(RO_SHUFFLE_FREESTANDING_ALL);
|
||||||
PlaceItemsForType(RCTYPE_FREESTANDING, overworldFreeStandingActive, dungeonFreeStandingActive);
|
PlaceItemsForType(RCTYPE_FREESTANDING, overworldFreeStandingActive, dungeonFreeStandingActive);
|
||||||
|
|
||||||
|
bool silverActive = ctx->GetOption(RSK_SHUFFLE_SILVER).Get();
|
||||||
|
PlaceItemsForType(RCTYPE_SILVER, silverActive, silverActive);
|
||||||
|
|
||||||
AddItemsToPool(ItemPool, alwaysItems);
|
AddItemsToPool(ItemPool, alwaysItems);
|
||||||
AddItemsToPool(ItemPool, dungeonRewards);
|
AddItemsToPool(ItemPool, dungeonRewards);
|
||||||
|
|
||||||
|
@ -1198,6 +1201,65 @@ void GenerateItemPool() {
|
||||||
AddItemToMainPool(RG_SHADOW_TEMPLE_BOSS_KEY);
|
AddItemToMainPool(RG_SHADOW_TEMPLE_BOSS_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ctx->GetOption(RSK_SHUFFLE_SILVER).Is(RO_SHUFFLE_SILVER_ON) ||
|
||||||
|
ctx->GetOption(RSK_SHUFFLE_SILVER).Is(RO_SHUFFLE_SILVER_WALLET)) {
|
||||||
|
bool isWallet = ctx->GetOption(RSK_SHUFFLE_SILVER).Is(RO_SHUFFLE_SILVER_WALLET);
|
||||||
|
auto dungeons = ctx->GetDungeons();
|
||||||
|
if (dungeons->GetDungeonFromScene(SCENE_DODONGOS_CAVERN)->IsMQ()) {
|
||||||
|
AddItemToMainPool(RG_DODONGOS_CAVERN_MQ_SILVER, isWallet ? 1 : 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dungeons->GetDungeonFromScene(SCENE_SHADOW_TEMPLE)->IsVanilla()) {
|
||||||
|
AddItemToMainPool(RG_SHADOW_SILVER_BLADES, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_SHADOW_SILVER_PIT, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_SHADOW_SILVER_SPIKES, isWallet ? 1 : 5);
|
||||||
|
} else {
|
||||||
|
AddItemToMainPool(RG_SHADOW_MQ_SILVER_BLADES, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_SHADOW_MQ_SILVER_PIT, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES, isWallet ? 1 : 10);
|
||||||
|
AddItemToMainPool(RG_SHADOW_MQ_SILVER_SPIKES, isWallet ? 1 : 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dungeons->GetDungeonFromScene(SCENE_SPIRIT_TEMPLE)->IsVanilla()) {
|
||||||
|
AddItemToMainPool(RG_SPIRIT_SILVER_CHILD, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_SPIRIT_SILVER_SUN, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_SPIRIT_SILVER_BOULDERS, isWallet ? 1 : 5);
|
||||||
|
} else {
|
||||||
|
AddItemToMainPool(RG_SPIRIT_MQ_SILVER_LOBBY, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_SPIRIT_MQ_SILVER_BIG_WALL, isWallet ? 1 : 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dungeons->GetDungeonFromScene(SCENE_BOTTOM_OF_THE_WELL)->IsVanilla()) {
|
||||||
|
AddItemToMainPool(RG_BOTW_SILVER, isWallet ? 1 : 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dungeons->GetDungeonFromScene(SCENE_ICE_CAVERN)->IsVanilla()) {
|
||||||
|
AddItemToMainPool(RG_ICE_CAVERN_SILVER_BLADES, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_ICE_CAVERN_SILVER_BLOCK, isWallet ? 1 : 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dungeons->GetDungeonFromScene(SCENE_GERUDO_TRAINING_GROUND)->IsVanilla()) {
|
||||||
|
AddItemToMainPool(RG_GTG_SILVER_SLOPE, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_GTG_SILVER_LAVA, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_GTG_SILVER_WATER, isWallet ? 1 : 5);
|
||||||
|
} else {
|
||||||
|
AddItemToMainPool(RG_GTG_MQ_SILVER_SLOPE, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_GTG_MQ_SILVER_LAVA, isWallet ? 1 : 6);
|
||||||
|
AddItemToMainPool(RG_GTG_MQ_SILVER_WATER, isWallet ? 1 : 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dungeons->GetDungeonFromScene(SCENE_INSIDE_GANONS_CASTLE)->IsVanilla()) {
|
||||||
|
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_LIGHT, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_FOREST, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_FIRE, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_SPIRIT, isWallet ? 1 : 5);
|
||||||
|
} else {
|
||||||
|
AddItemToMainPool(RG_GANONS_CASTLE_MQ_SILVER_FIRE, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_GANONS_CASTLE_MQ_SILVER_WATER, isWallet ? 1 : 5);
|
||||||
|
AddItemToMainPool(RG_GANONS_CASTLE_MQ_SILVER_SHADOW, isWallet ? 1 : 5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!ctx->GetOption(RSK_TRIFORCE_HUNT)) { // Don't add GBK to the pool at all for Triforce Hunt.
|
if (!ctx->GetOption(RSK_TRIFORCE_HUNT)) { // Don't add GBK to the pool at all for Triforce Hunt.
|
||||||
if (ctx->GetOption(RSK_GANONS_BOSS_KEY).Is(RO_GANON_BOSS_KEY_KAK_TOKENS)) {
|
if (ctx->GetOption(RSK_GANONS_BOSS_KEY).Is(RO_GANON_BOSS_KEY_KAK_TOKENS)) {
|
||||||
ctx->PlaceItemInLocation(RC_KAK_100_GOLD_SKULLTULA_REWARD, RG_GANONS_CASTLE_BOSS_KEY);
|
ctx->PlaceItemInLocation(RC_KAK_100_GOLD_SKULLTULA_REWARD, RG_GANONS_CASTLE_BOSS_KEY);
|
||||||
|
|
|
@ -54,6 +54,12 @@ void GenerateStartingInventory() {
|
||||||
AddItemToInventory(RG_SHADOW_TEMPLE_BOSS_KEY);
|
AddItemToInventory(RG_SHADOW_TEMPLE_BOSS_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ctx->GetOption(RSK_SHUFFLE_SILVER).Is(RO_SHUFFLE_SILVER_STARTWITH)) {
|
||||||
|
for (int rg = (int)RG_SHADOW_SILVER_BLADES; rg <= (int)RG_GANONS_CASTLE_MQ_SILVER_SHADOW; rg++) {
|
||||||
|
AddItemToInventory((RandomizerGet)rg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add Ganon's Boss key with Triforce Hunt so the game thinks it's obtainable from the start.
|
// Add Ganon's Boss key with Triforce Hunt so the game thinks it's obtainable from the start.
|
||||||
// During save init, the boss key isn't actually given and it's instead given when completing the triforce.
|
// During save init, the boss key isn't actually given and it's instead given when completing the triforce.
|
||||||
if (ctx->GetOption(RSK_GANONS_BOSS_KEY).Is(RO_GANON_BOSS_KEY_STARTWITH) || ctx->GetOption(RSK_TRIFORCE_HUNT)) {
|
if (ctx->GetOption(RSK_GANONS_BOSS_KEY).Is(RO_GANON_BOSS_KEY_STARTWITH) || ctx->GetOption(RSK_TRIFORCE_HUNT)) {
|
||||||
|
|
288
soh/soh/Enhancements/randomizer/ShuffleSilver.cpp
Normal file
288
soh/soh/Enhancements/randomizer/ShuffleSilver.cpp
Normal file
|
@ -0,0 +1,288 @@
|
||||||
|
#include <soh/OTRGlobals.h>
|
||||||
|
#include "dungeon.h"
|
||||||
|
#include "context.h"
|
||||||
|
#include "draw.h"
|
||||||
|
#include "static_data.h"
|
||||||
|
#include "soh/ObjectExtension/ObjectExtension.h"
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "overlays/actors/ovl_En_G_Switch/z_en_g_switch.h"
|
||||||
|
extern PlayState* gPlayState;
|
||||||
|
extern SaveContext gSaveContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool IsSilverCleared(s16 switchFlag) {
|
||||||
|
bool isMQ = Rando::Context::GetInstance()->GetDungeons()->GetDungeonFromScene(gPlayState->sceneNum)->IsMQ();
|
||||||
|
switch (gPlayState->sceneNum) {
|
||||||
|
case SCENE_DODONGOS_CAVERN:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverMqDodongosCavern >= 5;
|
||||||
|
case SCENE_SHADOW_TEMPLE:
|
||||||
|
switch (switchFlag) {
|
||||||
|
case 1:
|
||||||
|
|
||||||
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqShadowBlades >= 5
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverShadowBlades >= 5;
|
||||||
|
case 3:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverMqShadowInvisibleBlades >= 10;
|
||||||
|
case 8:
|
||||||
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqShadowSpikes >= 10
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverShadowSpikes >= 5;
|
||||||
|
case 9:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverShadowPit >= 5;
|
||||||
|
case 17:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverMqShadowPit >= 5;
|
||||||
|
}
|
||||||
|
case SCENE_SPIRIT_TEMPLE:
|
||||||
|
switch (switchFlag) {
|
||||||
|
case 0:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverMqSpiritBigWall;
|
||||||
|
case 2:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverSpiritBoulders;
|
||||||
|
case 5:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverSpiritChild;
|
||||||
|
case 10:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverSpiritSun;
|
||||||
|
case 55:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverMqSpiritLobby;
|
||||||
|
}
|
||||||
|
case SCENE_BOTTOM_OF_THE_WELL:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverBotw >= 5;
|
||||||
|
case SCENE_ICE_CAVERN:
|
||||||
|
switch (switchFlag) {
|
||||||
|
case 8:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverIceCavernBlock >= 5;
|
||||||
|
case 31:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverIceCavernBlades >= 5;
|
||||||
|
}
|
||||||
|
case SCENE_GERUDO_TRAINING_GROUND:
|
||||||
|
switch (switchFlag) {
|
||||||
|
case 12:
|
||||||
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqGtgLava >= 6
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverGtgLava >= 5;
|
||||||
|
case 27:
|
||||||
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqGtgWater >= 3
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverGtgWater >= 5;
|
||||||
|
case 28:
|
||||||
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqGtgSlope >= 5
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverGtgSlope >= 5;
|
||||||
|
}
|
||||||
|
case SCENE_INSIDE_GANONS_CASTLE:
|
||||||
|
switch (switchFlag) {
|
||||||
|
case 1:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverMqGanonFire >= 5;
|
||||||
|
case 2:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverMqGanonWater >= 5;
|
||||||
|
case 9:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverGanonFire >= 5;
|
||||||
|
case 11:
|
||||||
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqGanonShadow >= 5
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverGanonSpirit >= 5;
|
||||||
|
case 14:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverGanonForest >= 5;
|
||||||
|
case 18:
|
||||||
|
return gSaveContext.ship.quest.data.randomizer.silverGanonLight >= 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegisterShuffleSilver() {
|
||||||
|
bool shouldRegister = IS_RANDO && RAND_GET_OPTION(RSK_SHUFFLE_SILVER);
|
||||||
|
|
||||||
|
COND_VB_SHOULD(VB_SILVER_DESPAWN, shouldRegister, {
|
||||||
|
EnGSwitch* silver = va_arg(args, EnGSwitch*);
|
||||||
|
if (silver->type == ENGSWITCH_SILVER_RUPEE) {
|
||||||
|
auto silverIdentity = OTRGlobals::Instance->gRandomizer->IdentifySilver(
|
||||||
|
gPlayState->sceneNum, (s16)silver->actor.world.pos.x, (s16)silver->actor.world.pos.z);
|
||||||
|
*should = true;
|
||||||
|
LUSLOG_WARN("!!%d %d %d %d", silver->type, silverIdentity.randomizerCheck, (s16)silver->actor.world.pos.x,
|
||||||
|
(s16)silver->actor.world.pos.z);
|
||||||
|
if (silverIdentity.randomizerCheck == RC_UNKNOWN_CHECK ||
|
||||||
|
Flags_GetRandomizerInf(silverIdentity.randomizerInf)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto spawnedActor = (EnItem00*)Actor_Spawn(
|
||||||
|
&gPlayState->actorCtx, gPlayState, ACTOR_EN_ITEM00, silver->actor.world.pos.x,
|
||||||
|
silver->actor.world.pos.y, silver->actor.world.pos.z, 0, 0, 0, ITEM00_SOH_GIVE_ITEM_ENTRY, false);
|
||||||
|
LUSLOG_WARN("!!%p", spawnedActor);
|
||||||
|
spawnedActor->randoCheck = silverIdentity.randomizerCheck;
|
||||||
|
spawnedActor->randoInf = silverIdentity.randomizerInf;
|
||||||
|
spawnedActor->itemEntry = Rando::Context::GetInstance()->GetFinalGIEntry(
|
||||||
|
silverIdentity.randomizerCheck, true,
|
||||||
|
(GetItemID)Rando::StaticData::GetLocation(silverIdentity.randomizerCheck)->GetVanillaItem());
|
||||||
|
} else if (silver->type == ENGSWITCH_SILVER_TRACKER) {
|
||||||
|
if (IsSilverCleared(silver->switchFlag)) {
|
||||||
|
Flags_SetSwitch(gPlayState, silver->switchFlag);
|
||||||
|
}
|
||||||
|
*should = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void Rando::StaticData::RegisterSilverLocations() {
|
||||||
|
static bool registered = false;
|
||||||
|
if (registered)
|
||||||
|
return;
|
||||||
|
registered = true;
|
||||||
|
// clang-format off
|
||||||
|
locationTable[RC_SHADOW_SILVER_BLADES_1] = Location::Collectable(RC_SHADOW_SILVER_BLADES_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(3243, -1061), "RC_SHADOW_SILVER_BLADES_1", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_BLADES_1));
|
||||||
|
locationTable[RC_SHADOW_SILVER_BLADES_2] = Location::Collectable(RC_SHADOW_SILVER_BLADES_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(3007, -1222), "RC_SHADOW_SILVER_BLADES_2", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_BLADES_2));
|
||||||
|
locationTable[RC_SHADOW_SILVER_BLADES_3] = Location::Collectable(RC_SHADOW_SILVER_BLADES_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(3554, -1432), "RC_SHADOW_SILVER_BLADES_3", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_BLADES_3));
|
||||||
|
locationTable[RC_SHADOW_SILVER_BLADES_4] = Location::Collectable(RC_SHADOW_SILVER_BLADES_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2869, -948), "RC_SHADOW_SILVER_BLADES_4", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_BLADES_4));
|
||||||
|
locationTable[RC_SHADOW_SILVER_BLADES_5] = Location::Collectable(RC_SHADOW_SILVER_BLADES_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(3399, -838), "RC_SHADOW_SILVER_BLADES_5", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_BLADES_5));
|
||||||
|
locationTable[RC_SHADOW_SILVER_PIT_1] = Location::Collectable(RC_SHADOW_SILVER_PIT_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2131, 3030), "RC_SHADOW_SILVER_PIT_1", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_PIT_1));
|
||||||
|
locationTable[RC_SHADOW_SILVER_PIT_2] = Location::Collectable(RC_SHADOW_SILVER_PIT_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2115, 3738), "RC_SHADOW_SILVER_PIT_2", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_PIT_2));
|
||||||
|
locationTable[RC_SHADOW_SILVER_PIT_3] = Location::Collectable(RC_SHADOW_SILVER_PIT_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2110, 3368), "RC_SHADOW_SILVER_PIT_3", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_PIT_3));
|
||||||
|
locationTable[RC_SHADOW_SILVER_PIT_4] = Location::Collectable(RC_SHADOW_SILVER_PIT_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2243, 3361), "RC_SHADOW_SILVER_PIT_4", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_PIT_4));
|
||||||
|
locationTable[RC_SHADOW_SILVER_PIT_5] = Location::Collectable(RC_SHADOW_SILVER_PIT_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1998, 3358), "RC_SHADOW_SILVER_PIT_5", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_PIT_5));
|
||||||
|
locationTable[RC_SHADOW_SILVER_SPIKES_1] = Location::Collectable(RC_SHADOW_SILVER_SPIKES_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2042, 849), "RC_SHADOW_SILVER_SPIKES_1", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_SPIKES_1));
|
||||||
|
locationTable[RC_SHADOW_SILVER_SPIKES_2] = Location::Collectable(RC_SHADOW_SILVER_SPIKES_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2940, 1069), "RC_SHADOW_SILVER_SPIKES_2", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_SPIKES_2));
|
||||||
|
locationTable[RC_SHADOW_SILVER_SPIKES_3] = Location::Collectable(RC_SHADOW_SILVER_SPIKES_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2478, 1208), "RC_SHADOW_SILVER_SPIKES_3", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_SPIKES_3));
|
||||||
|
locationTable[RC_SHADOW_SILVER_SPIKES_4] = Location::Collectable(RC_SHADOW_SILVER_SPIKES_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2135, 1297), "RC_SHADOW_SILVER_SPIKES_4", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_SPIKES_4));
|
||||||
|
locationTable[RC_SHADOW_SILVER_SPIKES_5] = Location::Collectable(RC_SHADOW_SILVER_SPIKES_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2254, 988), "RC_SHADOW_SILVER_SPIKES_5", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_SILVER_SPIKES_5));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_CHILD_1] = Location::Collectable(RC_SPIRIT_SILVER_CHILD_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-766, -1075), "RC_SPIRIT_SILVER_CHILD_1", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_CHILD_1));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_CHILD_2] = Location::Collectable(RC_SPIRIT_SILVER_CHILD_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-672, -1075), "RC_SPIRIT_SILVER_CHILD_2", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_CHILD_2));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_CHILD_3] = Location::Collectable(RC_SPIRIT_SILVER_CHILD_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-511, -1075), "RC_SPIRIT_SILVER_CHILD_3", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_CHILD_3));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_CHILD_4] = Location::Collectable(RC_SPIRIT_SILVER_CHILD_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-347, -1075), "RC_SPIRIT_SILVER_CHILD_4", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_CHILD_4));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_CHILD_5] = Location::Collectable(RC_SPIRIT_SILVER_CHILD_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-335, -1409), "RC_SPIRIT_SILVER_CHILD_5", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_CHILD_5));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_SUN_1] = Location::Collectable(RC_SPIRIT_SILVER_SUN_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1836, -446), "RC_SPIRIT_SILVER_SUN_1", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_SUN_1));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_SUN_2] = Location::Collectable(RC_SPIRIT_SILVER_SUN_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1433, -283), "RC_SPIRIT_SILVER_SUN_2", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_SUN_2));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_SUN_3] = Location::Collectable(RC_SPIRIT_SILVER_SUN_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1275, -247), "RC_SPIRIT_SILVER_SUN_3", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_SUN_3));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_SUN_4] = Location::Collectable(RC_SPIRIT_SILVER_SUN_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1123, 428), "RC_SPIRIT_SILVER_SUN_4", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_SUN_4));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_SUN_5] = Location::Collectable(RC_SPIRIT_SILVER_SUN_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-984, -450), "RC_SPIRIT_SILVER_SUN_5", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_SUN_5));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_BOULDERS_1] = Location::Collectable(RC_SPIRIT_SILVER_BOULDERS_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1284, -1355), "RC_SPIRIT_SILVER_BOULDERS_1", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_BOULDERS_1));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_BOULDERS_2] = Location::Collectable(RC_SPIRIT_SILVER_BOULDERS_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1284, -813), "RC_SPIRIT_SILVER_BOULDERS_2", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_BOULDERS_2));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_BOULDERS_3] = Location::Collectable(RC_SPIRIT_SILVER_BOULDERS_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1856, -944), "RC_SPIRIT_SILVER_BOULDERS_3", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_BOULDERS_3));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_BOULDERS_4] = Location::Collectable(RC_SPIRIT_SILVER_BOULDERS_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1856, -1219), "RC_SPIRIT_SILVER_BOULDERS_4", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_BOULDERS_4));
|
||||||
|
locationTable[RC_SPIRIT_SILVER_BOULDERS_5] = Location::Collectable(RC_SPIRIT_SILVER_BOULDERS_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1573, -920), "RC_SPIRIT_SILVER_BOULDERS_5", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SILVER_BOULDERS_5));
|
||||||
|
locationTable[RC_BOTW_SILVER_1] = Location::Collectable(RC_BOTW_SILVER_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-796, -150), "RC_BOTW_SILVER_1", RHT_BOTW_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SILVER_1));
|
||||||
|
locationTable[RC_BOTW_SILVER_2] = Location::Collectable(RC_BOTW_SILVER_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-614, -297), "RC_BOTW_SILVER_2", RHT_BOTW_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SILVER_2));
|
||||||
|
locationTable[RC_BOTW_SILVER_3] = Location::Collectable(RC_BOTW_SILVER_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-560, -291), "RC_BOTW_SILVER_3", RHT_BOTW_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SILVER_3));
|
||||||
|
locationTable[RC_BOTW_SILVER_4] = Location::Collectable(RC_BOTW_SILVER_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-402, -401), "RC_BOTW_SILVER_4", RHT_BOTW_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SILVER_4));
|
||||||
|
locationTable[RC_BOTW_SILVER_5] = Location::Collectable(RC_BOTW_SILVER_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-259, -234), "RC_BOTW_SILVER_5", RHT_BOTW_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_SILVER_5));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLADES_1] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLADES_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(1, -143), "RC_ICE_CAVERN_SILVER_BLADES_1", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLADES_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLADES_2] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLADES_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(198, -388), "RC_ICE_CAVERN_SILVER_BLADES_2", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLADES_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLADES_3] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLADES_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(278, -637), "RC_ICE_CAVERN_SILVER_BLADES_3", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLADES_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLADES_4] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLADES_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(389, -382), "RC_ICE_CAVERN_SILVER_BLADES_4", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLADES_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLADES_5] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLADES_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(414, -579), "RC_ICE_CAVERN_SILVER_BLADES_5", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLADES_5));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLOCK_1] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLOCK_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1676, -552), "RC_ICE_CAVERN_SILVER_BLOCK_1", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLOCK_1));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLOCK_2] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLOCK_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1558, -951), "RC_ICE_CAVERN_SILVER_BLOCK_2", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLOCK_2));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLOCK_3] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLOCK_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1294, -899), "RC_ICE_CAVERN_SILVER_BLOCK_3", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLOCK_3));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLOCK_4] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLOCK_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1120, -1577), "RC_ICE_CAVERN_SILVER_BLOCK_4", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLOCK_4));
|
||||||
|
locationTable[RC_ICE_CAVERN_SILVER_BLOCK_5] = Location::Collectable(RC_ICE_CAVERN_SILVER_BLOCK_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1040, -485), "RC_ICE_CAVERN_SILVER_BLOCK_5", RHT_ICE_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLOCK_5));
|
||||||
|
locationTable[RC_GTG_SILVER_SLOPE_1] = Location::Collectable(RC_GTG_SILVER_SLOPE_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1332, -992), "RC_GTG_SILVER_SLOPE_1", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_SLOPE_1));
|
||||||
|
locationTable[RC_GTG_SILVER_SLOPE_2] = Location::Collectable(RC_GTG_SILVER_SLOPE_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1886, -956), "RC_GTG_SILVER_SLOPE_2", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_SLOPE_2));
|
||||||
|
locationTable[RC_GTG_SILVER_SLOPE_3] = Location::Collectable(RC_GTG_SILVER_SLOPE_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1579, -999), "RC_GTG_SILVER_SLOPE_3", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_SLOPE_3));
|
||||||
|
locationTable[RC_GTG_SILVER_SLOPE_4] = Location::Collectable(RC_GTG_SILVER_SLOPE_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1627, -1462), "RC_GTG_SILVER_SLOPE_4", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_SLOPE_4));
|
||||||
|
locationTable[RC_GTG_SILVER_SLOPE_5] = Location::Collectable(RC_GTG_SILVER_SLOPE_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1887, -2134), "RC_GTG_SILVER_SLOPE_5", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_SLOPE_5));
|
||||||
|
locationTable[RC_GTG_SILVER_LAVA_1] = Location::Collectable(RC_GTG_SILVER_LAVA_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1320, -1248), "RC_GTG_SILVER_LAVA_1", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_LAVA_1));
|
||||||
|
locationTable[RC_GTG_SILVER_LAVA_2] = Location::Collectable(RC_GTG_SILVER_LAVA_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1558, -1370), "RC_GTG_SILVER_LAVA_2", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_LAVA_2));
|
||||||
|
locationTable[RC_GTG_SILVER_LAVA_3] = Location::Collectable(RC_GTG_SILVER_LAVA_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1134, -1841), "RC_GTG_SILVER_LAVA_3", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_LAVA_3));
|
||||||
|
locationTable[RC_GTG_SILVER_LAVA_4] = Location::Collectable(RC_GTG_SILVER_LAVA_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1437, -2193), "RC_GTG_SILVER_LAVA_4", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_LAVA_4));
|
||||||
|
locationTable[RC_GTG_SILVER_LAVA_5] = Location::Collectable(RC_GTG_SILVER_LAVA_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1560, -1861), "RC_GTG_SILVER_LAVA_5", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_LAVA_5));
|
||||||
|
locationTable[RC_GTG_SILVER_WATER_1] = Location::Collectable(RC_GTG_SILVER_WATER_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(2308, -1464), "RC_GTG_SILVER_WATER_1", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_WATER_1));
|
||||||
|
locationTable[RC_GTG_SILVER_WATER_2] = Location::Collectable(RC_GTG_SILVER_WATER_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(2497, -1465), "RC_GTG_SILVER_WATER_2", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_WATER_2));
|
||||||
|
locationTable[RC_GTG_SILVER_WATER_3] = Location::Collectable(RC_GTG_SILVER_WATER_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(2453, -1612), "RC_GTG_SILVER_WATER_3", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_WATER_3));
|
||||||
|
locationTable[RC_GTG_SILVER_WATER_4] = Location::Collectable(RC_GTG_SILVER_WATER_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(2078, -1458), "RC_GTG_SILVER_WATER_4", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_WATER_4));
|
||||||
|
locationTable[RC_GTG_SILVER_WATER_5] = Location::Collectable(RC_GTG_SILVER_WATER_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(2160, -1315), "RC_GTG_SILVER_WATER_5", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_SILVER_WATER_5));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_LIGHT_1] = Location::Collectable(RC_GANONS_CASTLE_SILVER_LIGHT_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2509, -1091), "RC_GANONS_CASTLE_SILVER_LIGHT_1", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_LIGHT_2] = Location::Collectable(RC_GANONS_CASTLE_SILVER_LIGHT_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2649, -545), "RC_GANONS_CASTLE_SILVER_LIGHT_2", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_LIGHT_3] = Location::Collectable(RC_GANONS_CASTLE_SILVER_LIGHT_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2646, -839), "RC_GANONS_CASTLE_SILVER_LIGHT_3", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_LIGHT_4] = Location::Collectable(RC_GANONS_CASTLE_SILVER_LIGHT_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2680, -893), "RC_GANONS_CASTLE_SILVER_LIGHT_4", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_LIGHT_5] = Location::Collectable(RC_GANONS_CASTLE_SILVER_LIGHT_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2674, -777), "RC_GANONS_CASTLE_SILVER_LIGHT_5", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_5));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FOREST_1] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FOREST_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1247, 1787), "RC_GANONS_CASTLE_SILVER_FOREST_1", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FOREST_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FOREST_2] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FOREST_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1361, 1222), "RC_GANONS_CASTLE_SILVER_FOREST_2", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FOREST_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FOREST_3] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FOREST_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1538, 2225), "RC_GANONS_CASTLE_SILVER_FOREST_3", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FOREST_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FOREST_4] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FOREST_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1651, 2021), "RC_GANONS_CASTLE_SILVER_FOREST_4", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FOREST_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FOREST_5] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FOREST_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1634, 1550), "RC_GANONS_CASTLE_SILVER_FOREST_5", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FOREST_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FIRE_1] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FIRE_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-854, -3679), "RC_GANONS_CASTLE_SILVER_FIRE_1", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FIRE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FIRE_2] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FIRE_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1555, -2317), "RC_GANONS_CASTLE_SILVER_FIRE_2", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FIRE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FIRE_3] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FIRE_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-515, -3253), "RC_GANONS_CASTLE_SILVER_FIRE_3", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FIRE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FIRE_4] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FIRE_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-604, -2592), "RC_GANONS_CASTLE_SILVER_FIRE_4", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FIRE_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_FIRE_5] = Location::Collectable(RC_GANONS_CASTLE_SILVER_FIRE_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1867, -2754), "RC_GANONS_CASTLE_SILVER_FIRE_5", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FIRE_5));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_SPIRIT_1] = Location::Collectable(RC_GANONS_CASTLE_SILVER_SPIRIT_1, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-829, 591), "RC_GANONS_CASTLE_SILVER_SPIRIT_1", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_SPIRIT_2] = Location::Collectable(RC_GANONS_CASTLE_SILVER_SPIRIT_2, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-940, 270), "RC_GANONS_CASTLE_SILVER_SPIRIT_2", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_SPIRIT_3] = Location::Collectable(RC_GANONS_CASTLE_SILVER_SPIRIT_3, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-865, 656), "RC_GANONS_CASTLE_SILVER_SPIRIT_3", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_SPIRIT_4] = Location::Collectable(RC_GANONS_CASTLE_SILVER_SPIRIT_4, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-725, 942), "RC_GANONS_CASTLE_SILVER_SPIRIT_4", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_SILVER_SPIRIT_5] = Location::Collectable(RC_GANONS_CASTLE_SILVER_SPIRIT_5, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1142, 639), "RC_GANONS_CASTLE_SILVER_SPIRIT_5", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_5));
|
||||||
|
locationTable[RC_DODONGOS_CAVERN_MQ_SILVER_1] = Location::Collectable(RC_DODONGOS_CAVERN_MQ_SILVER_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2277, -1362), "RC_DODONGOS_CAVERN_MQ_SILVER_1", RHT_DODONGOS_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_1));
|
||||||
|
locationTable[RC_DODONGOS_CAVERN_MQ_SILVER_2] = Location::Collectable(RC_DODONGOS_CAVERN_MQ_SILVER_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2189, -1834), "RC_DODONGOS_CAVERN_MQ_SILVER_2", RHT_DODONGOS_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_2));
|
||||||
|
locationTable[RC_DODONGOS_CAVERN_MQ_SILVER_3] = Location::Collectable(RC_DODONGOS_CAVERN_MQ_SILVER_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2411, -1836), "RC_DODONGOS_CAVERN_MQ_SILVER_3", RHT_DODONGOS_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_3));
|
||||||
|
locationTable[RC_DODONGOS_CAVERN_MQ_SILVER_4] = Location::Collectable(RC_DODONGOS_CAVERN_MQ_SILVER_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1907, -1243), "RC_DODONGOS_CAVERN_MQ_SILVER_4", RHT_DODONGOS_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_4));
|
||||||
|
locationTable[RC_DODONGOS_CAVERN_MQ_SILVER_5] = Location::Collectable(RC_DODONGOS_CAVERN_MQ_SILVER_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1512, -1083), "RC_DODONGOS_CAVERN_MQ_SILVER_5", RHT_DODONGOS_CAVERN_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_5));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_BLADES_1] = Location::Collectable(RC_SHADOW_MQ_SILVER_BLADES_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2810, -961 ), "RC_SHADOW_MQ_SILVER_BLADES_1", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_BLADES_1));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_BLADES_2] = Location::Collectable(RC_SHADOW_MQ_SILVER_BLADES_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(3007, -1222), "RC_SHADOW_MQ_SILVER_BLADES_2", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_BLADES_2));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_BLADES_3] = Location::Collectable(RC_SHADOW_MQ_SILVER_BLADES_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(3243, -1061), "RC_SHADOW_MQ_SILVER_BLADES_3", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_BLADES_3));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_BLADES_4] = Location::Collectable(RC_SHADOW_MQ_SILVER_BLADES_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(3399, -838 ), "RC_SHADOW_MQ_SILVER_BLADES_4", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_BLADES_4));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_BLADES_5] = Location::Collectable(RC_SHADOW_MQ_SILVER_BLADES_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(3558, -1490), "RC_SHADOW_MQ_SILVER_BLADES_5", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_BLADES_5));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_PIT_1] = Location::Collectable(RC_SHADOW_MQ_SILVER_PIT_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1970, 3372), "RC_SHADOW_MQ_SILVER_PIT_1", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_PIT_1));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_PIT_2] = Location::Collectable(RC_SHADOW_MQ_SILVER_PIT_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2110, 3372), "RC_SHADOW_MQ_SILVER_PIT_2", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_PIT_2));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_PIT_3] = Location::Collectable(RC_SHADOW_MQ_SILVER_PIT_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2110, 3372), "RC_SHADOW_MQ_SILVER_PIT_3", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_PIT_3));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_PIT_4] = Location::Collectable(RC_SHADOW_MQ_SILVER_PIT_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2131, 3030), "RC_SHADOW_MQ_SILVER_PIT_4", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_PIT_4));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_PIT_5] = Location::Collectable(RC_SHADOW_MQ_SILVER_PIT_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2250, 3372), "RC_SHADOW_MQ_SILVER_PIT_5", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_PIT_5));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_1] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5089, 2049), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_1", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_1));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_2] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5158, 2315), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_2", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_2));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_3] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5217, 1852), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_3", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_3));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_4] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5270, 2453), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_4", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_4));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_5] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5404, 1977), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_5", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_5));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_6] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_6, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5466, 2243), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_6", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_6));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_7] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_7, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5489, 2476), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_7", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_7));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_8] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_8, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5601, 1898), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_8", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_8));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_9] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_9, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5637, 2134), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_9", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_9));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_10] = Location::Collectable(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_10, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(5667, 2686), "RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_10", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_10));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_1] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2042, 849), "RC_SHADOW_MQ_SILVER_SPIKES_1", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_1));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_2] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2135, 1297), "RC_SHADOW_MQ_SILVER_SPIKES_2", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_2));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_3] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2254, 988), "RC_SHADOW_MQ_SILVER_SPIKES_3", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_3));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_4] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2478, 893), "RC_SHADOW_MQ_SILVER_SPIKES_4", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_4));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_5] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2478, 1208), "RC_SHADOW_MQ_SILVER_SPIKES_5", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_5));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_6] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_6, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2478, 1200), "RC_SHADOW_MQ_SILVER_SPIKES_6", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_6));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_7] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_7, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2478, 1404), "RC_SHADOW_MQ_SILVER_SPIKES_7", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_7));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_8] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_8, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2705, 1089), "RC_SHADOW_MQ_SILVER_SPIKES_8", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_8));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_9] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_9, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2730, 876), "RC_SHADOW_MQ_SILVER_SPIKES_9", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_9));
|
||||||
|
locationTable[RC_SHADOW_MQ_SILVER_SPIKES_10] = Location::Collectable(RC_SHADOW_MQ_SILVER_SPIKES_10, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(2940, 1069), "RC_SHADOW_MQ_SILVER_SPIKES_10", RHT_SHADOW_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_MQ_SILVER_SPIKES_10));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_LOBBY_1] = Location::Collectable(RC_SPIRIT_MQ_SILVER_LOBBY_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1016, -73), "RC_SPIRIT_MQ_SILVER_LOBBY_1", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_1));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_LOBBY_2] = Location::Collectable(RC_SPIRIT_MQ_SILVER_LOBBY_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(160, 268), "RC_SPIRIT_MQ_SILVER_LOBBY_2", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_2));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_LOBBY_3] = Location::Collectable(RC_SPIRIT_MQ_SILVER_LOBBY_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-160, 270), "RC_SPIRIT_MQ_SILVER_LOBBY_3", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_3));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_LOBBY_4] = Location::Collectable(RC_SPIRIT_MQ_SILVER_LOBBY_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(967, -547), "RC_SPIRIT_MQ_SILVER_LOBBY_4", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_4));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_LOBBY_5] = Location::Collectable(RC_SPIRIT_MQ_SILVER_LOBBY_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(744, 4), "RC_SPIRIT_MQ_SILVER_LOBBY_5", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_5));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_BIG_WALL_1] = Location::Collectable(RC_SPIRIT_MQ_SILVER_BIG_WALL_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(723, -75), "RC_SPIRIT_MQ_SILVER_BIG_WALL_1", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_1));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_BIG_WALL_2] = Location::Collectable(RC_SPIRIT_MQ_SILVER_BIG_WALL_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(582, -75), "RC_SPIRIT_MQ_SILVER_BIG_WALL_2", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_2));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_BIG_WALL_3] = Location::Collectable(RC_SPIRIT_MQ_SILVER_BIG_WALL_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(754, -75), "RC_SPIRIT_MQ_SILVER_BIG_WALL_3", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_3));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_BIG_WALL_4] = Location::Collectable(RC_SPIRIT_MQ_SILVER_BIG_WALL_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(644, -75), "RC_SPIRIT_MQ_SILVER_BIG_WALL_4", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_4));
|
||||||
|
locationTable[RC_SPIRIT_MQ_SILVER_BIG_WALL_5] = Location::Collectable(RC_SPIRIT_MQ_SILVER_BIG_WALL_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(681, -75), "RC_SPIRIT_MQ_SILVER_BIG_WALL_5", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_5));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_SLOPE_1] = Location::Collectable(RC_GTG_MQ_SILVER_SLOPE_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1245, -2112), "RC_GTG_MQ_SILVER_SLOPE_1", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_SLOPE_1));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_SLOPE_2] = Location::Collectable(RC_GTG_MQ_SILVER_SLOPE_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1542, -1467), "RC_GTG_MQ_SILVER_SLOPE_2", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_SLOPE_2));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_SLOPE_3] = Location::Collectable(RC_GTG_MQ_SILVER_SLOPE_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1480, -1000), "RC_GTG_MQ_SILVER_SLOPE_3", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_SLOPE_3));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_SLOPE_4] = Location::Collectable(RC_GTG_MQ_SILVER_SLOPE_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1886, -956), "RC_GTG_MQ_SILVER_SLOPE_4", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_SLOPE_4));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_SLOPE_5] = Location::Collectable(RC_GTG_MQ_SILVER_SLOPE_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-1261, -923), "RC_GTG_MQ_SILVER_SLOPE_5", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_SLOPE_5));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_LAVA_1] = Location::Collectable(RC_GTG_MQ_SILVER_LAVA_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1560, -1861), "RC_GTG_MQ_SILVER_LAVA_1", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_LAVA_1));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_LAVA_2] = Location::Collectable(RC_GTG_MQ_SILVER_LAVA_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1134, -1841), "RC_GTG_MQ_SILVER_LAVA_2", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_LAVA_2));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_LAVA_3] = Location::Collectable(RC_GTG_MQ_SILVER_LAVA_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1404, -1653), "RC_GTG_MQ_SILVER_LAVA_3", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_LAVA_3));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_LAVA_4] = Location::Collectable(RC_GTG_MQ_SILVER_LAVA_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1560, -1380), "RC_GTG_MQ_SILVER_LAVA_4", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_LAVA_4));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_LAVA_5] = Location::Collectable(RC_GTG_MQ_SILVER_LAVA_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1083, -1374), "RC_GTG_MQ_SILVER_LAVA_5", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_LAVA_5));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_LAVA_6] = Location::Collectable(RC_GTG_MQ_SILVER_LAVA_6, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(1317, -1243), "RC_GTG_MQ_SILVER_LAVA_6", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_LAVA_6));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_WATER_1] = Location::Collectable(RC_GTG_MQ_SILVER_WATER_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(2453, -1612), "RC_GTG_MQ_SILVER_WATER_1", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_WATER_1));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_WATER_2] = Location::Collectable(RC_GTG_MQ_SILVER_WATER_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(2302, -1464), "RC_GTG_MQ_SILVER_WATER_2", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_WATER_2));
|
||||||
|
locationTable[RC_GTG_MQ_SILVER_WATER_3] = Location::Collectable(RC_GTG_MQ_SILVER_WATER_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(2160, -1315), "RC_GTG_MQ_SILVER_WATER_3", RHT_GTG_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GTG_MQ_SILVER_WATER_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_FIRE_1] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_FIRE_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-970, -3747), "RC_GANONS_CASTLE_MQ_SILVER_FIRE_1", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_FIRE_2] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_FIRE_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1891, -2753), "RC_GANONS_CASTLE_MQ_SILVER_FIRE_2", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_FIRE_3] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_FIRE_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2044, -3354), "RC_GANONS_CASTLE_MQ_SILVER_FIRE_3", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_FIRE_4] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_FIRE_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-686, -2945), "RC_GANONS_CASTLE_MQ_SILVER_FIRE_4", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_FIRE_5] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_FIRE_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1655, -2133), "RC_GANONS_CASTLE_MQ_SILVER_FIRE_5", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_5));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_WATER_1] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_WATER_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2757, -765), "RC_GANONS_CASTLE_MQ_SILVER_WATER_1", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_WATER_2] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_WATER_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2912, -971), "RC_GANONS_CASTLE_MQ_SILVER_WATER_2", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_WATER_3] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_WATER_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2905, -1478), "RC_GANONS_CASTLE_MQ_SILVER_WATER_3", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_WATER_4] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_WATER_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3253, -649), "RC_GANONS_CASTLE_MQ_SILVER_WATER_4", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_WATER_5] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_WATER_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2905, -1263), "RC_GANONS_CASTLE_MQ_SILVER_WATER_5", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_5));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_SHADOW_1] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_1, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1322, -2262), "RC_GANONS_CASTLE_MQ_SILVER_SHADOW_1", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_1));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_SHADOW_2] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_2, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1279, -3111), "RC_GANONS_CASTLE_MQ_SILVER_SHADOW_2", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_2));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_SHADOW_3] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_3, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1529, -4117), "RC_GANONS_CASTLE_MQ_SILVER_SHADOW_3", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_3));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_SHADOW_4] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_4, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1829, -4071), "RC_GANONS_CASTLE_MQ_SILVER_SHADOW_4", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_4));
|
||||||
|
locationTable[RC_GANONS_CASTLE_MQ_SILVER_SHADOW_5] = Location::Collectable(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_5, RCQUEST_MQ, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1100, -2554), "RC_GANONS_CASTLE_MQ_SILVER_SHADOW_5", RHT_GANONS_CASTLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_5));
|
||||||
|
// clang-format on
|
||||||
|
}
|
||||||
|
|
||||||
|
static ObjectExtension::Register<SilverIdentity> RegisterSilverIdentity;
|
||||||
|
static RegisterShipInitFunc registerShuffleSilver(RegisterShuffleSilver, { "IS_RANDO" });
|
||||||
|
static RegisterShipInitFunc registerShuffleSilverLocations(Rando::StaticData::RegisterSilverLocations);
|
|
@ -194,6 +194,7 @@ void Context::GenerateLocationPool() {
|
||||||
(location.GetRCType() == RCTYPE_FAIRY && !mOptions[RSK_SHUFFLE_FAIRIES]) ||
|
(location.GetRCType() == RCTYPE_FAIRY && !mOptions[RSK_SHUFFLE_FAIRIES]) ||
|
||||||
(location.GetRCType() == RCTYPE_FREESTANDING &&
|
(location.GetRCType() == RCTYPE_FREESTANDING &&
|
||||||
mOptions[RSK_SHUFFLE_FREESTANDING].Is(RO_SHUFFLE_FREESTANDING_OFF)) ||
|
mOptions[RSK_SHUFFLE_FREESTANDING].Is(RO_SHUFFLE_FREESTANDING_OFF)) ||
|
||||||
|
(location.GetRCType() == RCTYPE_SILVER && !mOptions[RSK_SHUFFLE_SILVER]) ||
|
||||||
(location.GetRCType() == RCTYPE_BEEHIVE && !mOptions[RSK_SHUFFLE_BEEHIVES])) {
|
(location.GetRCType() == RCTYPE_BEEHIVE && !mOptions[RSK_SHUFFLE_BEEHIVES])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ extern "C" {
|
||||||
#include "objects/object_gi_compass/object_gi_compass.h"
|
#include "objects/object_gi_compass/object_gi_compass.h"
|
||||||
#include "objects/object_gi_map/object_gi_map.h"
|
#include "objects/object_gi_map/object_gi_map.h"
|
||||||
#include "objects/object_gi_hearts/object_gi_hearts.h"
|
#include "objects/object_gi_hearts/object_gi_hearts.h"
|
||||||
|
#include "objects/object_gi_rupy/object_gi_rupy.h"
|
||||||
#include "objects/object_gi_scale/object_gi_scale.h"
|
#include "objects/object_gi_scale/object_gi_scale.h"
|
||||||
#include "objects/object_gi_fire/object_gi_fire.h"
|
#include "objects/object_gi_fire/object_gi_fire.h"
|
||||||
#include "objects/object_fish/object_fish.h"
|
#include "objects/object_fish/object_fish.h"
|
||||||
|
@ -34,6 +35,7 @@ extern "C" {
|
||||||
#include "overlays/ovl_Boss_Sst/ovl_Boss_Sst.h"
|
#include "overlays/ovl_Boss_Sst/ovl_Boss_Sst.h"
|
||||||
#include "objects/object_tw/object_tw.h"
|
#include "objects/object_tw/object_tw.h"
|
||||||
#include "objects/object_ganon2/object_ganon2.h"
|
#include "objects/object_ganon2/object_ganon2.h"
|
||||||
|
#include "objects/object_mo/object_mo.h"
|
||||||
extern PlayState* gPlayState;
|
extern PlayState* gPlayState;
|
||||||
extern SaveContext gSaveContext;
|
extern SaveContext gSaveContext;
|
||||||
}
|
}
|
||||||
|
@ -1109,6 +1111,27 @@ extern "C" void Randomizer_DrawBronzeScale(PlayState* play, GetItemEntry* getIte
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" void Randomizer_DrawSilverRupee(PlayState* play, GetItemEntry* getItemEntry) {
|
||||||
|
OPEN_DISPS(play->state.gfxCtx);
|
||||||
|
|
||||||
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
|
|
||||||
|
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
|
||||||
|
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||||
|
|
||||||
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0x80, 255, 255, 255, 255);
|
||||||
|
gDPSetEnvColor(POLY_OPA_DISP++, 255 / 5, 255 / 5, 255 / 5, 255);
|
||||||
|
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiRupeeInnerDL);
|
||||||
|
|
||||||
|
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||||
|
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||||
|
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, 255, 255, 255, 255);
|
||||||
|
gDPSetEnvColor(POLY_XLU_DISP++, 255 * 0.75f, 255 * 0.75f, 255 * 0.75f, 255);
|
||||||
|
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gGiRupeeOuterDL);
|
||||||
|
|
||||||
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" void Randomizer_DrawFishingPoleGI(PlayState* play, GetItemEntry* getItemEntry) {
|
extern "C" void Randomizer_DrawFishingPoleGI(PlayState* play, GetItemEntry* getItemEntry) {
|
||||||
Vec3f pos;
|
Vec3f pos;
|
||||||
OPEN_DISPS(play->state.gfxCtx);
|
OPEN_DISPS(play->state.gfxCtx);
|
||||||
|
|
|
@ -21,6 +21,7 @@ void Randomizer_DrawTriforcePiece(PlayState* play, GetItemEntry getItemEntry);
|
||||||
void Randomizer_DrawTriforcePieceGI(PlayState* play, GetItemEntry getItemEntry);
|
void Randomizer_DrawTriforcePieceGI(PlayState* play, GetItemEntry getItemEntry);
|
||||||
void Randomizer_DrawOcarinaButton(PlayState* play, GetItemEntry* getItemEntry);
|
void Randomizer_DrawOcarinaButton(PlayState* play, GetItemEntry* getItemEntry);
|
||||||
void Randomizer_DrawBronzeScale(PlayState* play, GetItemEntry* getItemEntry);
|
void Randomizer_DrawBronzeScale(PlayState* play, GetItemEntry* getItemEntry);
|
||||||
|
void Randomizer_DrawSilverRupee(PlayState* play, GetItemEntry* getItemEntry);
|
||||||
void Randomizer_DrawFishingPoleGI(PlayState* play, GetItemEntry* getItemEntry);
|
void Randomizer_DrawFishingPoleGI(PlayState* play, GetItemEntry* getItemEntry);
|
||||||
void Randomizer_DrawSkeletonKey(PlayState* play, GetItemEntry* getItemEntry);
|
void Randomizer_DrawSkeletonKey(PlayState* play, GetItemEntry* getItemEntry);
|
||||||
void Randomizer_DrawMysteryItem(PlayState* play, GetItemEntry* getItemEntry);
|
void Randomizer_DrawMysteryItem(PlayState* play, GetItemEntry* getItemEntry);
|
||||||
|
|
|
@ -241,6 +241,65 @@ void Rando::StaticData::InitItemTable() {
|
||||||
itemTable[RG_GANONS_CASTLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing);
|
itemTable[RG_GANONS_CASTLE_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing);
|
||||||
itemTable[RG_TREASURE_GAME_KEY_RING] = Item(RG_TREASURE_GAME_KEY_RING, Text{ "Chest Game Key Ring", "Trousseau du jeu la Chasse-aux-Trésors", "Schlüsselbund (Truhenlotterie)" }, ITEMTYPE_SMALLKEY, 0xDE, true, LOGIC_TREASURE_GAME_KEYS, RHT_TREASURE_GAME_KEY_RING, RG_TREASURE_GAME_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
itemTable[RG_TREASURE_GAME_KEY_RING] = Item(RG_TREASURE_GAME_KEY_RING, Text{ "Chest Game Key Ring", "Trousseau du jeu la Chasse-aux-Trésors", "Schlüsselbund (Truhenlotterie)" }, ITEMTYPE_SMALLKEY, 0xDE, true, LOGIC_TREASURE_GAME_KEYS, RHT_TREASURE_GAME_KEY_RING, RG_TREASURE_GAME_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
itemTable[RG_TREASURE_GAME_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing);
|
itemTable[RG_TREASURE_GAME_KEY_RING].SetCustomDrawFunc(Randomizer_DrawKeyRing);
|
||||||
|
// Silver Rupees
|
||||||
|
itemTable[RG_SHADOW_SILVER_BLADES] = Item(RG_SHADOW_SILVER_BLADES, Text{ "Shadow Silver: Blades", "Rubis d'argent du Temple de l'Ombre: Lames", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SHADOW_SILVER_BLADES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SHADOW_SILVER_PIT] = Item(RG_SHADOW_SILVER_PIT, Text{ "Shadow Silver: Pit", "Rubis d'argent du Temple de l'Ombre: Trou", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SHADOW_SILVER_PIT].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SHADOW_SILVER_SPIKES] = Item(RG_SHADOW_SILVER_SPIKES, Text{ "Shadow Silver: Spikes", "Rubis d'argent du Temple de l'Ombre: Pics", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SHADOW_SILVER_SPIKES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SPIRIT_SILVER_CHILD] = Item(RG_SPIRIT_SILVER_CHILD, Text{ "Spirit Silver: Child", "Rubis d'argent du Temple de l'Esprit: Enfant", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SPIRIT_SILVER_CHILD].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SPIRIT_SILVER_SUN] = Item(RG_SPIRIT_SILVER_SUN, Text{ "Spirit Silver: Sun", "Rubis d'argent du Temple de l'Esprit: Soleil", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SPIRIT_SILVER_SUN].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SPIRIT_SILVER_BOULDERS] = Item(RG_SPIRIT_SILVER_BOULDERS, Text{ "Spirit Silver: Boulders", "Rubis d'argent du Temple de l'Esprit: Rochers", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SPIRIT_SILVER_BOULDERS].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_BOTW_SILVER] = Item(RG_BOTW_SILVER, Text{ "Bottom of the Well Silver", "Rubis d'argent du Puits", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_BOTW_SILVER].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_ICE_CAVERN_SILVER_BLADES] = Item(RG_ICE_CAVERN_SILVER_BLADES, Text{ "Ice Cavern Silver: Blades", "Rubis d'argent de la Caverne Polaire: Lames", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_ICE_CAVERN_SILVER_BLADES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_ICE_CAVERN_SILVER_BLOCK] = Item(RG_ICE_CAVERN_SILVER_BLOCK, Text{ "Ice Cavern Silver: Block", "Rubis d'argent de la Caverne Polaire: Blocs", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_ICE_CAVERN_SILVER_BLOCK].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GTG_SILVER_SLOPE] = Item(RG_GTG_SILVER_SLOPE, Text{ "Training Ground Silver: Slope", "Rubis d'argent du Gymnase Gerudo: Pente", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GTG_SILVER_SLOPE].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GTG_SILVER_LAVA] = Item(RG_GTG_SILVER_LAVA, Text{ "Training Ground Silver: Lava", "Rubis d'argent du Gymnase Gerudo: Lave", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GTG_SILVER_LAVA].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GTG_SILVER_WATER] = Item(RG_GTG_SILVER_WATER, Text{ "Training Ground Silver: Water", "Rubis d'argent du Gymnase Gerudo: Eau", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GTG_SILVER_WATER].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GANONS_CASTLE_SILVER_LIGHT] = Item(RG_GANONS_CASTLE_SILVER_LIGHT, Text{ "Ganon's Castle Silver: Light", "Rubis d'argent du Château de Ganon: Lumière", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GANONS_CASTLE_SILVER_LIGHT].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GANONS_CASTLE_SILVER_FOREST] = Item(RG_GANONS_CASTLE_SILVER_FOREST, Text{ "Ganon's Castle Silver: Forest", "Rubis d'argent du Château de Ganon: Fôret", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GANONS_CASTLE_SILVER_FOREST].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GANONS_CASTLE_SILVER_FIRE] = Item(RG_GANONS_CASTLE_SILVER_FIRE, Text{ "Ganon's Castle Silver: Fire", "Rubis d'argent du Château de Ganon: Feu", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GANONS_CASTLE_SILVER_FIRE].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GANONS_CASTLE_SILVER_SPIRIT] = Item(RG_GANONS_CASTLE_SILVER_SPIRIT, Text{ "Ganon's Castle Silver: Spirit", "Rubis d'argent du Château de Ganon: Esprit", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GANONS_CASTLE_SILVER_SPIRIT].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_DODONGOS_CAVERN_MQ_SILVER] = Item(RG_DODONGOS_CAVERN_MQ_SILVER, Text{ "Dodongo's Cavern Silver", "Rubis d'argent de la Caverne Dodongo", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_DODONGOS_CAVERN_MQ_SILVER].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SHADOW_MQ_SILVER_BLADES] = Item(RG_SHADOW_MQ_SILVER_BLADES, Text{ "Shadow Silver: Blades", "Rubis d'argent du Temple de l'Ombre: Lames", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SHADOW_MQ_SILVER_BLADES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SHADOW_MQ_SILVER_PIT] = Item(RG_SHADOW_MQ_SILVER_PIT, Text{ "Shadow Silver: Pit", "Rubis d'argent du Temple de l'Ombre: Trou", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SHADOW_MQ_SILVER_PIT].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES] = Item(RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES, Text{ "Shadow Silver: Invisible Blades", "Rubis d'argent du Temple de l'Ombre: Lames Invisibles", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SHADOW_MQ_SILVER_SPIKES] = Item(RG_SHADOW_MQ_SILVER_SPIKES, Text{ "Shadow Silver: Spikes", "Rubis d'argent du Temple de l'Ombre: Pics", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SHADOW_MQ_SILVER_SPIKES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SPIRIT_MQ_SILVER_LOBBY] = Item(RG_SPIRIT_MQ_SILVER_LOBBY, Text{ "Spirit Silver: Lobby", "Rubis d'argent du Temple de l'Esprit: Hall d'entrée", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SPIRIT_MQ_SILVER_LOBBY].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_SPIRIT_MQ_SILVER_BIG_WALL] = Item(RG_SPIRIT_MQ_SILVER_BIG_WALL, Text{ "Spirit Silver: Big Wall", "Rubis d'argent du Temple de l'Esprit: Grand Mur", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_SPIRIT_MQ_SILVER_BIG_WALL].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GTG_MQ_SILVER_SLOPE] = Item(RG_GTG_MQ_SILVER_SLOPE, Text{ "Training Ground Silver: Slope", "Rubis d'argent du Gymnase Gerudo: Pente", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GTG_MQ_SILVER_SLOPE].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GTG_MQ_SILVER_LAVA] = Item(RG_GTG_MQ_SILVER_LAVA, Text{ "Training Ground Silver: Lava", "Rubis d'argent du Gymnase Gerudo: Lave", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GTG_MQ_SILVER_LAVA].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GTG_MQ_SILVER_WATER] = Item(RG_GTG_MQ_SILVER_WATER, Text{ "Training Ground Silver: Water", "Rubis d'argent du Gymnase Gerudo: Eau", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GTG_MQ_SILVER_WATER].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GANONS_CASTLE_MQ_SILVER_FIRE] = Item(RG_GANONS_CASTLE_MQ_SILVER_FIRE, Text{ "Ganon's Castle Silver: Fire", "Rubis d'argent du Château de Ganon: Feu", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GANONS_CASTLE_MQ_SILVER_FIRE].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GANONS_CASTLE_MQ_SILVER_WATER] = Item(RG_GANONS_CASTLE_MQ_SILVER_WATER, Text{ "Ganon's Castle Silver: Water", "Rubis d'argent du Château de Ganon: Eau", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GANONS_CASTLE_MQ_SILVER_WATER].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
|
itemTable[RG_GANONS_CASTLE_MQ_SILVER_SHADOW] = Item(RG_GANONS_CASTLE_MQ_SILVER_SHADOW, Text{ "Ganon's Castle Silver: Shadow", "Rubis d'argent du Château de Ganon: Ombre", TODO_TRANSLATE }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_SILVER, RG_NONE, OBJECT_GI_RUPY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY,MOD_RANDOMIZER);
|
||||||
|
itemTable[RG_GANONS_CASTLE_MQ_SILVER_SHADOW].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
// Dungeon Rewards
|
// Dungeon Rewards
|
||||||
itemTable[RG_KOKIRI_EMERALD] = Item(RG_KOKIRI_EMERALD, Text{ "Kokiri's Emerald", "Émeraude Kokiri", "Kokiri-Smaragd" }, ITEMTYPE_DUNGEONREWARD, 0xCB, true, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE);
|
itemTable[RG_KOKIRI_EMERALD] = Item(RG_KOKIRI_EMERALD, Text{ "Kokiri's Emerald", "Émeraude Kokiri", "Kokiri-Smaragd" }, ITEMTYPE_DUNGEONREWARD, 0xCB, true, LOGIC_KOKIRI_EMERALD, RHT_KOKIRI_EMERALD, ITEM_KOKIRI_EMERALD, OBJECT_GI_JEWEL, GID_KOKIRI_EMERALD, 0x80, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE);
|
||||||
itemTable[RG_GORON_RUBY] = Item(RG_GORON_RUBY, Text{ "Goron's Ruby", "Rubis Goron", "Goronen-Rubin" }, ITEMTYPE_DUNGEONREWARD, 0xCC, true, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE);
|
itemTable[RG_GORON_RUBY] = Item(RG_GORON_RUBY, Text{ "Goron's Ruby", "Rubis Goron", "Goronen-Rubin" }, ITEMTYPE_DUNGEONREWARD, 0xCC, true, LOGIC_GORON_RUBY, RHT_GORON_RUBY, ITEM_GORON_RUBY, OBJECT_GI_JEWEL, GID_GORON_RUBY, 0x81, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE);
|
||||||
|
@ -349,7 +408,7 @@ void Rando::StaticData::InitItemTable() {
|
||||||
itemTable[RG_OCARINA_C_RIGHT_BUTTON] = Item(RG_OCARINA_C_RIGHT_BUTTON, Text{ "Ocarina C Right Button", "Touche C-Droit de l'Ocarina", "C-Rechts-Taste der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, RG_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
|
itemTable[RG_OCARINA_C_RIGHT_BUTTON] = Item(RG_OCARINA_C_RIGHT_BUTTON, Text{ "Ocarina C Right Button", "Touche C-Droit de l'Ocarina", "C-Rechts-Taste der Okarina" }, ITEMTYPE_ITEM, GI_MAP, true, LOGIC_OCARINA_C_RIGHT_BUTTON, RHT_OCARINA_C_RIGHT_BUTTON, RG_OCARINA_C_RIGHT_BUTTON, OBJECT_GI_MAP, GID_STONE_OF_AGONY, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
|
||||||
itemTable[RG_OCARINA_C_RIGHT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton);
|
itemTable[RG_OCARINA_C_RIGHT_BUTTON].SetCustomDrawFunc(Randomizer_DrawOcarinaButton);
|
||||||
|
|
||||||
itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, Text{ "Bronze Scale", "Écaille de Bronze", "Bronzene Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_PROGRESSIVE_WALLET, RHT_BRONZE_SCALE, RG_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
|
itemTable[RG_BRONZE_SCALE] = Item(RG_BRONZE_SCALE, Text{ "Bronze Scale", "Écaille de Bronze", "Bronzene Schuppe" }, ITEMTYPE_ITEM, GI_SCALE_SILVER, true, LOGIC_NONE, RHT_BRONZE_SCALE, RG_BRONZE_SCALE, OBJECT_GI_SCALE, GID_SCALE_SILVER, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
|
||||||
itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale);
|
itemTable[RG_BRONZE_SCALE].SetCustomDrawFunc(Randomizer_DrawBronzeScale);
|
||||||
|
|
||||||
itemTable[RG_BOMBCHU_BAG] = Item(RG_BOMBCHU_BAG, Text{ "Bombchu Bag", "Sac de Missiles Teigneux", "Krabbelminentasche" }, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, RG_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
|
itemTable[RG_BOMBCHU_BAG] = Item(RG_BOMBCHU_BAG, Text{ "Bombchu Bag", "Sac de Missiles Teigneux", "Krabbelminentasche" }, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, RG_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
|
||||||
|
|
|
@ -156,6 +156,11 @@ void RegionTable_Init_BottomOfTheWell() {
|
||||||
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_BEHIND_ROCKS_GRASS_7, logic->CanCutShrubs() && logic->BlastOrSmash()),
|
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_BEHIND_ROCKS_GRASS_7, logic->CanCutShrubs() && logic->BlastOrSmash()),
|
||||||
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_BEHIND_ROCKS_GRASS_8, logic->CanCutShrubs() && logic->BlastOrSmash()),
|
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_BEHIND_ROCKS_GRASS_8, logic->CanCutShrubs() && logic->BlastOrSmash()),
|
||||||
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_BEHIND_ROCKS_GRASS_9, logic->CanCutShrubs() && logic->BlastOrSmash()),
|
LOCATION(RC_BOTTOM_OF_THE_WELL_BASEMENT_BEHIND_ROCKS_GRASS_9, logic->CanCutShrubs() && logic->BlastOrSmash()),
|
||||||
|
LOCATION(RC_BOTW_SILVER_1, true),
|
||||||
|
LOCATION(RC_BOTW_SILVER_2, true),
|
||||||
|
LOCATION(RC_BOTW_SILVER_3, true),
|
||||||
|
LOCATION(RC_BOTW_SILVER_4, true),
|
||||||
|
LOCATION(RC_BOTW_SILVER_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM, []{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}),
|
Entrance(RR_BOTTOM_OF_THE_WELL_SOUTHWEST_ROOM, []{return logic->IsChild && logic->CanPassEnemy(RE_BIG_SKULLTULA);}),
|
||||||
|
|
|
@ -313,6 +313,11 @@ void RegionTable_Init_DodongosCavern() {
|
||||||
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4, logic->CanBreakPots()),
|
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4, logic->CanBreakPots()),
|
||||||
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_LOWER_CRATE_1, logic->CanBreakCrates()),
|
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_LOWER_CRATE_1, logic->CanBreakCrates()),
|
||||||
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_LOWER_CRATE_2, logic->CanBreakCrates()),
|
LOCATION(RC_DODONGOS_CAVERN_MQ_STAIRCASE_LOWER_CRATE_2, logic->CanBreakCrates()),
|
||||||
|
LOCATION(RC_DODONGOS_CAVERN_MQ_SILVER_1, true),
|
||||||
|
LOCATION(RC_DODONGOS_CAVERN_MQ_SILVER_2, true),
|
||||||
|
LOCATION(RC_DODONGOS_CAVERN_MQ_SILVER_3, true),
|
||||||
|
LOCATION(RC_DODONGOS_CAVERN_MQ_SILVER_4, true),
|
||||||
|
LOCATION(RC_DODONGOS_CAVERN_MQ_SILVER_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_DODONGOS_CAVERN_MQ_LOBBY, []{return true;}),
|
Entrance(RR_DODONGOS_CAVERN_MQ_LOBBY, []{return true;}),
|
||||||
|
|
|
@ -60,6 +60,11 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_CHEST, logic->CanKillEnemy(RE_WOLFOS)),
|
LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_CHEST, logic->CanKillEnemy(RE_WOLFOS)),
|
||||||
LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_1, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || (logic->CanUse(RG_DINS_FIRE) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))),
|
LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_1, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || (logic->CanUse(RG_DINS_FIRE) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))),
|
||||||
LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_2, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || (logic->CanUse(RG_DINS_FIRE) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))),
|
LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_2, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || (logic->CanUse(RG_DINS_FIRE) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FOREST_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FOREST_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FOREST_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FOREST_4, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FOREST_5, true),
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
areaTable[RR_GANONS_CASTLE_FIRE_TRIAL] = Region("Ganon's Castle Fire Trial", SCENE_INSIDE_GANONS_CASTLE, {
|
areaTable[RR_GANONS_CASTLE_FIRE_TRIAL] = Region("Ganon's Castle Fire Trial", SCENE_INSIDE_GANONS_CASTLE, {
|
||||||
|
@ -70,6 +75,11 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_POT_1, logic->CanBreakPots() && logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS) && logic->CanUse(RG_LONGSHOT)),
|
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_POT_1, logic->CanBreakPots() && logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS) && logic->CanUse(RG_LONGSHOT)),
|
||||||
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_POT_2, logic->CanBreakPots() && logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS) && logic->CanUse(RG_LONGSHOT)),
|
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_POT_2, logic->CanBreakPots() && logic->CanUse(RG_GORON_TUNIC) && logic->CanUse(RG_GOLDEN_GAUNTLETS) && logic->CanUse(RG_LONGSHOT)),
|
||||||
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_HEART, logic->CanUse(RG_GORON_TUNIC)),
|
LOCATION(RC_GANONS_CASTLE_FIRE_TRIAL_HEART, logic->CanUse(RG_GORON_TUNIC)),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FIRE_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FIRE_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FIRE_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FIRE_4, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_FIRE_5, true),
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
areaTable[RR_GANONS_CASTLE_WATER_TRIAL] = Region("Ganon's Castle Water Trial", SCENE_INSIDE_GANONS_CASTLE, {
|
areaTable[RR_GANONS_CASTLE_WATER_TRIAL] = Region("Ganon's Castle Water Trial", SCENE_INSIDE_GANONS_CASTLE, {
|
||||||
|
@ -114,6 +124,11 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)))),
|
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)))),
|
||||||
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)),
|
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)),
|
||||||
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_HEART, true),
|
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_HEART, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_SPIRIT_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_SPIRIT_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_SPIRIT_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_SPIRIT_4, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_SPIRIT_5, true),
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
areaTable[RR_GANONS_CASTLE_LIGHT_TRIAL] = Region("Ganon's Castle Light Trial", SCENE_INSIDE_GANONS_CASTLE, {
|
areaTable[RR_GANONS_CASTLE_LIGHT_TRIAL] = Region("Ganon's Castle Light Trial", SCENE_INSIDE_GANONS_CASTLE, {
|
||||||
|
@ -132,6 +147,11 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1, logic->CanBreakPots() && logic->SmallKeys(RR_GANONS_CASTLE, 2)),
|
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1, logic->CanBreakPots() && logic->SmallKeys(RR_GANONS_CASTLE, 2)),
|
||||||
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1, logic->CanBreakPots() && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_GANONS_CASTLE, 2) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1, logic->CanBreakPots() && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_GANONS_CASTLE, 2) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2, logic->CanBreakPots() && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_GANONS_CASTLE, 2) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
LOCATION(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2, logic->CanBreakPots() && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_GANONS_CASTLE, 2) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_LIGHT_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_LIGHT_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_LIGHT_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_LIGHT_4, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_SILVER_LIGHT_5, true),
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
@ -216,7 +236,14 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
Entrance(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM, []{return true;}),
|
Entrance(RR_GANONS_CASTLE_MQ_FOREST_TRIAL_BEAMOS_ROOM, []{return true;}),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_GANONS_CASTLE_MQ_FIRE_TRIAL_MAIN_ROOM] = Region("Ganon's Castle MQ Fire Trial Main Room", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
|
areaTable[RR_GANONS_CASTLE_MQ_FIRE_TRIAL_MAIN_ROOM] = Region("Ganon's Castle MQ Fire Trial Main Room", SCENE_INSIDE_GANONS_CASTLE, {}, {
|
||||||
|
//Locations
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_FIRE_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_FIRE_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_FIRE_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_FIRE_4, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_FIRE_5, true),
|
||||||
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_GANONS_CASTLE_MQ_MAIN, []{return true;}),
|
Entrance(RR_GANONS_CASTLE_MQ_MAIN, []{return true;}),
|
||||||
//2 checks, 1 for the rupees, 1 for actually making it, as the rupees are permanent but throwing a pillar is not
|
//2 checks, 1 for the rupees, 1 for actually making it, as the rupees are permanent but throwing a pillar is not
|
||||||
|
@ -246,7 +273,14 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
Entrance(RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM, []{return logic->SmallKeys(RR_GANONS_CASTLE, 3) && Here(RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM, []{return logic->BlueFire();});}),
|
Entrance(RR_GANONS_CASTLE_MQ_WATER_TRIAL_BLOCK_ROOM, []{return logic->SmallKeys(RR_GANONS_CASTLE, 3) && Here(RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM, []{return logic->BlueFire();});}),
|
||||||
});
|
});
|
||||||
|
|
||||||
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, {}, {
|
||||||
|
//Locations
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_WATER_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_WATER_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_WATER_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_WATER_4, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_WATER_5, true),
|
||||||
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM, []{return logic->SmallKeys(RR_GANONS_CASTLE, 3);}),
|
Entrance(RR_GANONS_CASTLE_MQ_WATER_TRIAL_GEYSER_ROOM, []{return logic->SmallKeys(RR_GANONS_CASTLE, 3);}),
|
||||||
//This assumes there's no way for child to have blue fire and not adult.
|
//This assumes there's no way for child to have blue fire and not adult.
|
||||||
|
@ -310,6 +344,12 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
areaTable[RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_FAR_SIDE] = Region("Ganon's Castle MQ Shadow Trial Far Side", SCENE_INSIDE_GANONS_CASTLE, {}, {
|
areaTable[RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_FAR_SIDE] = Region("Ganon's Castle MQ Shadow Trial Far Side", SCENE_INSIDE_GANONS_CASTLE, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_EYE_SWITCH_CHEST, logic->CanHitEyeTargets()),
|
LOCATION(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_EYE_SWITCH_CHEST, logic->CanHitEyeTargets()),
|
||||||
|
// TODO move these to their proper region
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_1, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_2, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_3, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_4, true),
|
||||||
|
LOCATION(RC_GANONS_CASTLE_MQ_SILVER_SHADOW_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_BEAMOS_TORCH, []{return logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_HOVER_BOOTS);}),
|
Entrance(RR_GANONS_CASTLE_MQ_SHADOW_TRIAL_BEAMOS_TORCH, []{return logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_HOVER_BOOTS);}),
|
||||||
|
|
|
@ -25,6 +25,11 @@ void RegionTable_Init_GerudoTrainingGround() {
|
||||||
LOCATION(RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, logic->CanUse(RG_SONG_OF_STORMS)),
|
LOCATION(RC_GERUDO_TRAINING_GROUND_ENTRANCE_STORMS_FAIRY, logic->CanUse(RG_SONG_OF_STORMS)),
|
||||||
LOCATION(RC_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART, true),
|
LOCATION(RC_GERUDO_TRAINING_GROUND_BEAMOS_SOUTH_HEART, true),
|
||||||
LOCATION(RC_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, true),
|
LOCATION(RC_GERUDO_TRAINING_GROUND_BEAMOS_EAST_HEART, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_SLOPE_1, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_SLOPE_2, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_SLOPE_3, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_SLOPE_4, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_SLOPE_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_GERUDO_TRAINING_GROUND_ENTRYWAY, []{return true;}),
|
Entrance(RR_GERUDO_TRAINING_GROUND_ENTRYWAY, []{return true;}),
|
||||||
|
@ -59,6 +64,16 @@ void RegionTable_Init_GerudoTrainingGround() {
|
||||||
areaTable[RR_GERUDO_TRAINING_GROUND_LAVA_ROOM] = Region("Gerudo Training Ground Lava Room", SCENE_GERUDO_TRAINING_GROUND, {}, {
|
areaTable[RR_GERUDO_TRAINING_GROUND_LAVA_ROOM] = Region("Gerudo Training Ground Lava Room", SCENE_GERUDO_TRAINING_GROUND, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_SONG_OF_TIME) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24),
|
LOCATION(RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_SONG_OF_TIME) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24),
|
||||||
|
LOCATION(RC_GTG_SILVER_LAVA_1, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_LAVA_2, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_LAVA_3, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_LAVA_4, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_LAVA_5, true),
|
||||||
|
LOCATION(RC_GTG_SILVER_WATER_1, logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_SONG_OF_TIME) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24),
|
||||||
|
LOCATION(RC_GTG_SILVER_WATER_2, logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_SONG_OF_TIME) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24),
|
||||||
|
LOCATION(RC_GTG_SILVER_WATER_3, logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_SONG_OF_TIME) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24),
|
||||||
|
LOCATION(RC_GTG_SILVER_WATER_4, logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_SONG_OF_TIME) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24),
|
||||||
|
LOCATION(RC_GTG_SILVER_WATER_5, logic->CanUse(RG_HOOKSHOT) && logic->CanUse(RG_SONG_OF_TIME) && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_GERUDO_TRAINING_GROUND_CENTRAL_MAZE_RIGHT, []{return logic->CanUse(RG_SONG_OF_TIME) || logic->IsChild;}),
|
Entrance(RR_GERUDO_TRAINING_GROUND_CENTRAL_MAZE_RIGHT, []{return logic->CanUse(RG_SONG_OF_TIME) || logic->IsChild;}),
|
||||||
|
@ -170,7 +185,14 @@ void RegionTable_Init_GerudoTrainingGround() {
|
||||||
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE, []{return Here(RR_GERUDO_TRAINING_GROUND_MQ_SAND_ROOM, []{return logic->CanKillEnemy(RE_IRON_KNUCKLE);});}),
|
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE, []{return Here(RR_GERUDO_TRAINING_GROUND_MQ_SAND_ROOM, []{return logic->CanKillEnemy(RE_IRON_KNUCKLE);});}),
|
||||||
});
|
});
|
||||||
|
|
||||||
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE] = Region("Gerudo Training Ground MQ Left Side", SCENE_GERUDO_TRAINING_GROUND, {}, {}, {
|
areaTable[RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE] = Region("Gerudo Training Ground MQ Left Side", SCENE_GERUDO_TRAINING_GROUND, {}, {
|
||||||
|
//Locations
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_SLOPE_1, true),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_SLOPE_2, true),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_SLOPE_3, true),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_SLOPE_4, true),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_SLOPE_5, true),
|
||||||
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_SAND_ROOM, []{return true;}),
|
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_SAND_ROOM, []{return true;}),
|
||||||
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_STALFOS_ROOM, []{return Here(RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE, []{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, []{return Here(RR_GERUDO_TRAINING_GROUND_MQ_LEFT_SIDE, []{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));});}),
|
||||||
|
@ -276,7 +298,14 @@ void RegionTable_Init_GerudoTrainingGround() {
|
||||||
//Events
|
//Events
|
||||||
//this torch shot is possible as child but tight and obtuse enough to be a trick
|
//this torch shot is possible as child but tight and obtuse enough to be a trick
|
||||||
EventAccess(&logic->GTGPlatformSilverRupees, []{return ((logic->CanUse(RG_FAIRY_BOW) && logic->IsAdult) || logic->CanUse(RG_FIRE_ARROWS)) && logic->CanUse(RG_HOVER_BOOTS);}),
|
EventAccess(&logic->GTGPlatformSilverRupees, []{return ((logic->CanUse(RG_FAIRY_BOW) && logic->IsAdult) || logic->CanUse(RG_FIRE_ARROWS)) && logic->CanUse(RG_HOVER_BOOTS);}),
|
||||||
}, {}, {
|
}, {
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_LAVA_1, logic->GTGPlatformSilverRupees),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_LAVA_2, logic->GTGPlatformSilverRupees),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_LAVA_3, logic->GTGPlatformSilverRupees),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_LAVA_4, logic->GTGPlatformSilverRupees),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_LAVA_5, logic->GTGPlatformSilverRupees),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_LAVA_6, logic->GTGPlatformSilverRupees),
|
||||||
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS, []{return ((logic->CanUse(RG_FAIRY_BOW) && logic->IsAdult) || logic->CanUse(RG_FIRE_ARROWS)) && logic->CanUse(RG_HOVER_BOOTS);}),
|
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS, []{return ((logic->CanUse(RG_FAIRY_BOW) && logic->IsAdult) || logic->CanUse(RG_FIRE_ARROWS)) && logic->CanUse(RG_HOVER_BOOTS);}),
|
||||||
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_PLATFORMS_UNLIT_TORCH, []{return (logic->CanUse(RG_FAIRY_BOW) && logic->IsAdult) || logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_LONGSHOT);}),
|
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_PLATFORMS_UNLIT_TORCH, []{return (logic->CanUse(RG_FAIRY_BOW) && logic->IsAdult) || logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_LONGSHOT);}),
|
||||||
|
@ -288,6 +317,9 @@ void RegionTable_Init_GerudoTrainingGround() {
|
||||||
//Locations
|
//Locations
|
||||||
//it is possible to snipe the stingers with bow or sling before dropping in, or just get really lucky, and avoid needing to take damage, but that might be trick worthy
|
//it is possible to snipe the stingers with bow or sling before dropping in, or just get really lucky, and avoid needing to take damage, but that might be trick worthy
|
||||||
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, logic->HasFireSource() && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24 && logic->HasItem(RG_BRONZE_SCALE) && logic->TakeDamage()),
|
LOCATION(RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, logic->HasFireSource() && logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 24 && logic->HasItem(RG_BRONZE_SCALE) && logic->TakeDamage()),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_WATER_1, true),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_WATER_2, true),
|
||||||
|
LOCATION(RC_GTG_MQ_SILVER_WATER_3, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_PLATFORMS_UNLIT_TORCH, []{return true;}),
|
Entrance(RR_GERUDO_TRAINING_GROUND_MQ_PLATFORMS_UNLIT_TORCH, []{return true;}),
|
||||||
|
|
|
@ -53,6 +53,16 @@ void RegionTable_Init_IceCavern() {
|
||||||
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_BOOMERANG))),
|
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_1, logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_BOOMERANG))),
|
||||||
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_BOOMERANG))),
|
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_2, logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_BOOMERANG))),
|
||||||
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_BOOMERANG))),
|
LOCATION(RC_ICE_CAVERN_SLIDING_BLOCK_RUPEE_3, logic->BlueFire() && (logic->CanUse(RG_SONG_OF_TIME) || logic->CanUse(RG_BOOMERANG))),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLADES_1, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLADES_2, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLADES_3, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLADES_4, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLADES_5, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLOCK_1, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLOCK_2, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLOCK_3, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLOCK_4, true),
|
||||||
|
LOCATION(RC_ICE_CAVERN_SILVER_BLOCK_5, true),
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
|
@ -46,6 +46,12 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
LOCATION(RC_SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST, logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT)),
|
LOCATION(RC_SHADOW_TEMPLE_EARLY_SILVER_RUPEE_CHEST, logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_HOOKSHOT)),
|
||||||
LOCATION(RC_SHADOW_TEMPLE_GS_NEAR_SHIP, false),
|
LOCATION(RC_SHADOW_TEMPLE_GS_NEAR_SHIP, false),
|
||||||
LOCATION(RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, logic->CanUse(RG_SONG_OF_STORMS)),
|
LOCATION(RC_SHADOW_TEMPLE_BEAMOS_STORM_FAIRY, logic->CanUse(RG_SONG_OF_STORMS)),
|
||||||
|
// TODO which of these require hoverboots/hookshot?
|
||||||
|
LOCATION(RC_SHADOW_SILVER_BLADES_1, true),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_BLADES_2, true),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_BLADES_3, true),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_BLADES_4, true),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_BLADES_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_HUGE_PIT, []{return logic->HasExplosives() && logic->IsAdult && logic->SmallKeys(RR_SHADOW_TEMPLE, 1, 2);}),
|
Entrance(RR_SHADOW_TEMPLE_HUGE_PIT, []{return logic->HasExplosives() && logic->IsAdult && logic->SmallKeys(RR_SHADOW_TEMPLE, 1, 2);}),
|
||||||
|
@ -72,6 +78,16 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
LOCATION(RC_SHADOW_TEMPLE_INVISIBLE_BLADES_LEFT_HEART, (logic->CanUse(RG_SONG_OF_TIME) && logic->IsAdult) || logic->CanUse(RG_BOOMERANG)),
|
LOCATION(RC_SHADOW_TEMPLE_INVISIBLE_BLADES_LEFT_HEART, (logic->CanUse(RG_SONG_OF_TIME) && logic->IsAdult) || logic->CanUse(RG_BOOMERANG)),
|
||||||
LOCATION(RC_SHADOW_TEMPLE_INVISIBLE_BLADES_RIGHT_HEART, (logic->CanUse(RG_SONG_OF_TIME) && logic->IsAdult) || logic->CanUse(RG_BOOMERANG)),
|
LOCATION(RC_SHADOW_TEMPLE_INVISIBLE_BLADES_RIGHT_HEART, (logic->CanUse(RG_SONG_OF_TIME) && logic->IsAdult) || logic->CanUse(RG_BOOMERANG)),
|
||||||
LOCATION(RC_SHADOW_TEMPLE_PIT_STORM_FAIRY, logic->CanUse(RG_SONG_OF_STORMS)),
|
LOCATION(RC_SHADOW_TEMPLE_PIT_STORM_FAIRY, logic->CanUse(RG_SONG_OF_STORMS)),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_PIT_1, true),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_PIT_2, true),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_PIT_3, true),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_PIT_4, true),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_PIT_5, true),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_SPIKES_1, logic->SmallKeys(RR_SHADOW_TEMPLE, 2, 3) && ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_SPIKES_2, logic->SmallKeys(RR_SHADOW_TEMPLE, 2, 3) && ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_SPIKES_3, logic->SmallKeys(RR_SHADOW_TEMPLE, 2, 3) && ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_SPIKES_4, logic->SmallKeys(RR_SHADOW_TEMPLE, 2, 3) && ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
|
LOCATION(RC_SHADOW_SILVER_SPIKES_5, logic->SmallKeys(RR_SHADOW_TEMPLE, 2, 3) && ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_WIND_TUNNEL, []{return ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_SHADOW_TEMPLE, 3, 4);}),
|
Entrance(RR_SHADOW_TEMPLE_WIND_TUNNEL, []{return ((ctx->GetTrickOption(RT_LENS_SHADOW_PLATFORM) && ctx->GetTrickOption(RT_LENS_SHADOW)) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(RG_HOOKSHOT) && logic->SmallKeys(RR_SHADOW_TEMPLE, 3, 4);}),
|
||||||
|
@ -171,6 +187,11 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
areaTable[RR_SHADOW_TEMPLE_MQ_B2_SPINNING_BLADE_ROOM] = Region("Shadow Temple MQ B2 Spinning Blade Room", SCENE_SHADOW_TEMPLE, {}, {
|
areaTable[RR_SHADOW_TEMPLE_MQ_B2_SPINNING_BLADE_ROOM] = Region("Shadow Temple MQ B2 Spinning Blade Room", SCENE_SHADOW_TEMPLE, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_SHADOW_TEMPLE_MQ_MAP_CHEST, logic->CanPassEnemy(RE_BIG_SKULLTULA) && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))),
|
LOCATION(RC_SHADOW_TEMPLE_MQ_MAP_CHEST, logic->CanPassEnemy(RE_BIG_SKULLTULA) && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)))),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_BLADES_1, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_BLADES_2, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_BLADES_3, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_BLADES_4, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_BLADES_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_FIRST_BEAMOS, []{return Here(RR_SHADOW_TEMPLE_MQ_B2_SPINNING_BLADE_ROOM, []{return logic->CanKillEnemy(RE_BIG_SKULLTULA) && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)));});}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_FIRST_BEAMOS, []{return Here(RR_SHADOW_TEMPLE_MQ_B2_SPINNING_BLADE_ROOM, []{return logic->CanKillEnemy(RE_BIG_SKULLTULA) && (logic->CanUse(RG_HOOKSHOT) || (logic->IsAdult && logic->CanUse(RG_HOVER_BOOTS)));});}),
|
||||||
|
@ -215,6 +236,16 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
((ctx->GetTrickOption(RT_LENS_SHADOW_MQ) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ_INVISIBLE_BLADES) || logic->IsChild || logic->CanUse(RG_NAYRUS_LOVE))) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
((ctx->GetTrickOption(RT_LENS_SHADOW_MQ) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ_INVISIBLE_BLADES) || logic->IsChild || logic->CanUse(RG_NAYRUS_LOVE))) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
LOCATION(RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_LEFT_HEART, (logic->CanUse(RG_SONG_OF_TIME) && logic->IsAdult) || (ctx->GetTrickOption(RT_SHADOW_MQ_INVISIBLE_BLADES) && logic->EffectiveHealth() > 1) || logic->CanUse(RG_BOOMERANG)),
|
LOCATION(RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_LEFT_HEART, (logic->CanUse(RG_SONG_OF_TIME) && logic->IsAdult) || (ctx->GetTrickOption(RT_SHADOW_MQ_INVISIBLE_BLADES) && logic->EffectiveHealth() > 1) || logic->CanUse(RG_BOOMERANG)),
|
||||||
LOCATION(RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_RIGHT_HEART, (logic->CanUse(RG_SONG_OF_TIME) && logic->IsAdult) || (ctx->GetTrickOption(RT_SHADOW_MQ_INVISIBLE_BLADES) && logic->EffectiveHealth() > 1) || logic->CanUse(RG_BOOMERANG)),
|
LOCATION(RC_SHADOW_TEMPLE_MQ_INVISIBLE_BLADES_RIGHT_HEART, (logic->CanUse(RG_SONG_OF_TIME) && logic->IsAdult) || (ctx->GetTrickOption(RT_SHADOW_MQ_INVISIBLE_BLADES) && logic->EffectiveHealth() > 1) || logic->CanUse(RG_BOOMERANG)),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_1, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_2, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_3, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_4, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_5, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_6, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_7, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_8, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_9, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_10, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_UPPER_HUGE_PIT, []{return true;}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_UPPER_HUGE_PIT, []{return true;}),
|
||||||
|
@ -223,6 +254,11 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
areaTable[RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT] = Region("Shadow Temple MQ Lower Huge Pit", SCENE_SHADOW_TEMPLE, {}, {
|
areaTable[RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT] = Region("Shadow Temple MQ Lower Huge Pit", SCENE_SHADOW_TEMPLE, {}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST, logic->CanUse(RG_LONGSHOT)),
|
LOCATION(RC_SHADOW_TEMPLE_MQ_BEAMOS_SILVER_RUPEES_CHEST, logic->CanUse(RG_LONGSHOT)),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_PIT_1, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_PIT_2, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_PIT_3, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_PIT_4, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_PIT_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM, []{return Here(RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, []{return logic->CanJumpslash() || logic->HasExplosives();});}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_STONE_UMBRELLA_ROOM, []{return Here(RR_SHADOW_TEMPLE_MQ_LOWER_HUGE_PIT, []{return logic->CanJumpslash() || logic->HasExplosives();});}),
|
||||||
|
@ -270,6 +306,16 @@ void RegionTable_Init_ShadowTemple() {
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_SHADOW_TEMPLE_MQ_INVISIBLE_SPIKES_CHEST, logic->CanKillEnemy(RE_REDEAD) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->TakeDamage() || logic->CanUse(RG_LENS_OF_TRUTH))),
|
LOCATION(RC_SHADOW_TEMPLE_MQ_INVISIBLE_SPIKES_CHEST, logic->CanKillEnemy(RE_REDEAD) && (ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->TakeDamage() || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_1, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_2, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_3, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_4, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_5, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_6, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_7, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_8, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_9, true),
|
||||||
|
LOCATION(RC_SHADOW_MQ_SILVER_SPIKES_10, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM, []{return logic->MQShadowFloorSpikeRupees;}),
|
Entrance(RR_SHADOW_TEMPLE_MQ_STALFOS_ROOM, []{return logic->MQShadowFloorSpikeRupees;}),
|
||||||
|
|
|
@ -41,6 +41,11 @@ void RegionTable_Init_SpiritTemple() {
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_ANUBIS_POT_4, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))),
|
LOCATION(RC_SPIRIT_TEMPLE_ANUBIS_POT_4, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU))) && (logic->HasExplosives() || ((logic->CanUse(RG_NUTS) || logic->CanUse(RG_BOOMERANG)) && (logic->CanUse(RG_STICKS) || logic->CanUse(RG_KOKIRI_SWORD) || logic->CanUse(RG_FAIRY_SLINGSHOT))))),
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_BEFORE_CHILD_CLIMB_SMALL_CRATE_1, logic->CanBreakSmallCrates()),
|
LOCATION(RC_SPIRIT_TEMPLE_BEFORE_CHILD_CLIMB_SMALL_CRATE_1, logic->CanBreakSmallCrates()),
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_BEFORE_CHILD_CLIMB_SMALL_CRATE_2, logic->CanBreakSmallCrates()),
|
LOCATION(RC_SPIRIT_TEMPLE_BEFORE_CHILD_CLIMB_SMALL_CRATE_2, logic->CanBreakSmallCrates()),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_CHILD_1, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU)))),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_CHILD_2, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU)))),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_CHILD_3, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU)))),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_CHILD_4, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU)))),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_CHILD_5, (logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_FAIRY_SLINGSHOT) || (logic->CanUse(RG_BOMBCHU_5) && ctx->GetTrickOption(RT_SPIRIT_CHILD_CHU)))),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SPIRIT_TEMPLE_CHILD_CLIMB, []{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 1);}),
|
Entrance(RR_SPIRIT_TEMPLE_CHILD_CLIMB, []{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 1);}),
|
||||||
|
@ -55,6 +60,11 @@ void RegionTable_Init_SpiritTemple() {
|
||||||
(logic->IsChild && logic->SmallKeys(RR_SPIRIT_TEMPLE, 5) && logic->HasProjectile(HasProjectileAge::Child)) ||
|
(logic->IsChild && logic->SmallKeys(RR_SPIRIT_TEMPLE, 5) && logic->HasProjectile(HasProjectileAge::Child)) ||
|
||||||
(logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && logic->CanUse(RG_SILVER_GAUNTLETS) && (logic->HasProjectile(HasProjectileAge::Adult) || (logic->TakeDamage() && logic->CanJumpslashExceptHammer())))),
|
(logic->SmallKeys(RR_SPIRIT_TEMPLE, 2) && logic->CanUse(RG_SILVER_GAUNTLETS) && (logic->HasProjectile(HasProjectileAge::Adult) || (logic->TakeDamage() && logic->CanJumpslashExceptHammer())))),
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1, logic->CanBreakPots()),
|
LOCATION(RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1, logic->CanBreakPots()),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_SUN_1, true),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_SUN_2, true),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_SUN_3, true),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_SUN_4, true),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_SUN_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SPIRIT_TEMPLE_CENTRAL_CHAMBER, []{return logic->HasExplosives() || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS));}),
|
Entrance(RR_SPIRIT_TEMPLE_CENTRAL_CHAMBER, []{return logic->HasExplosives() || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS));}),
|
||||||
|
@ -68,6 +78,11 @@ void RegionTable_Init_SpiritTemple() {
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_FIRST_MIRROR_RIGHT_CHEST, logic->SmallKeys(RR_SPIRIT_TEMPLE, 3)),
|
LOCATION(RC_SPIRIT_TEMPLE_FIRST_MIRROR_RIGHT_CHEST, logic->SmallKeys(RR_SPIRIT_TEMPLE, 3)),
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_GS_BOULDER_ROOM, logic->CanUse(RG_SONG_OF_TIME) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_BOMBCHU_5) || (logic->CanUse(RG_BOMB_BAG) && ctx->GetTrickOption(RT_SPIRIT_LOWER_ADULT_SWITCH)))),
|
LOCATION(RC_SPIRIT_TEMPLE_GS_BOULDER_ROOM, logic->CanUse(RG_SONG_OF_TIME) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_BOMBCHU_5) || (logic->CanUse(RG_BOMB_BAG) && ctx->GetTrickOption(RT_SPIRIT_LOWER_ADULT_SWITCH)))),
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_BOMBCHU_5) || (logic->CanUse(RG_BOMB_BAG) && logic->IsAdult && ctx->GetTrickOption(RT_SPIRIT_LOWER_ADULT_SWITCH))) && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanJumpslash())),
|
LOCATION(RC_SPIRIT_TEMPLE_BOULDER_ROOM_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT) || logic->CanUse(RG_FAIRY_SLINGSHOT) || logic->CanUse(RG_BOOMERANG) || logic->CanUse(RG_BOMBCHU_5) || (logic->CanUse(RG_BOMB_BAG) && logic->IsAdult && ctx->GetTrickOption(RT_SPIRIT_LOWER_ADULT_SWITCH))) && (logic->CanUse(RG_HOVER_BOOTS) || logic->CanJumpslash())),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_BOULDERS_1, true),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_BOULDERS_2, true),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_BOULDERS_3, true),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_BOULDERS_4, true),
|
||||||
|
LOCATION(RC_SPIRIT_SILVER_BOULDERS_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SPIRIT_TEMPLE_CENTRAL_CHAMBER, []{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 1);}),
|
Entrance(RR_SPIRIT_TEMPLE_CENTRAL_CHAMBER, []{return logic->SmallKeys(RR_SPIRIT_TEMPLE, 1);}),
|
||||||
|
@ -161,6 +176,11 @@ void RegionTable_Init_SpiritTemple() {
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2, logic->CanBreakPots()),
|
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2, logic->CanBreakPots()),
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3, logic->CanBreakPots()),
|
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3, logic->CanBreakPots()),
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4, logic->CanBreakPots()),
|
LOCATION(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4, logic->CanBreakPots()),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_LOBBY_1, true),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_LOBBY_2, true),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_LOBBY_3, true),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_LOBBY_4, true),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_LOBBY_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SPIRIT_TEMPLE_ENTRYWAY, []{return true;}),
|
Entrance(RR_SPIRIT_TEMPLE_ENTRYWAY, []{return true;}),
|
||||||
|
@ -482,6 +502,11 @@ void RegionTable_Init_SpiritTemple() {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1, logic->CanBreakPots()),
|
LOCATION(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1, logic->CanBreakPots()),
|
||||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2, logic->CanBreakPots()),
|
LOCATION(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2, logic->CanBreakPots()),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_BIG_WALL_1, true),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_BIG_WALL_2, true),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_BIG_WALL_3, true),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_BIG_WALL_4, true),
|
||||||
|
LOCATION(RC_SPIRIT_MQ_SILVER_BIG_WALL_5, true),
|
||||||
}, {
|
}, {
|
||||||
//Exits
|
//Exits
|
||||||
Entrance(RR_SPIRIT_TEMPLE_MQ_FOUR_BEAMOS_ROOM, []{return true;}),
|
Entrance(RR_SPIRIT_TEMPLE_MQ_FOUR_BEAMOS_ROOM, []{return true;}),
|
||||||
|
|
|
@ -1910,6 +1910,23 @@ void Logic::ApplyItemEffect(Item& item, bool state) {
|
||||||
case ITEMTYPE_FORTRESS_SMALLKEY:
|
case ITEMTYPE_FORTRESS_SMALLKEY:
|
||||||
case ITEMTYPE_SMALLKEY: {
|
case ITEMTYPE_SMALLKEY: {
|
||||||
auto randoGet = item.GetRandomizerGet();
|
auto randoGet = item.GetRandomizerGet();
|
||||||
|
if (randoGet >= RG_SHADOW_SILVER_BLADES && randoGet <= RG_GANONS_CASTLE_MQ_SILVER_SHADOW) {
|
||||||
|
s8* field = Randomizer::SilverFieldFromSaveContext(randoGet);
|
||||||
|
bool isWallet = ctx->GetOption(RSK_SHUFFLE_SILVER).Is(RO_SHUFFLE_SILVER_WALLET);
|
||||||
|
if (!state) {
|
||||||
|
if (isWallet) {
|
||||||
|
*field = 0;
|
||||||
|
} else {
|
||||||
|
*field -= 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isWallet) {
|
||||||
|
*field = 10;
|
||||||
|
} else {
|
||||||
|
*field += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
auto keyring = randoGet >= RG_FOREST_TEMPLE_KEY_RING && randoGet <= RG_GANONS_CASTLE_KEY_RING;
|
auto keyring = randoGet >= RG_FOREST_TEMPLE_KEY_RING && randoGet <= RG_GANONS_CASTLE_KEY_RING;
|
||||||
auto dungeonIndex = RandoGetToDungeonScene.find(randoGet)->second;
|
auto dungeonIndex = RandoGetToDungeonScene.find(randoGet)->second;
|
||||||
auto count = GetSmallKeyCount(dungeonIndex);
|
auto count = GetSmallKeyCount(dungeonIndex);
|
||||||
|
@ -1927,6 +1944,7 @@ void Logic::ApplyItemEffect(Item& item, bool state) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetSmallKeyCount(dungeonIndex, count);
|
SetSmallKeyCount(dungeonIndex, count);
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
case ITEMTYPE_TOKEN:
|
case ITEMTYPE_TOKEN:
|
||||||
mSaveContext->inventory.gsTokens += (!state ? -1 : 1);
|
mSaveContext->inventory.gsTokens += (!state ? -1 : 1);
|
||||||
|
|
|
@ -476,6 +476,9 @@ void Settings::CreateOptionDescriptions() {
|
||||||
"Overworld - Only freestanding rupees & hearts that are outside of dungeons.\n"
|
"Overworld - Only freestanding rupees & hearts that are outside of dungeons.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"All Items - Shuffle all freestanding rupees & hearts.";
|
"All Items - Shuffle all freestanding rupees & hearts.";
|
||||||
|
mOptionDescriptions[RSK_SHUFFLE_SILVER] = "Silver rupees will be shuffled.\n"
|
||||||
|
"Items will be added to pool which completes the silver rupee puzzles,\n"
|
||||||
|
"while silver rupee locations will be random items.";
|
||||||
mOptionDescriptions[RSK_SHUFFLE_FAIRIES] = "Shuffle fairy locations.";
|
mOptionDescriptions[RSK_SHUFFLE_FAIRIES] = "Shuffle fairy locations.";
|
||||||
mOptionDescriptions[RSK_SHUFFLE_GRASS] =
|
mOptionDescriptions[RSK_SHUFFLE_GRASS] =
|
||||||
"Grass/Bushes will drop a randomized item the first time they're cut and collected. "
|
"Grass/Bushes will drop a randomized item the first time they're cut and collected. "
|
||||||
|
|
|
@ -764,6 +764,71 @@ bool Randomizer::IsTrialRequired(s32 trialFlag) {
|
||||||
return Rando::Context::GetInstance()->GetTrial(trialFlagToTrialKey[trialFlag])->IsRequired();
|
return Rando::Context::GetInstance()->GetTrial(trialFlagToTrialKey[trialFlag])->IsRequired();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s8* Randomizer::SilverFieldFromSaveContext(RandomizerGet rg) {
|
||||||
|
switch (rg) {
|
||||||
|
case RG_SHADOW_SILVER_BLADES:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverShadowBlades;
|
||||||
|
case RG_SHADOW_SILVER_PIT:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverShadowPit;
|
||||||
|
case RG_SHADOW_SILVER_SPIKES:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverShadowSpikes;
|
||||||
|
case RG_SPIRIT_SILVER_CHILD:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverSpiritChild;
|
||||||
|
case RG_SPIRIT_SILVER_SUN:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverSpiritSun;
|
||||||
|
case RG_SPIRIT_SILVER_BOULDERS:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverSpiritBoulders;
|
||||||
|
case RG_BOTW_SILVER:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverBotw;
|
||||||
|
case RG_ICE_CAVERN_SILVER_BLADES:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverIceCavernBlades;
|
||||||
|
case RG_ICE_CAVERN_SILVER_BLOCK:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverIceCavernBlock;
|
||||||
|
case RG_GTG_SILVER_SLOPE:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverGtgSlope;
|
||||||
|
case RG_GTG_SILVER_LAVA:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverGtgLava;
|
||||||
|
case RG_GTG_SILVER_WATER:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverGtgWater;
|
||||||
|
case RG_GANONS_CASTLE_SILVER_LIGHT:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverGanonLight;
|
||||||
|
case RG_GANONS_CASTLE_SILVER_FOREST:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverGanonForest;
|
||||||
|
case RG_GANONS_CASTLE_SILVER_FIRE:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverGanonFire;
|
||||||
|
case RG_GANONS_CASTLE_SILVER_SPIRIT:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverGanonSpirit;
|
||||||
|
case RG_DODONGOS_CAVERN_MQ_SILVER:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqDodongosCavern;
|
||||||
|
case RG_SHADOW_MQ_SILVER_BLADES:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqShadowBlades;
|
||||||
|
case RG_SHADOW_MQ_SILVER_PIT:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqShadowPit;
|
||||||
|
case RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqShadowInvisibleBlades;
|
||||||
|
case RG_SHADOW_MQ_SILVER_SPIKES:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqShadowSpikes;
|
||||||
|
case RG_SPIRIT_MQ_SILVER_LOBBY:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqSpiritLobby;
|
||||||
|
case RG_SPIRIT_MQ_SILVER_BIG_WALL:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqSpiritBigWall;
|
||||||
|
case RG_GTG_MQ_SILVER_SLOPE:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqGtgSlope;
|
||||||
|
case RG_GTG_MQ_SILVER_LAVA:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqGtgLava;
|
||||||
|
case RG_GTG_MQ_SILVER_WATER:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqGtgWater;
|
||||||
|
case RG_GANONS_CASTLE_MQ_SILVER_FIRE:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqGanonFire;
|
||||||
|
case RG_GANONS_CASTLE_MQ_SILVER_WATER:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqGanonWater;
|
||||||
|
case RG_GANONS_CASTLE_MQ_SILVER_SHADOW:
|
||||||
|
return &gSaveContext.ship.quest.data.randomizer.silverMqGanonShadow;
|
||||||
|
default:
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GetItemEntry Randomizer::GetItemFromActor(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogItemId,
|
GetItemEntry Randomizer::GetItemFromActor(s16 actorId, s16 sceneNum, s16 actorParams, GetItemID ogItemId,
|
||||||
bool checkObtainability) {
|
bool checkObtainability) {
|
||||||
return Rando::Context::GetInstance()->GetFinalGIEntry(GetCheckFromActor(actorId, sceneNum, actorParams),
|
return Rando::Context::GetInstance()->GetFinalGIEntry(GetCheckFromActor(actorId, sceneNum, actorParams),
|
||||||
|
@ -3306,6 +3371,160 @@ std::map<RandomizerCheck, RandomizerInf> rcToRandomizerInf = {
|
||||||
RC_SPIRIT_TEMPLE_MQ_BEAMOS_SMALL_CRATE,
|
RC_SPIRIT_TEMPLE_MQ_BEAMOS_SMALL_CRATE,
|
||||||
RAND_INF_SPIRIT_TEMPLE_MQ_BEAMOS_SMALL_CRATE,
|
RAND_INF_SPIRIT_TEMPLE_MQ_BEAMOS_SMALL_CRATE,
|
||||||
},
|
},
|
||||||
|
{ RC_SHADOW_SILVER_BLADES_1, RAND_INF_SHADOW_SILVER_BLADES_1 },
|
||||||
|
{ RC_SHADOW_SILVER_BLADES_2, RAND_INF_SHADOW_SILVER_BLADES_2 },
|
||||||
|
{ RC_SHADOW_SILVER_BLADES_3, RAND_INF_SHADOW_SILVER_BLADES_3 },
|
||||||
|
{ RC_SHADOW_SILVER_BLADES_4, RAND_INF_SHADOW_SILVER_BLADES_4 },
|
||||||
|
{ RC_SHADOW_SILVER_BLADES_5, RAND_INF_SHADOW_SILVER_BLADES_5 },
|
||||||
|
{ RC_SHADOW_SILVER_PIT_1, RAND_INF_SHADOW_SILVER_PIT_1 },
|
||||||
|
{ RC_SHADOW_SILVER_PIT_2, RAND_INF_SHADOW_SILVER_PIT_2 },
|
||||||
|
{ RC_SHADOW_SILVER_PIT_3, RAND_INF_SHADOW_SILVER_PIT_3 },
|
||||||
|
{ RC_SHADOW_SILVER_PIT_4, RAND_INF_SHADOW_SILVER_PIT_4 },
|
||||||
|
{ RC_SHADOW_SILVER_PIT_5, RAND_INF_SHADOW_SILVER_PIT_5 },
|
||||||
|
{ RC_SHADOW_SILVER_SPIKES_1, RAND_INF_SHADOW_SILVER_SPIKES_1 },
|
||||||
|
{ RC_SHADOW_SILVER_SPIKES_2, RAND_INF_SHADOW_SILVER_SPIKES_2 },
|
||||||
|
{ RC_SHADOW_SILVER_SPIKES_3, RAND_INF_SHADOW_SILVER_SPIKES_3 },
|
||||||
|
{ RC_SHADOW_SILVER_SPIKES_4, RAND_INF_SHADOW_SILVER_SPIKES_4 },
|
||||||
|
{ RC_SHADOW_SILVER_SPIKES_5, RAND_INF_SHADOW_SILVER_SPIKES_5 },
|
||||||
|
{ RC_SPIRIT_SILVER_CHILD_1, RAND_INF_SPIRIT_SILVER_CHILD_1 },
|
||||||
|
{ RC_SPIRIT_SILVER_CHILD_2, RAND_INF_SPIRIT_SILVER_CHILD_2 },
|
||||||
|
{ RC_SPIRIT_SILVER_CHILD_3, RAND_INF_SPIRIT_SILVER_CHILD_3 },
|
||||||
|
{ RC_SPIRIT_SILVER_CHILD_4, RAND_INF_SPIRIT_SILVER_CHILD_4 },
|
||||||
|
{ RC_SPIRIT_SILVER_CHILD_5, RAND_INF_SPIRIT_SILVER_CHILD_5 },
|
||||||
|
{ RC_SPIRIT_SILVER_SUN_1, RAND_INF_SPIRIT_SILVER_SUN_1 },
|
||||||
|
{ RC_SPIRIT_SILVER_SUN_2, RAND_INF_SPIRIT_SILVER_SUN_2 },
|
||||||
|
{ RC_SPIRIT_SILVER_SUN_3, RAND_INF_SPIRIT_SILVER_SUN_3 },
|
||||||
|
{ RC_SPIRIT_SILVER_SUN_4, RAND_INF_SPIRIT_SILVER_SUN_4 },
|
||||||
|
{ RC_SPIRIT_SILVER_SUN_5, RAND_INF_SPIRIT_SILVER_SUN_5 },
|
||||||
|
{ RC_SPIRIT_SILVER_BOULDERS_1, RAND_INF_SPIRIT_SILVER_BOULDERS_1 },
|
||||||
|
{ RC_SPIRIT_SILVER_BOULDERS_2, RAND_INF_SPIRIT_SILVER_BOULDERS_2 },
|
||||||
|
{ RC_SPIRIT_SILVER_BOULDERS_3, RAND_INF_SPIRIT_SILVER_BOULDERS_3 },
|
||||||
|
{ RC_SPIRIT_SILVER_BOULDERS_4, RAND_INF_SPIRIT_SILVER_BOULDERS_4 },
|
||||||
|
{ RC_SPIRIT_SILVER_BOULDERS_5, RAND_INF_SPIRIT_SILVER_BOULDERS_5 },
|
||||||
|
{ RC_BOTW_SILVER_1, RAND_INF_BOTW_SILVER_1 },
|
||||||
|
{ RC_BOTW_SILVER_2, RAND_INF_BOTW_SILVER_2 },
|
||||||
|
{ RC_BOTW_SILVER_3, RAND_INF_BOTW_SILVER_3 },
|
||||||
|
{ RC_BOTW_SILVER_4, RAND_INF_BOTW_SILVER_4 },
|
||||||
|
{ RC_BOTW_SILVER_5, RAND_INF_BOTW_SILVER_5 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLADES_1, RAND_INF_ICE_CAVERN_SILVER_BLADES_1 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLADES_2, RAND_INF_ICE_CAVERN_SILVER_BLADES_2 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLADES_3, RAND_INF_ICE_CAVERN_SILVER_BLADES_3 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLADES_4, RAND_INF_ICE_CAVERN_SILVER_BLADES_4 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLADES_5, RAND_INF_ICE_CAVERN_SILVER_BLADES_5 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLOCK_1, RAND_INF_ICE_CAVERN_SILVER_BLOCK_1 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLOCK_2, RAND_INF_ICE_CAVERN_SILVER_BLOCK_2 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLOCK_3, RAND_INF_ICE_CAVERN_SILVER_BLOCK_3 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLOCK_4, RAND_INF_ICE_CAVERN_SILVER_BLOCK_4 },
|
||||||
|
{ RC_ICE_CAVERN_SILVER_BLOCK_5, RAND_INF_ICE_CAVERN_SILVER_BLOCK_5 },
|
||||||
|
{ RC_GTG_SILVER_SLOPE_1, RAND_INF_GTG_SILVER_SLOPE_1 },
|
||||||
|
{ RC_GTG_SILVER_SLOPE_2, RAND_INF_GTG_SILVER_SLOPE_2 },
|
||||||
|
{ RC_GTG_SILVER_SLOPE_3, RAND_INF_GTG_SILVER_SLOPE_3 },
|
||||||
|
{ RC_GTG_SILVER_SLOPE_4, RAND_INF_GTG_SILVER_SLOPE_4 },
|
||||||
|
{ RC_GTG_SILVER_SLOPE_5, RAND_INF_GTG_SILVER_SLOPE_5 },
|
||||||
|
{ RC_GTG_SILVER_LAVA_1, RAND_INF_GTG_SILVER_LAVA_1 },
|
||||||
|
{ RC_GTG_SILVER_LAVA_2, RAND_INF_GTG_SILVER_LAVA_2 },
|
||||||
|
{ RC_GTG_SILVER_LAVA_3, RAND_INF_GTG_SILVER_LAVA_3 },
|
||||||
|
{ RC_GTG_SILVER_LAVA_4, RAND_INF_GTG_SILVER_LAVA_4 },
|
||||||
|
{ RC_GTG_SILVER_LAVA_5, RAND_INF_GTG_SILVER_LAVA_5 },
|
||||||
|
{ RC_GTG_SILVER_WATER_1, RAND_INF_GTG_SILVER_WATER_1 },
|
||||||
|
{ RC_GTG_SILVER_WATER_2, RAND_INF_GTG_SILVER_WATER_2 },
|
||||||
|
{ RC_GTG_SILVER_WATER_3, RAND_INF_GTG_SILVER_WATER_3 },
|
||||||
|
{ RC_GTG_SILVER_WATER_4, RAND_INF_GTG_SILVER_WATER_4 },
|
||||||
|
{ RC_GTG_SILVER_WATER_5, RAND_INF_GTG_SILVER_WATER_5 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_LIGHT_1, RAND_INF_GANONS_CASTLE_SILVER_LIGHT_1 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_LIGHT_2, RAND_INF_GANONS_CASTLE_SILVER_LIGHT_2 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_LIGHT_3, RAND_INF_GANONS_CASTLE_SILVER_LIGHT_3 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_LIGHT_4, RAND_INF_GANONS_CASTLE_SILVER_LIGHT_4 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_LIGHT_5, RAND_INF_GANONS_CASTLE_SILVER_LIGHT_5 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FOREST_1, RAND_INF_GANONS_CASTLE_SILVER_FOREST_1 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FOREST_2, RAND_INF_GANONS_CASTLE_SILVER_FOREST_2 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FOREST_3, RAND_INF_GANONS_CASTLE_SILVER_FOREST_3 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FOREST_4, RAND_INF_GANONS_CASTLE_SILVER_FOREST_4 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FOREST_5, RAND_INF_GANONS_CASTLE_SILVER_FOREST_5 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FIRE_1, RAND_INF_GANONS_CASTLE_SILVER_FIRE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FIRE_2, RAND_INF_GANONS_CASTLE_SILVER_FIRE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FIRE_3, RAND_INF_GANONS_CASTLE_SILVER_FIRE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FIRE_4, RAND_INF_GANONS_CASTLE_SILVER_FIRE_4 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_FIRE_5, RAND_INF_GANONS_CASTLE_SILVER_FIRE_5 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_SPIRIT_1, RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_1 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_SPIRIT_2, RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_2 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_SPIRIT_3, RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_3 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_SPIRIT_4, RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_4 },
|
||||||
|
{ RC_GANONS_CASTLE_SILVER_SPIRIT_5, RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_5 },
|
||||||
|
{ RC_DODONGOS_CAVERN_MQ_SILVER_1, RAND_INF_DODONGOS_CAVERN_MQ_SILVER_1 },
|
||||||
|
{ RC_DODONGOS_CAVERN_MQ_SILVER_2, RAND_INF_DODONGOS_CAVERN_MQ_SILVER_2 },
|
||||||
|
{ RC_DODONGOS_CAVERN_MQ_SILVER_3, RAND_INF_DODONGOS_CAVERN_MQ_SILVER_3 },
|
||||||
|
{ RC_DODONGOS_CAVERN_MQ_SILVER_4, RAND_INF_DODONGOS_CAVERN_MQ_SILVER_4 },
|
||||||
|
{ RC_DODONGOS_CAVERN_MQ_SILVER_5, RAND_INF_DODONGOS_CAVERN_MQ_SILVER_5 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_BLADES_1, RAND_INF_SHADOW_MQ_SILVER_BLADES_1 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_BLADES_2, RAND_INF_SHADOW_MQ_SILVER_BLADES_2 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_BLADES_3, RAND_INF_SHADOW_MQ_SILVER_BLADES_3 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_BLADES_4, RAND_INF_SHADOW_MQ_SILVER_BLADES_4 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_BLADES_5, RAND_INF_SHADOW_MQ_SILVER_BLADES_5 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_PIT_1, RAND_INF_SHADOW_MQ_SILVER_PIT_1 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_PIT_2, RAND_INF_SHADOW_MQ_SILVER_PIT_2 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_PIT_3, RAND_INF_SHADOW_MQ_SILVER_PIT_3 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_PIT_4, RAND_INF_SHADOW_MQ_SILVER_PIT_4 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_PIT_5, RAND_INF_SHADOW_MQ_SILVER_PIT_5 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_1, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_1 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_2, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_2 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_3, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_3 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_4, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_4 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_5, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_5 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_6, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_6 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_7, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_7 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_8, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_8 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_9, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_9 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_10, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_10 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_1, RAND_INF_SHADOW_MQ_SILVER_SPIKES_1 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_2, RAND_INF_SHADOW_MQ_SILVER_SPIKES_2 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_3, RAND_INF_SHADOW_MQ_SILVER_SPIKES_3 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_4, RAND_INF_SHADOW_MQ_SILVER_SPIKES_4 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_5, RAND_INF_SHADOW_MQ_SILVER_SPIKES_5 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_6, RAND_INF_SHADOW_MQ_SILVER_SPIKES_6 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_7, RAND_INF_SHADOW_MQ_SILVER_SPIKES_7 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_8, RAND_INF_SHADOW_MQ_SILVER_SPIKES_8 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_9, RAND_INF_SHADOW_MQ_SILVER_SPIKES_9 },
|
||||||
|
{ RC_SHADOW_MQ_SILVER_SPIKES_10, RAND_INF_SHADOW_MQ_SILVER_SPIKES_10 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_LOBBY_1, RAND_INF_SPIRIT_MQ_SILVER_LOBBY_1 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_LOBBY_2, RAND_INF_SPIRIT_MQ_SILVER_LOBBY_2 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_LOBBY_3, RAND_INF_SPIRIT_MQ_SILVER_LOBBY_3 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_LOBBY_4, RAND_INF_SPIRIT_MQ_SILVER_LOBBY_4 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_LOBBY_5, RAND_INF_SPIRIT_MQ_SILVER_LOBBY_5 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_BIG_WALL_1, RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_1 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_BIG_WALL_2, RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_2 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_BIG_WALL_3, RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_3 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_BIG_WALL_4, RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_4 },
|
||||||
|
{ RC_SPIRIT_MQ_SILVER_BIG_WALL_5, RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_5 },
|
||||||
|
{ RC_GTG_MQ_SILVER_SLOPE_1, RAND_INF_GTG_MQ_SILVER_SLOPE_1 },
|
||||||
|
{ RC_GTG_MQ_SILVER_SLOPE_2, RAND_INF_GTG_MQ_SILVER_SLOPE_2 },
|
||||||
|
{ RC_GTG_MQ_SILVER_SLOPE_3, RAND_INF_GTG_MQ_SILVER_SLOPE_3 },
|
||||||
|
{ RC_GTG_MQ_SILVER_SLOPE_4, RAND_INF_GTG_MQ_SILVER_SLOPE_4 },
|
||||||
|
{ RC_GTG_MQ_SILVER_SLOPE_5, RAND_INF_GTG_MQ_SILVER_SLOPE_5 },
|
||||||
|
{ RC_GTG_MQ_SILVER_LAVA_1, RAND_INF_GTG_MQ_SILVER_LAVA_1 },
|
||||||
|
{ RC_GTG_MQ_SILVER_LAVA_2, RAND_INF_GTG_MQ_SILVER_LAVA_2 },
|
||||||
|
{ RC_GTG_MQ_SILVER_LAVA_3, RAND_INF_GTG_MQ_SILVER_LAVA_3 },
|
||||||
|
{ RC_GTG_MQ_SILVER_LAVA_4, RAND_INF_GTG_MQ_SILVER_LAVA_4 },
|
||||||
|
{ RC_GTG_MQ_SILVER_LAVA_5, RAND_INF_GTG_MQ_SILVER_LAVA_5 },
|
||||||
|
{ RC_GTG_MQ_SILVER_LAVA_6, RAND_INF_GTG_MQ_SILVER_LAVA_6 },
|
||||||
|
{ RC_GTG_MQ_SILVER_WATER_1, RAND_INF_GTG_MQ_SILVER_WATER_1 },
|
||||||
|
{ RC_GTG_MQ_SILVER_WATER_2, RAND_INF_GTG_MQ_SILVER_WATER_2 },
|
||||||
|
{ RC_GTG_MQ_SILVER_WATER_3, RAND_INF_GTG_MQ_SILVER_WATER_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_FIRE_1, RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_1 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_FIRE_2, RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_2 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_FIRE_3, RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_FIRE_4, RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_4 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_FIRE_5, RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_5 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_WATER_1, RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_1 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_WATER_2, RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_2 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_WATER_3, RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_WATER_4, RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_4 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_WATER_5, RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_5 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_SHADOW_1, RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_1 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_SHADOW_2, RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_2 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_SHADOW_3, RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_3 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_SHADOW_4, RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_4 },
|
||||||
|
{ RC_GANONS_CASTLE_MQ_SILVER_SHADOW_5, RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_5 },
|
||||||
};
|
};
|
||||||
|
|
||||||
BeehiveIdentity Randomizer::IdentifyBeehive(s32 sceneNum, s16 xPosition, s32 respawnData) {
|
BeehiveIdentity Randomizer::IdentifyBeehive(s32 sceneNum, s16 xPosition, s32 respawnData) {
|
||||||
|
@ -3727,6 +3946,24 @@ SmallCrateIdentity Randomizer::IdentifySmallCrate(s32 sceneNum, s32 posX, s32 po
|
||||||
return smallCrateIdentity;
|
return smallCrateIdentity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SilverIdentity Randomizer::IdentifySilver(s32 sceneNum, s32 posX, s32 posZ) {
|
||||||
|
struct SilverIdentity silverIdentity;
|
||||||
|
|
||||||
|
silverIdentity.randomizerInf = RAND_INF_MAX;
|
||||||
|
silverIdentity.randomizerCheck = RC_UNKNOWN_CHECK;
|
||||||
|
|
||||||
|
s32 actorParams = TWO_ACTOR_PARAMS(posX, posZ);
|
||||||
|
|
||||||
|
Rando::Location* location = GetCheckObjectFromActor(ACTOR_EN_G_SWITCH, sceneNum, actorParams);
|
||||||
|
|
||||||
|
if (location->GetRandomizerCheck() != RC_UNKNOWN_CHECK) {
|
||||||
|
silverIdentity.randomizerInf = rcToRandomizerInf[location->GetRandomizerCheck()];
|
||||||
|
silverIdentity.randomizerCheck = location->GetRandomizerCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
return silverIdentity;
|
||||||
|
}
|
||||||
|
|
||||||
u8 Randomizer::GetRandoSettingValue(RandomizerSettingKey randoSettingKey) {
|
u8 Randomizer::GetRandoSettingValue(RandomizerSettingKey randoSettingKey) {
|
||||||
return Rando::Context::GetInstance()->GetOption(randoSettingKey).Get();
|
return Rando::Context::GetInstance()->GetOption(randoSettingKey).Get();
|
||||||
}
|
}
|
||||||
|
@ -5391,7 +5628,7 @@ CustomMessage Randomizer::GetGoronMessage(u16 index) {
|
||||||
void Randomizer::CreateCustomMessages() {
|
void Randomizer::CreateCustomMessages() {
|
||||||
// RANDTODO: Translate into french and german and replace GIMESSAGE_UNTRANSLATED
|
// RANDTODO: Translate into french and german and replace GIMESSAGE_UNTRANSLATED
|
||||||
// with GIMESSAGE(getItemID, itemID, english, german, french).
|
// with GIMESSAGE(getItemID, itemID, english, german, french).
|
||||||
const std::array<GetItemMessage, 112> getItemMessages = { {
|
const std::array<GetItemMessage, 141> getItemMessages = { {
|
||||||
GIMESSAGE(RG_GREG_RUPEE, ITEM_MASK_GORON, "You found %gGreg%w!", "%gGreg%w! Du hast ihn&wirklich gefunden!",
|
GIMESSAGE(RG_GREG_RUPEE, ITEM_MASK_GORON, "You found %gGreg%w!", "%gGreg%w! Du hast ihn&wirklich gefunden!",
|
||||||
"Félicitation! Vous avez trouvé %gGreg%w!"),
|
"Félicitation! Vous avez trouvé %gGreg%w!"),
|
||||||
GIMESSAGE(RG_MASTER_SWORD, ITEM_SWORD_MASTER, "You found the %gMaster Sword%w!",
|
GIMESSAGE(RG_MASTER_SWORD, ITEM_SWORD_MASTER, "You found the %gMaster Sword%w!",
|
||||||
|
@ -5755,6 +5992,66 @@ void Randomizer::CreateCustomMessages() {
|
||||||
GIMESSAGE(RG_DEKU_NUT_BAG, ITEM_NUT, "You found the %rDeku Nut Bag%w!&You can now hold Deku Nuts!",
|
GIMESSAGE(RG_DEKU_NUT_BAG, ITEM_NUT, "You found the %rDeku Nut Bag%w!&You can now hold Deku Nuts!",
|
||||||
"Du hast eine %rDeku-Nuß-Tasche%w&gefunden! Nun kannst Du &%yDeku-Nüsse%w verwenden!",
|
"Du hast eine %rDeku-Nuß-Tasche%w&gefunden! Nun kannst Du &%yDeku-Nüsse%w verwenden!",
|
||||||
"Vous avez trouvé le %rSac de Noix& Mojo%w!&Vous pouvez maintenant porter des&Noix Mojo!"),
|
"Vous avez trouvé le %rSac de Noix& Mojo%w!&Vous pouvez maintenant porter des&Noix Mojo!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SHADOW_SILVER_BLADES, ITEM_KEY_SMALL, "You found Shadow Silver: Blades",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %pTemple de l'Ombre: Lames%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SHADOW_SILVER_PIT, ITEM_KEY_SMALL, "You found Shadow Silver: Pit",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %pTemple de l'Ombre: Trou%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SHADOW_SILVER_SPIKES, ITEM_KEY_SMALL, "You found Shadow Silver: Spikes",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %pTemple de l'Ombre: Pics%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SPIRIT_SILVER_CHILD, ITEM_KEY_SMALL, "You found Spirit Silver: Child",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yTemple de l'Esprit: Enfant%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SPIRIT_SILVER_SUN, ITEM_KEY_SMALL, "You found Spirit Silver: Sun",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yTemple de l'Esprit: Soleil%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SPIRIT_SILVER_BOULDERS, ITEM_KEY_SMALL, "You found Spirit Silver: Boulders",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yTemple de l'Esprit: Rochers%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_BOTW_SILVER, ITEM_KEY_SMALL, "You found Bottom of the Well Silver",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %pPuits%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_ICE_CAVERN_SILVER_BLADES, ITEM_KEY_SMALL, "You found Ice Cavern Silver: Blades",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wde la %cCaverne Polaire: Lames%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_ICE_CAVERN_SILVER_BLOCK, ITEM_KEY_SMALL, "You found Ice Cavern Silver: Block",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wde la %cCaverne Polaire: Blocs%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GTG_SILVER_SLOPE, ITEM_KEY_SMALL, "You found Training Ground Silver: Slope",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yGymnase Gerudo: Pente%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GTG_SILVER_LAVA, ITEM_KEY_SMALL, "You found Training Ground Silver: Lava",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yGymnase Gerudo: Lave%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GTG_SILVER_WATER, ITEM_KEY_SMALL, "You found Training Ground Silver: Water",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yGymnase Gerudo: Eau%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GANONS_CASTLE_SILVER_LIGHT, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Light",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %rChâteau de Ganon: Lumière%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GANONS_CASTLE_SILVER_FOREST, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Forest",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %rChâteau de Ganon: Fôret%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GANONS_CASTLE_SILVER_FIRE, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Fire",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %rChâteau de Ganon: Feu%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GANONS_CASTLE_SILVER_SPIRIT, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Spirit",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %rChâteau de Ganon: Esprit%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_DODONGOS_CAVERN_MQ_SILVER, ITEM_KEY_SMALL, "You found Dodongo's Cavern Silver",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wde la %rCaverne Dodongo%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SHADOW_MQ_SILVER_BLADES, ITEM_KEY_SMALL, "You found Shadow Silver: Blades",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %pTemple de l'Ombre: Lames%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SHADOW_MQ_SILVER_PIT, ITEM_KEY_SMALL, "You found Shadow Silver: Pit",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %pTemple de l'Ombre: Trou%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES, ITEM_KEY_SMALL,
|
||||||
|
"You found Shadow Silver: Invisible Blades",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %pTemple de l'Ombre: Lames Invisibles%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SHADOW_MQ_SILVER_SPIKES, ITEM_KEY_SMALL, "You found Shadow Silver: Spikes",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %pTemple de l'Ombre: Pics%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SPIRIT_MQ_SILVER_LOBBY, ITEM_KEY_SMALL, "You found Spirit Silver: Lobby",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yTemple de l'Esprit: Hall d'entrée%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_SPIRIT_MQ_SILVER_BIG_WALL, ITEM_KEY_SMALL, "You found Spirit Silver: Big Wall",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yTemple de l'Esprit: Grand Mur%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GTG_MQ_SILVER_SLOPE, ITEM_KEY_SMALL, "You found Training Ground Silver: Slope",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yGymnase Gerudo: Pente%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GTG_MQ_SILVER_LAVA, ITEM_KEY_SMALL, "You found Training Ground Silver: Lava",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yGymnase Gerudo: Lave%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GTG_MQ_SILVER_WATER, ITEM_KEY_SMALL, "You found Training Ground Silver: Water",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %yGymnase Gerudo: Eau%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GANONS_CASTLE_MQ_SILVER_FIRE, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Fire",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %rChâteau de Ganon: Feu%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GANONS_CASTLE_MQ_SILVER_WATER, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Water",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %rChâteau de Ganon: Eau%w!"),
|
||||||
|
GIMESSAGE_NO_GERMAN(RG_GANONS_CASTLE_MQ_SILVER_SHADOW, ITEM_KEY_SMALL,
|
||||||
|
"You found Ganon's Castle Silver: Shadow",
|
||||||
|
"Vous obtenez les %rRubis d'argent&%wdu %rChâteau de Ganon: Ombre%w!"),
|
||||||
} };
|
} };
|
||||||
CreateGetItemMessages(getItemMessages);
|
CreateGetItemMessages(getItemMessages);
|
||||||
CreateRupeeMessages();
|
CreateRupeeMessages();
|
||||||
|
@ -6133,6 +6430,43 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||||
INV_CONTENT(ITEM_NUT) = ITEM_NUT;
|
INV_CONTENT(ITEM_NUT) = ITEM_NUT;
|
||||||
AMMO(ITEM_NUT) = static_cast<int8_t>(CUR_CAPACITY(UPG_NUTS));
|
AMMO(ITEM_NUT) = static_cast<int8_t>(CUR_CAPACITY(UPG_NUTS));
|
||||||
break;
|
break;
|
||||||
|
case RG_SHADOW_SILVER_BLADES:
|
||||||
|
case RG_SHADOW_SILVER_PIT:
|
||||||
|
case RG_SHADOW_SILVER_SPIKES:
|
||||||
|
case RG_SPIRIT_SILVER_CHILD:
|
||||||
|
case RG_SPIRIT_SILVER_SUN:
|
||||||
|
case RG_SPIRIT_SILVER_BOULDERS:
|
||||||
|
case RG_BOTW_SILVER:
|
||||||
|
case RG_ICE_CAVERN_SILVER_BLADES:
|
||||||
|
case RG_ICE_CAVERN_SILVER_BLOCK:
|
||||||
|
case RG_GTG_SILVER_SLOPE:
|
||||||
|
case RG_GTG_SILVER_LAVA:
|
||||||
|
case RG_GTG_SILVER_WATER:
|
||||||
|
case RG_GANONS_CASTLE_SILVER_LIGHT:
|
||||||
|
case RG_GANONS_CASTLE_SILVER_FOREST:
|
||||||
|
case RG_GANONS_CASTLE_SILVER_FIRE:
|
||||||
|
case RG_GANONS_CASTLE_SILVER_SPIRIT:
|
||||||
|
case RG_DODONGOS_CAVERN_MQ_SILVER:
|
||||||
|
case RG_SHADOW_MQ_SILVER_BLADES:
|
||||||
|
case RG_SHADOW_MQ_SILVER_PIT:
|
||||||
|
case RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES:
|
||||||
|
case RG_SHADOW_MQ_SILVER_SPIKES:
|
||||||
|
case RG_SPIRIT_MQ_SILVER_LOBBY:
|
||||||
|
case RG_SPIRIT_MQ_SILVER_BIG_WALL:
|
||||||
|
case RG_GTG_MQ_SILVER_SLOPE:
|
||||||
|
case RG_GTG_MQ_SILVER_LAVA:
|
||||||
|
case RG_GTG_MQ_SILVER_WATER:
|
||||||
|
case RG_GANONS_CASTLE_MQ_SILVER_FIRE:
|
||||||
|
case RG_GANONS_CASTLE_MQ_SILVER_WATER:
|
||||||
|
case RG_GANONS_CASTLE_MQ_SILVER_SHADOW: {
|
||||||
|
s8* field = Randomizer::SilverFieldFromSaveContext(item);
|
||||||
|
if (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_SILVER) ==
|
||||||
|
RO_SHUFFLE_SILVER_WALLET) {
|
||||||
|
*field = 10;
|
||||||
|
} else {
|
||||||
|
*field += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
LUSLOG_WARN("Randomizer_Item_Give didn't have behaviour specified for getItemId=%d", item);
|
LUSLOG_WARN("Randomizer_Item_Give didn't have behaviour specified for getItemId=%d", item);
|
||||||
assert(false);
|
assert(false);
|
||||||
|
|
|
@ -44,6 +44,7 @@ class Randomizer {
|
||||||
void LoadMerchantMessages();
|
void LoadMerchantMessages();
|
||||||
void LoadHintMessages();
|
void LoadHintMessages();
|
||||||
bool IsTrialRequired(s32 trialFlag);
|
bool IsTrialRequired(s32 trialFlag);
|
||||||
|
static s8* SilverFieldFromSaveContext(RandomizerGet rg);
|
||||||
u8 GetRandoSettingValue(RandomizerSettingKey randoSettingKey);
|
u8 GetRandoSettingValue(RandomizerSettingKey randoSettingKey);
|
||||||
RandomizerCheck GetCheckFromRandomizerInf(RandomizerInf randomizerInf);
|
RandomizerCheck GetCheckFromRandomizerInf(RandomizerInf randomizerInf);
|
||||||
RandomizerInf GetRandomizerInfFromCheck(RandomizerCheck rc);
|
RandomizerInf GetRandomizerInfFromCheck(RandomizerCheck rc);
|
||||||
|
@ -57,6 +58,7 @@ class Randomizer {
|
||||||
GrassIdentity IdentifyGrass(s32 sceneNum, s32 posX, s32 posZ, s32 respawnData, s32 linkAge);
|
GrassIdentity IdentifyGrass(s32 sceneNum, s32 posX, s32 posZ, s32 respawnData, s32 linkAge);
|
||||||
CrateIdentity IdentifyCrate(s32 sceneNum, s32 posX, s32 posZ);
|
CrateIdentity IdentifyCrate(s32 sceneNum, s32 posX, s32 posZ);
|
||||||
SmallCrateIdentity IdentifySmallCrate(s32 sceneNum, s32 posX, s32 posZ);
|
SmallCrateIdentity IdentifySmallCrate(s32 sceneNum, s32 posX, s32 posZ);
|
||||||
|
SilverIdentity IdentifySilver(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,
|
||||||
|
|
|
@ -304,6 +304,7 @@ typedef enum {
|
||||||
RCTYPE_BEEHIVE, // Beehives
|
RCTYPE_BEEHIVE, // Beehives
|
||||||
RCTYPE_FISH, // Fishes
|
RCTYPE_FISH, // Fishes
|
||||||
RCTYPE_FREESTANDING, // Freestanding rupees and hearts
|
RCTYPE_FREESTANDING, // Freestanding rupees and hearts
|
||||||
|
RCTYPE_SILVER, // Silver rupees
|
||||||
RCTYPE_FAIRY, // Fairies
|
RCTYPE_FAIRY, // Fairies
|
||||||
RCTYPE_GRASS, // Grass
|
RCTYPE_GRASS, // Grass
|
||||||
} RandomizerCheckType;
|
} RandomizerCheckType;
|
||||||
|
@ -2949,6 +2950,160 @@ typedef enum {
|
||||||
RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART,
|
RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART,
|
||||||
RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART,
|
RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART,
|
||||||
RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART,
|
RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART,
|
||||||
|
RC_SHADOW_SILVER_BLADES_1,
|
||||||
|
RC_SHADOW_SILVER_BLADES_2,
|
||||||
|
RC_SHADOW_SILVER_BLADES_3,
|
||||||
|
RC_SHADOW_SILVER_BLADES_4,
|
||||||
|
RC_SHADOW_SILVER_BLADES_5,
|
||||||
|
RC_SHADOW_SILVER_PIT_1,
|
||||||
|
RC_SHADOW_SILVER_PIT_2,
|
||||||
|
RC_SHADOW_SILVER_PIT_3,
|
||||||
|
RC_SHADOW_SILVER_PIT_4,
|
||||||
|
RC_SHADOW_SILVER_PIT_5,
|
||||||
|
RC_SHADOW_SILVER_SPIKES_1,
|
||||||
|
RC_SHADOW_SILVER_SPIKES_2,
|
||||||
|
RC_SHADOW_SILVER_SPIKES_3,
|
||||||
|
RC_SHADOW_SILVER_SPIKES_4,
|
||||||
|
RC_SHADOW_SILVER_SPIKES_5,
|
||||||
|
RC_SPIRIT_SILVER_CHILD_1,
|
||||||
|
RC_SPIRIT_SILVER_CHILD_2,
|
||||||
|
RC_SPIRIT_SILVER_CHILD_3,
|
||||||
|
RC_SPIRIT_SILVER_CHILD_4,
|
||||||
|
RC_SPIRIT_SILVER_CHILD_5,
|
||||||
|
RC_SPIRIT_SILVER_SUN_1,
|
||||||
|
RC_SPIRIT_SILVER_SUN_2,
|
||||||
|
RC_SPIRIT_SILVER_SUN_3,
|
||||||
|
RC_SPIRIT_SILVER_SUN_4,
|
||||||
|
RC_SPIRIT_SILVER_SUN_5,
|
||||||
|
RC_SPIRIT_SILVER_BOULDERS_1,
|
||||||
|
RC_SPIRIT_SILVER_BOULDERS_2,
|
||||||
|
RC_SPIRIT_SILVER_BOULDERS_3,
|
||||||
|
RC_SPIRIT_SILVER_BOULDERS_4,
|
||||||
|
RC_SPIRIT_SILVER_BOULDERS_5,
|
||||||
|
RC_BOTW_SILVER_1,
|
||||||
|
RC_BOTW_SILVER_2,
|
||||||
|
RC_BOTW_SILVER_3,
|
||||||
|
RC_BOTW_SILVER_4,
|
||||||
|
RC_BOTW_SILVER_5,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLADES_1,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLADES_2,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLADES_3,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLADES_4,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLADES_5,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLOCK_1,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLOCK_2,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLOCK_3,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLOCK_4,
|
||||||
|
RC_ICE_CAVERN_SILVER_BLOCK_5,
|
||||||
|
RC_GTG_SILVER_SLOPE_1,
|
||||||
|
RC_GTG_SILVER_SLOPE_2,
|
||||||
|
RC_GTG_SILVER_SLOPE_3,
|
||||||
|
RC_GTG_SILVER_SLOPE_4,
|
||||||
|
RC_GTG_SILVER_SLOPE_5,
|
||||||
|
RC_GTG_SILVER_LAVA_1,
|
||||||
|
RC_GTG_SILVER_LAVA_2,
|
||||||
|
RC_GTG_SILVER_LAVA_3,
|
||||||
|
RC_GTG_SILVER_LAVA_4,
|
||||||
|
RC_GTG_SILVER_LAVA_5,
|
||||||
|
RC_GTG_SILVER_WATER_1,
|
||||||
|
RC_GTG_SILVER_WATER_2,
|
||||||
|
RC_GTG_SILVER_WATER_3,
|
||||||
|
RC_GTG_SILVER_WATER_4,
|
||||||
|
RC_GTG_SILVER_WATER_5,
|
||||||
|
RC_GANONS_CASTLE_SILVER_LIGHT_1,
|
||||||
|
RC_GANONS_CASTLE_SILVER_LIGHT_2,
|
||||||
|
RC_GANONS_CASTLE_SILVER_LIGHT_3,
|
||||||
|
RC_GANONS_CASTLE_SILVER_LIGHT_4,
|
||||||
|
RC_GANONS_CASTLE_SILVER_LIGHT_5,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FOREST_1,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FOREST_2,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FOREST_3,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FOREST_4,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FOREST_5,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FIRE_1,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FIRE_2,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FIRE_3,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FIRE_4,
|
||||||
|
RC_GANONS_CASTLE_SILVER_FIRE_5,
|
||||||
|
RC_GANONS_CASTLE_SILVER_SPIRIT_1,
|
||||||
|
RC_GANONS_CASTLE_SILVER_SPIRIT_2,
|
||||||
|
RC_GANONS_CASTLE_SILVER_SPIRIT_3,
|
||||||
|
RC_GANONS_CASTLE_SILVER_SPIRIT_4,
|
||||||
|
RC_GANONS_CASTLE_SILVER_SPIRIT_5,
|
||||||
|
RC_DODONGOS_CAVERN_MQ_SILVER_1,
|
||||||
|
RC_DODONGOS_CAVERN_MQ_SILVER_2,
|
||||||
|
RC_DODONGOS_CAVERN_MQ_SILVER_3,
|
||||||
|
RC_DODONGOS_CAVERN_MQ_SILVER_4,
|
||||||
|
RC_DODONGOS_CAVERN_MQ_SILVER_5,
|
||||||
|
RC_SHADOW_MQ_SILVER_BLADES_1,
|
||||||
|
RC_SHADOW_MQ_SILVER_BLADES_2,
|
||||||
|
RC_SHADOW_MQ_SILVER_BLADES_3,
|
||||||
|
RC_SHADOW_MQ_SILVER_BLADES_4,
|
||||||
|
RC_SHADOW_MQ_SILVER_BLADES_5,
|
||||||
|
RC_SHADOW_MQ_SILVER_PIT_1,
|
||||||
|
RC_SHADOW_MQ_SILVER_PIT_2,
|
||||||
|
RC_SHADOW_MQ_SILVER_PIT_3,
|
||||||
|
RC_SHADOW_MQ_SILVER_PIT_4,
|
||||||
|
RC_SHADOW_MQ_SILVER_PIT_5,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_1,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_2,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_3,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_4,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_5,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_6,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_7,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_8,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_9,
|
||||||
|
RC_SHADOW_MQ_SILVER_INVISIBLE_BLADES_10,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_1,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_2,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_3,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_4,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_5,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_6,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_7,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_8,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_9,
|
||||||
|
RC_SHADOW_MQ_SILVER_SPIKES_10,
|
||||||
|
RC_SPIRIT_MQ_SILVER_LOBBY_1,
|
||||||
|
RC_SPIRIT_MQ_SILVER_LOBBY_2,
|
||||||
|
RC_SPIRIT_MQ_SILVER_LOBBY_3,
|
||||||
|
RC_SPIRIT_MQ_SILVER_LOBBY_4,
|
||||||
|
RC_SPIRIT_MQ_SILVER_LOBBY_5,
|
||||||
|
RC_SPIRIT_MQ_SILVER_BIG_WALL_1,
|
||||||
|
RC_SPIRIT_MQ_SILVER_BIG_WALL_2,
|
||||||
|
RC_SPIRIT_MQ_SILVER_BIG_WALL_3,
|
||||||
|
RC_SPIRIT_MQ_SILVER_BIG_WALL_4,
|
||||||
|
RC_SPIRIT_MQ_SILVER_BIG_WALL_5,
|
||||||
|
RC_GTG_MQ_SILVER_SLOPE_1,
|
||||||
|
RC_GTG_MQ_SILVER_SLOPE_2,
|
||||||
|
RC_GTG_MQ_SILVER_SLOPE_3,
|
||||||
|
RC_GTG_MQ_SILVER_SLOPE_4,
|
||||||
|
RC_GTG_MQ_SILVER_SLOPE_5,
|
||||||
|
RC_GTG_MQ_SILVER_LAVA_1,
|
||||||
|
RC_GTG_MQ_SILVER_LAVA_2,
|
||||||
|
RC_GTG_MQ_SILVER_LAVA_3,
|
||||||
|
RC_GTG_MQ_SILVER_LAVA_4,
|
||||||
|
RC_GTG_MQ_SILVER_LAVA_5,
|
||||||
|
RC_GTG_MQ_SILVER_LAVA_6,
|
||||||
|
RC_GTG_MQ_SILVER_WATER_1,
|
||||||
|
RC_GTG_MQ_SILVER_WATER_2,
|
||||||
|
RC_GTG_MQ_SILVER_WATER_3,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_FIRE_1,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_FIRE_2,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_FIRE_3,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_FIRE_4,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_FIRE_5,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_WATER_1,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_WATER_2,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_WATER_3,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_WATER_4,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_WATER_5,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_SHADOW_1,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_SHADOW_2,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_SHADOW_3,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_SHADOW_4,
|
||||||
|
RC_GANONS_CASTLE_MQ_SILVER_SHADOW_5,
|
||||||
RC_SFM_FAIRY_GROTTO_FAIRY_1,
|
RC_SFM_FAIRY_GROTTO_FAIRY_1,
|
||||||
RC_SFM_FAIRY_GROTTO_FAIRY_2,
|
RC_SFM_FAIRY_GROTTO_FAIRY_2,
|
||||||
RC_SFM_FAIRY_GROTTO_FAIRY_3,
|
RC_SFM_FAIRY_GROTTO_FAIRY_3,
|
||||||
|
@ -3916,6 +4071,35 @@ typedef enum {
|
||||||
RG_GERUDO_FORTRESS_KEY_RING,
|
RG_GERUDO_FORTRESS_KEY_RING,
|
||||||
RG_GANONS_CASTLE_KEY_RING,
|
RG_GANONS_CASTLE_KEY_RING,
|
||||||
RG_TREASURE_GAME_KEY_RING,
|
RG_TREASURE_GAME_KEY_RING,
|
||||||
|
RG_SHADOW_SILVER_BLADES,
|
||||||
|
RG_SHADOW_SILVER_PIT,
|
||||||
|
RG_SHADOW_SILVER_SPIKES,
|
||||||
|
RG_SPIRIT_SILVER_CHILD,
|
||||||
|
RG_SPIRIT_SILVER_SUN,
|
||||||
|
RG_SPIRIT_SILVER_BOULDERS,
|
||||||
|
RG_BOTW_SILVER,
|
||||||
|
RG_ICE_CAVERN_SILVER_BLADES,
|
||||||
|
RG_ICE_CAVERN_SILVER_BLOCK,
|
||||||
|
RG_GTG_SILVER_SLOPE,
|
||||||
|
RG_GTG_SILVER_LAVA,
|
||||||
|
RG_GTG_SILVER_WATER,
|
||||||
|
RG_GANONS_CASTLE_SILVER_LIGHT,
|
||||||
|
RG_GANONS_CASTLE_SILVER_FOREST,
|
||||||
|
RG_GANONS_CASTLE_SILVER_FIRE,
|
||||||
|
RG_GANONS_CASTLE_SILVER_SPIRIT,
|
||||||
|
RG_DODONGOS_CAVERN_MQ_SILVER,
|
||||||
|
RG_SHADOW_MQ_SILVER_BLADES,
|
||||||
|
RG_SHADOW_MQ_SILVER_PIT,
|
||||||
|
RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES,
|
||||||
|
RG_SHADOW_MQ_SILVER_SPIKES,
|
||||||
|
RG_SPIRIT_MQ_SILVER_LOBBY,
|
||||||
|
RG_SPIRIT_MQ_SILVER_BIG_WALL,
|
||||||
|
RG_GTG_MQ_SILVER_SLOPE,
|
||||||
|
RG_GTG_MQ_SILVER_LAVA,
|
||||||
|
RG_GTG_MQ_SILVER_WATER,
|
||||||
|
RG_GANONS_CASTLE_MQ_SILVER_FIRE,
|
||||||
|
RG_GANONS_CASTLE_MQ_SILVER_WATER,
|
||||||
|
RG_GANONS_CASTLE_MQ_SILVER_SHADOW,
|
||||||
RG_KOKIRI_EMERALD,
|
RG_KOKIRI_EMERALD,
|
||||||
RG_GORON_RUBY,
|
RG_GORON_RUBY,
|
||||||
RG_ZORA_SAPPHIRE,
|
RG_ZORA_SAPPHIRE,
|
||||||
|
@ -5207,6 +5391,7 @@ typedef enum {
|
||||||
RHT_BRONZE_SCALE,
|
RHT_BRONZE_SCALE,
|
||||||
RHT_FISHING_POLE,
|
RHT_FISHING_POLE,
|
||||||
RHT_SKELETON_KEY,
|
RHT_SKELETON_KEY,
|
||||||
|
RHT_SILVER,
|
||||||
RHT_EPONA,
|
RHT_EPONA,
|
||||||
RHT_OVERWORLD_KEY,
|
RHT_OVERWORLD_KEY,
|
||||||
RHT_HINT_MYSTERIOUS,
|
RHT_HINT_MYSTERIOUS,
|
||||||
|
@ -5534,6 +5719,14 @@ typedef enum {
|
||||||
RHT_ICE_CAVERN_RUPEE,
|
RHT_ICE_CAVERN_RUPEE,
|
||||||
RHT_GERUDO_TRAINING_GROUNDS_HEART,
|
RHT_GERUDO_TRAINING_GROUNDS_HEART,
|
||||||
RHT_GANONS_CASTLE_HEART,
|
RHT_GANONS_CASTLE_HEART,
|
||||||
|
// Silver Shuffle
|
||||||
|
RHT_DODONGOS_CAVERN_SILVER,
|
||||||
|
RHT_SHADOW_TEMPLE_SILVER,
|
||||||
|
RHT_SPIRIT_TEMPLE_SILVER,
|
||||||
|
RHT_BOTW_SILVER,
|
||||||
|
RHT_ICE_CAVERN_SILVER,
|
||||||
|
RHT_GTG_SILVER,
|
||||||
|
RHT_GANONS_CASTLE_SILVER,
|
||||||
// Fairy Shuffle
|
// Fairy Shuffle
|
||||||
RHT_SFM_FAIRY_GROTTO_FAIRY,
|
RHT_SFM_FAIRY_GROTTO_FAIRY,
|
||||||
RHT_ZR_FAIRY_GROTTO_FAIRY,
|
RHT_ZR_FAIRY_GROTTO_FAIRY,
|
||||||
|
@ -5954,6 +6147,7 @@ typedef enum {
|
||||||
RSK_SHUFFLE_DEKU_STICK_BAG,
|
RSK_SHUFFLE_DEKU_STICK_BAG,
|
||||||
RSK_SHUFFLE_DEKU_NUT_BAG,
|
RSK_SHUFFLE_DEKU_NUT_BAG,
|
||||||
RSK_SHUFFLE_FREESTANDING,
|
RSK_SHUFFLE_FREESTANDING,
|
||||||
|
RSK_SHUFFLE_SILVER,
|
||||||
RSK_SHUFFLE_FAIRIES,
|
RSK_SHUFFLE_FAIRIES,
|
||||||
RSK_LOCK_OVERWORLD_DOORS,
|
RSK_LOCK_OVERWORLD_DOORS,
|
||||||
RSK_SHUFFLE_GRASS,
|
RSK_SHUFFLE_GRASS,
|
||||||
|
@ -6302,6 +6496,14 @@ typedef enum {
|
||||||
RO_SHUFFLE_FREESTANDING_ALL,
|
RO_SHUFFLE_FREESTANDING_ALL,
|
||||||
} RandoOptionFreestanding;
|
} RandoOptionFreestanding;
|
||||||
|
|
||||||
|
// Shuffle Silver settings (off, on, wallet, start with)
|
||||||
|
typedef enum {
|
||||||
|
RO_SHUFFLE_SILVER_OFF,
|
||||||
|
RO_SHUFFLE_SILVER_ON,
|
||||||
|
RO_SHUFFLE_SILVER_WALLET,
|
||||||
|
RO_SHUFFLE_SILVER_STARTWITH,
|
||||||
|
} RandoOptionSilver;
|
||||||
|
|
||||||
// Shuffle Pots settings (off, dungeons, overworld, all)
|
// Shuffle Pots settings (off, dungeons, overworld, all)
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RO_SHUFFLE_POTS_OFF,
|
RO_SHUFFLE_POTS_OFF,
|
||||||
|
@ -6441,6 +6643,11 @@ typedef struct SmallCrateIdentity {
|
||||||
RandomizerCheck randomizerCheck;
|
RandomizerCheck randomizerCheck;
|
||||||
} SmallCrateIdentity;
|
} SmallCrateIdentity;
|
||||||
|
|
||||||
|
typedef struct SilverIdentity {
|
||||||
|
RandomizerInf randomizerInf;
|
||||||
|
RandomizerCheck randomizerCheck;
|
||||||
|
} SilverIdentity;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TRACKER_WINDOW_FLOATING,
|
TRACKER_WINDOW_FLOATING,
|
||||||
TRACKER_WINDOW_WINDOW,
|
TRACKER_WINDOW_WINDOW,
|
||||||
|
|
|
@ -175,6 +175,8 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
|
||||||
((CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleFreestanding"), RO_SHUFFLE_FREESTANDING_OFF) ==
|
((CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleFreestanding"), RO_SHUFFLE_FREESTANDING_OFF) ==
|
||||||
RO_SHUFFLE_FREESTANDING_DUNGEONS) &&
|
RO_SHUFFLE_FREESTANDING_DUNGEONS) &&
|
||||||
RandomizerCheckObjects::AreaIsDungeon(location.GetArea()))) &&
|
RandomizerCheckObjects::AreaIsDungeon(location.GetArea()))) &&
|
||||||
|
(location.GetRCType() != RCTYPE_SILVER ||
|
||||||
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleSilver"), RO_GENERIC_NO)) &&
|
||||||
(location.GetRCType() != RCTYPE_BEEHIVE ||
|
(location.GetRCType() != RCTYPE_BEEHIVE ||
|
||||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleBeehives"), RO_GENERIC_NO)) &&
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("ShuffleBeehives"), RO_GENERIC_NO)) &&
|
||||||
(location.GetRCType() != RCTYPE_COW ||
|
(location.GetRCType() != RCTYPE_COW ||
|
||||||
|
|
|
@ -56,6 +56,7 @@ bool showBeehives;
|
||||||
bool showCows;
|
bool showCows;
|
||||||
bool showOverworldFreestanding;
|
bool showOverworldFreestanding;
|
||||||
bool showDungeonFreestanding;
|
bool showDungeonFreestanding;
|
||||||
|
bool showSilver;
|
||||||
bool showAdultTrade;
|
bool showAdultTrade;
|
||||||
bool showKokiriSword;
|
bool showKokiriSword;
|
||||||
bool showMasterSword;
|
bool showMasterSword;
|
||||||
|
@ -1505,6 +1506,8 @@ void LoadSettings() {
|
||||||
showDungeonFreestanding = false;
|
showDungeonFreestanding = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showSilver = OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_SILVER);
|
||||||
} else { // Vanilla
|
} else { // Vanilla
|
||||||
showOverworldFreestanding = false;
|
showOverworldFreestanding = false;
|
||||||
showDungeonFreestanding = true;
|
showDungeonFreestanding = true;
|
||||||
|
@ -1583,6 +1586,7 @@ bool IsCheckShuffled(RandomizerCheck rc) {
|
||||||
(loc->GetRCType() != RCTYPE_FREESTANDING ||
|
(loc->GetRCType() != RCTYPE_FREESTANDING ||
|
||||||
(showOverworldFreestanding && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
(showOverworldFreestanding && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
|
||||||
(showDungeonFreestanding && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
(showDungeonFreestanding && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
|
||||||
|
(loc->GetRCType() != RCTYPE_SILVER || showSilver) &&
|
||||||
(loc->GetRCType() != RCTYPE_ADULT_TRADE || showAdultTrade ||
|
(loc->GetRCType() != RCTYPE_ADULT_TRADE || showAdultTrade ||
|
||||||
rc == RC_KAK_ANJU_AS_ADULT || // adult trade checks that are always shuffled
|
rc == RC_KAK_ANJU_AS_ADULT || // adult trade checks that are always shuffled
|
||||||
rc == RC_DMT_TRADE_CLAIM_CHECK // even when shuffle adult trade is off
|
rc == RC_DMT_TRADE_CLAIM_CHECK // even when shuffle adult trade is off
|
||||||
|
|
|
@ -1313,6 +1313,161 @@ DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART)
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART)
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART)
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART)
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART)
|
||||||
|
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_BLADES_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_BLADES_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_BLADES_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_BLADES_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_BLADES_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_PIT_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_PIT_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_PIT_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_PIT_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_PIT_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_SPIKES_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_SPIKES_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_SPIKES_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_SPIKES_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_SPIKES_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_CHILD_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_CHILD_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_CHILD_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_CHILD_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_CHILD_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_SUN_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_SUN_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_SUN_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_SUN_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_SUN_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_BOULDERS_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_BOULDERS_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_BOULDERS_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_BOULDERS_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_BOULDERS_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_BOTW_SILVER_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_BOTW_SILVER_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_BOTW_SILVER_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_BOTW_SILVER_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_BOTW_SILVER_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLADES_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLADES_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLADES_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLADES_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLADES_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLOCK_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLOCK_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLOCK_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLOCK_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLOCK_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_SLOPE_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_SLOPE_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_SLOPE_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_SLOPE_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_SLOPE_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_LAVA_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_LAVA_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_LAVA_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_LAVA_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_LAVA_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_WATER_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_WATER_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_WATER_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_WATER_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_WATER_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_LIGHT_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FOREST_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FOREST_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FOREST_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FOREST_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FOREST_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FIRE_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FIRE_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FIRE_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FIRE_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FIRE_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_BLADES_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_BLADES_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_BLADES_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_BLADES_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_BLADES_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_PIT_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_PIT_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_PIT_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_PIT_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_PIT_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_6)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_7)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_8)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_9)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES_10)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_6)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_7)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_8)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_9)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES_10)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_LOBBY_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_SLOPE_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_SLOPE_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_SLOPE_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_SLOPE_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_SLOPE_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_LAVA_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_LAVA_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_LAVA_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_LAVA_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_LAVA_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_LAVA_6)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_WATER_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_WATER_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_WATER_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER_5)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_1)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_2)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_3)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_4)
|
||||||
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_5)
|
||||||
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_1)
|
DEFINE_RAND_INF(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_1)
|
||||||
DEFINE_RAND_INF(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_2)
|
DEFINE_RAND_INF(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_2)
|
||||||
DEFINE_RAND_INF(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_3)
|
DEFINE_RAND_INF(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_3)
|
||||||
|
|
|
@ -209,6 +209,12 @@ void SetStartingItems() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Randomizer_GetSettingValue(RSK_SHUFFLE_SILVER) == RO_SHUFFLE_SILVER_STARTWITH) {
|
||||||
|
for (int rg = (int)RG_SHADOW_SILVER_BLADES; rg <= (int)RG_GANONS_CASTLE_MQ_SILVER_SHADOW; rg++) {
|
||||||
|
*Randomizer::SilverFieldFromSaveContext((RandomizerGet)rg) = 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (Randomizer_GetSettingValue(RSK_BOSS_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH) {
|
if (Randomizer_GetSettingValue(RSK_BOSS_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH) {
|
||||||
gSaveContext.inventory.dungeonItems[SCENE_FOREST_TEMPLE] |= 1; // Forest
|
gSaveContext.inventory.dungeonItems[SCENE_FOREST_TEMPLE] |= 1; // Forest
|
||||||
gSaveContext.inventory.dungeonItems[SCENE_FIRE_TEMPLE] |= 1; // Fire
|
gSaveContext.inventory.dungeonItems[SCENE_FIRE_TEMPLE] |= 1; // Fire
|
||||||
|
|
|
@ -237,6 +237,7 @@ void Settings::CreateOptions() {
|
||||||
OPT_BOOL(RSK_SHUFFLE_DEKU_STICK_BAG, "Shuffle Deku Stick Bag", CVAR_RANDOMIZER_SETTING("ShuffleDekuStickBag"), mOptionDescriptions[RSK_SHUFFLE_DEKU_STICK_BAG], IMFLAG_SEPARATOR_BOTTOM, WidgetType::Checkbox, RO_GENERIC_OFF);
|
OPT_BOOL(RSK_SHUFFLE_DEKU_STICK_BAG, "Shuffle Deku Stick Bag", CVAR_RANDOMIZER_SETTING("ShuffleDekuStickBag"), mOptionDescriptions[RSK_SHUFFLE_DEKU_STICK_BAG], IMFLAG_SEPARATOR_BOTTOM, WidgetType::Checkbox, RO_GENERIC_OFF);
|
||||||
OPT_BOOL(RSK_SHUFFLE_DEKU_NUT_BAG, "Shuffle Deku Nut Bag", CVAR_RANDOMIZER_SETTING("ShuffleDekuNutBag"), mOptionDescriptions[RSK_SHUFFLE_DEKU_NUT_BAG], IMFLAG_SEPARATOR_BOTTOM, WidgetType::Checkbox, RO_GENERIC_OFF);
|
OPT_BOOL(RSK_SHUFFLE_DEKU_NUT_BAG, "Shuffle Deku Nut Bag", CVAR_RANDOMIZER_SETTING("ShuffleDekuNutBag"), mOptionDescriptions[RSK_SHUFFLE_DEKU_NUT_BAG], IMFLAG_SEPARATOR_BOTTOM, WidgetType::Checkbox, RO_GENERIC_OFF);
|
||||||
OPT_U8(RSK_SHUFFLE_FREESTANDING, "Shuffle Freestanding Items", {"Off", "Dungeons", "Overworld", "All Items"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleFreestanding"), mOptionDescriptions[RSK_SHUFFLE_FREESTANDING], WidgetType::Combobox, RO_SHUFFLE_FREESTANDING_OFF);
|
OPT_U8(RSK_SHUFFLE_FREESTANDING, "Shuffle Freestanding Items", {"Off", "Dungeons", "Overworld", "All Items"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleFreestanding"), mOptionDescriptions[RSK_SHUFFLE_FREESTANDING], WidgetType::Combobox, RO_SHUFFLE_FREESTANDING_OFF);
|
||||||
|
OPT_U8(RSK_SHUFFLE_SILVER, "Shuffle Silver Rupees", {"Off", "On", "Wallet", "Start With"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleSilver"), mOptionDescriptions[RSK_SHUFFLE_SILVER], WidgetType::Combobox, RO_SHUFFLE_SILVER_OFF);
|
||||||
OPT_U8(RSK_FISHSANITY, "Fishsanity", {"Off", "Shuffle only Hyrule Loach", "Shuffle Fishing Pond", "Shuffle Overworld Fish", "Shuffle Both"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("Fishsanity"), mOptionDescriptions[RSK_FISHSANITY], WidgetType::Combobox, RO_FISHSANITY_OFF);
|
OPT_U8(RSK_FISHSANITY, "Fishsanity", {"Off", "Shuffle only Hyrule Loach", "Shuffle Fishing Pond", "Shuffle Overworld Fish", "Shuffle Both"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("Fishsanity"), mOptionDescriptions[RSK_FISHSANITY], WidgetType::Combobox, RO_FISHSANITY_OFF);
|
||||||
OPT_U8(RSK_FISHSANITY_POND_COUNT, "Pond Fish Count", {NumOpts(0,17,1)}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("FishsanityPondCount"), mOptionDescriptions[RSK_FISHSANITY_POND_COUNT], WidgetType::Slider, 0, true, IMFLAG_NONE);
|
OPT_U8(RSK_FISHSANITY_POND_COUNT, "Pond Fish Count", {NumOpts(0,17,1)}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("FishsanityPondCount"), mOptionDescriptions[RSK_FISHSANITY_POND_COUNT], WidgetType::Slider, 0, true, IMFLAG_NONE);
|
||||||
OPT_BOOL(RSK_FISHSANITY_AGE_SPLIT, "Pond Age Split", CVAR_RANDOMIZER_SETTING("FishsanityAgeSplit"), mOptionDescriptions[RSK_FISHSANITY_AGE_SPLIT]);
|
OPT_BOOL(RSK_FISHSANITY_AGE_SPLIT, "Pond Age Split", CVAR_RANDOMIZER_SETTING("FishsanityAgeSplit"), mOptionDescriptions[RSK_FISHSANITY_AGE_SPLIT]);
|
||||||
|
@ -1247,6 +1248,7 @@ void Settings::CreateOptions() {
|
||||||
&mOptions[RSK_SHUFFLE_DEKU_STICK_BAG],
|
&mOptions[RSK_SHUFFLE_DEKU_STICK_BAG],
|
||||||
&mOptions[RSK_SHUFFLE_DEKU_NUT_BAG],
|
&mOptions[RSK_SHUFFLE_DEKU_NUT_BAG],
|
||||||
&mOptions[RSK_SHUFFLE_FREESTANDING],
|
&mOptions[RSK_SHUFFLE_FREESTANDING],
|
||||||
|
&mOptions[RSK_SHUFFLE_SILVER],
|
||||||
},
|
},
|
||||||
WidgetContainerType::COLUMN);
|
WidgetContainerType::COLUMN);
|
||||||
mOptionGroups[RSG_SHUFFLE_NPCS_IMGUI] =
|
mOptionGroups[RSG_SHUFFLE_NPCS_IMGUI] =
|
||||||
|
@ -1540,6 +1542,7 @@ void Settings::CreateOptions() {
|
||||||
&mOptions[RSK_SHUFFLE_DEKU_STICK_BAG],
|
&mOptions[RSK_SHUFFLE_DEKU_STICK_BAG],
|
||||||
&mOptions[RSK_SHUFFLE_DEKU_NUT_BAG],
|
&mOptions[RSK_SHUFFLE_DEKU_NUT_BAG],
|
||||||
&mOptions[RSK_SHUFFLE_FREESTANDING],
|
&mOptions[RSK_SHUFFLE_FREESTANDING],
|
||||||
|
&mOptions[RSK_SHUFFLE_SILVER],
|
||||||
&mOptions[RSK_SHUFFLE_FAIRIES],
|
&mOptions[RSK_SHUFFLE_FAIRIES],
|
||||||
});
|
});
|
||||||
mOptionGroups[RSG_SHUFFLE_DUNGEON_ITEMS] =
|
mOptionGroups[RSG_SHUFFLE_DUNGEON_ITEMS] =
|
||||||
|
|
|
@ -56,6 +56,7 @@ class StaticData {
|
||||||
static void RegisterFairyLocations();
|
static void RegisterFairyLocations();
|
||||||
static void RegisterPotLocations();
|
static void RegisterPotLocations();
|
||||||
static void RegisterFreestandingLocations();
|
static void RegisterFreestandingLocations();
|
||||||
|
static void RegisterSilverLocations();
|
||||||
static void RegisterGrassLocations();
|
static void RegisterGrassLocations();
|
||||||
static void RegisterCrateLocations();
|
static void RegisterCrateLocations();
|
||||||
static void InitHashMaps();
|
static void InitHashMaps();
|
||||||
|
|
|
@ -225,6 +225,43 @@ void SaveManager::LoadRandomizer() {
|
||||||
|
|
||||||
SaveManager::Instance->LoadData("triforcePiecesCollected",
|
SaveManager::Instance->LoadData("triforcePiecesCollected",
|
||||||
gSaveContext.ship.quest.data.randomizer.triforcePiecesCollected);
|
gSaveContext.ship.quest.data.randomizer.triforcePiecesCollected);
|
||||||
|
SaveManager::Instance->LoadData("silverShadowBlades", gSaveContext.ship.quest.data.randomizer.silverShadowBlades);
|
||||||
|
SaveManager::Instance->LoadData("silverShadowPit", gSaveContext.ship.quest.data.randomizer.silverShadowPit);
|
||||||
|
SaveManager::Instance->LoadData("silverShadowSpikes", gSaveContext.ship.quest.data.randomizer.silverShadowSpikes);
|
||||||
|
SaveManager::Instance->LoadData("silverSpiritChild", gSaveContext.ship.quest.data.randomizer.silverSpiritChild);
|
||||||
|
SaveManager::Instance->LoadData("silverSpiritSun", gSaveContext.ship.quest.data.randomizer.silverSpiritSun);
|
||||||
|
SaveManager::Instance->LoadData("silverSpiritBoulders",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverSpiritBoulders);
|
||||||
|
SaveManager::Instance->LoadData("silverBotw", gSaveContext.ship.quest.data.randomizer.silverBotw);
|
||||||
|
SaveManager::Instance->LoadData("silverIceCavernBlades",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverIceCavernBlades);
|
||||||
|
SaveManager::Instance->LoadData("silverIceCavernBlock",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverIceCavernBlock);
|
||||||
|
SaveManager::Instance->LoadData("silverGtgSlope", gSaveContext.ship.quest.data.randomizer.silverGtgSlope);
|
||||||
|
SaveManager::Instance->LoadData("silverGtgLava", gSaveContext.ship.quest.data.randomizer.silverGtgLava);
|
||||||
|
SaveManager::Instance->LoadData("silverGtgWater", gSaveContext.ship.quest.data.randomizer.silverGtgWater);
|
||||||
|
SaveManager::Instance->LoadData("silverGanonLight", gSaveContext.ship.quest.data.randomizer.silverGanonLight);
|
||||||
|
SaveManager::Instance->LoadData("silverGanonForest", gSaveContext.ship.quest.data.randomizer.silverGanonForest);
|
||||||
|
SaveManager::Instance->LoadData("silverGanonFire", gSaveContext.ship.quest.data.randomizer.silverGanonFire);
|
||||||
|
SaveManager::Instance->LoadData("silverGanonSpirit", gSaveContext.ship.quest.data.randomizer.silverGanonSpirit);
|
||||||
|
SaveManager::Instance->LoadData("silverMqDodongosCavern",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqDodongosCavern);
|
||||||
|
SaveManager::Instance->LoadData("silverMqShadowBlades",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqShadowBlades);
|
||||||
|
SaveManager::Instance->LoadData("silverMqShadowPit", gSaveContext.ship.quest.data.randomizer.silverMqShadowPit);
|
||||||
|
SaveManager::Instance->LoadData("silverMqShadowInvisibleBlades",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqShadowInvisibleBlades);
|
||||||
|
SaveManager::Instance->LoadData("silverMqShadowSpikes",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqShadowSpikes);
|
||||||
|
SaveManager::Instance->LoadData("silverMqSpiritLobby", gSaveContext.ship.quest.data.randomizer.silverMqSpiritLobby);
|
||||||
|
SaveManager::Instance->LoadData("silverMqSpiritBigWall",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqSpiritBigWall);
|
||||||
|
SaveManager::Instance->LoadData("silverMqGtgSlope", gSaveContext.ship.quest.data.randomizer.silverMqGtgSlope);
|
||||||
|
SaveManager::Instance->LoadData("silverMqGtgLava", gSaveContext.ship.quest.data.randomizer.silverMqGtgLava);
|
||||||
|
SaveManager::Instance->LoadData("silverMqGtgWater", gSaveContext.ship.quest.data.randomizer.silverMqGtgWater);
|
||||||
|
SaveManager::Instance->LoadData("silverMqGanonFire", gSaveContext.ship.quest.data.randomizer.silverMqGanonFire);
|
||||||
|
SaveManager::Instance->LoadData("silverMqGanonWater", gSaveContext.ship.quest.data.randomizer.silverMqGanonWater);
|
||||||
|
SaveManager::Instance->LoadData("silverMqGanonShadow", gSaveContext.ship.quest.data.randomizer.silverMqGanonShadow);
|
||||||
|
|
||||||
SaveManager::Instance->LoadData("pendingIceTrapCount", gSaveContext.ship.pendingIceTrapCount);
|
SaveManager::Instance->LoadData("pendingIceTrapCount", gSaveContext.ship.pendingIceTrapCount);
|
||||||
|
|
||||||
|
@ -377,6 +414,43 @@ void SaveManager::SaveRandomizer(SaveContext* saveContext, int sectionID, bool f
|
||||||
|
|
||||||
SaveManager::Instance->SaveData("triforcePiecesCollected",
|
SaveManager::Instance->SaveData("triforcePiecesCollected",
|
||||||
saveContext->ship.quest.data.randomizer.triforcePiecesCollected);
|
saveContext->ship.quest.data.randomizer.triforcePiecesCollected);
|
||||||
|
SaveManager::Instance->SaveData("silverShadowBlades", gSaveContext.ship.quest.data.randomizer.silverShadowBlades);
|
||||||
|
SaveManager::Instance->SaveData("silverShadowPit", gSaveContext.ship.quest.data.randomizer.silverShadowPit);
|
||||||
|
SaveManager::Instance->SaveData("silverShadowSpikes", gSaveContext.ship.quest.data.randomizer.silverShadowSpikes);
|
||||||
|
SaveManager::Instance->SaveData("silverSpiritChild", gSaveContext.ship.quest.data.randomizer.silverSpiritChild);
|
||||||
|
SaveManager::Instance->SaveData("silverSpiritSun", gSaveContext.ship.quest.data.randomizer.silverSpiritSun);
|
||||||
|
SaveManager::Instance->SaveData("silverSpiritBoulders",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverSpiritBoulders);
|
||||||
|
SaveManager::Instance->SaveData("silverBotw", gSaveContext.ship.quest.data.randomizer.silverBotw);
|
||||||
|
SaveManager::Instance->SaveData("silverIceCavernBlades",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverIceCavernBlades);
|
||||||
|
SaveManager::Instance->SaveData("silverIceCavernBlock",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverIceCavernBlock);
|
||||||
|
SaveManager::Instance->SaveData("silverGtgSlope", gSaveContext.ship.quest.data.randomizer.silverGtgSlope);
|
||||||
|
SaveManager::Instance->SaveData("silverGtgLava", gSaveContext.ship.quest.data.randomizer.silverGtgLava);
|
||||||
|
SaveManager::Instance->SaveData("silverGtgWater", gSaveContext.ship.quest.data.randomizer.silverGtgWater);
|
||||||
|
SaveManager::Instance->SaveData("silverGanonLight", gSaveContext.ship.quest.data.randomizer.silverGanonLight);
|
||||||
|
SaveManager::Instance->SaveData("silverGanonForest", gSaveContext.ship.quest.data.randomizer.silverGanonForest);
|
||||||
|
SaveManager::Instance->SaveData("silverGanonFire", gSaveContext.ship.quest.data.randomizer.silverGanonFire);
|
||||||
|
SaveManager::Instance->SaveData("silverGanonSpirit", gSaveContext.ship.quest.data.randomizer.silverGanonSpirit);
|
||||||
|
SaveManager::Instance->SaveData("silverMqDodongosCavern",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqDodongosCavern);
|
||||||
|
SaveManager::Instance->SaveData("silverMqShadowBlades",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqShadowBlades);
|
||||||
|
SaveManager::Instance->SaveData("silverMqShadowPit", gSaveContext.ship.quest.data.randomizer.silverMqShadowPit);
|
||||||
|
SaveManager::Instance->SaveData("silverMqShadowInvisibleBlades",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqShadowInvisibleBlades);
|
||||||
|
SaveManager::Instance->SaveData("silverMqShadowSpikes",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqShadowSpikes);
|
||||||
|
SaveManager::Instance->SaveData("silverMqSpiritLobby", gSaveContext.ship.quest.data.randomizer.silverMqSpiritLobby);
|
||||||
|
SaveManager::Instance->SaveData("silverMqSpiritBigWall",
|
||||||
|
gSaveContext.ship.quest.data.randomizer.silverMqSpiritBigWall);
|
||||||
|
SaveManager::Instance->SaveData("silverMqGtgSlope", gSaveContext.ship.quest.data.randomizer.silverMqGtgSlope);
|
||||||
|
SaveManager::Instance->SaveData("silverMqGtgLava", gSaveContext.ship.quest.data.randomizer.silverMqGtgLava);
|
||||||
|
SaveManager::Instance->SaveData("silverMqGtgWater", gSaveContext.ship.quest.data.randomizer.silverMqGtgWater);
|
||||||
|
SaveManager::Instance->SaveData("silverMqGanonFire", gSaveContext.ship.quest.data.randomizer.silverMqGanonFire);
|
||||||
|
SaveManager::Instance->SaveData("silverMqGanonWater", gSaveContext.ship.quest.data.randomizer.silverMqGanonWater);
|
||||||
|
SaveManager::Instance->SaveData("silverMqGanonShadow", gSaveContext.ship.quest.data.randomizer.silverMqGanonShadow);
|
||||||
|
|
||||||
SaveManager::Instance->SaveData("pendingIceTrapCount", saveContext->ship.pendingIceTrapCount);
|
SaveManager::Instance->SaveData("pendingIceTrapCount", saveContext->ship.pendingIceTrapCount);
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||||
#include "objects/object_tsubo/object_tsubo.h"
|
#include "objects/object_tsubo/object_tsubo.h"
|
||||||
#include "objects/object_gi_rupy/object_gi_rupy.h"
|
#include "objects/object_gi_rupy/object_gi_rupy.h"
|
||||||
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
#include "soh/frame_interpolation.h"
|
#include "soh/frame_interpolation.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED)
|
#define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED)
|
||||||
|
@ -101,7 +102,7 @@ void EnGSwitch_Init(Actor* thisx, PlayState* play) {
|
||||||
// "maximum number of checks"
|
// "maximum number of checks"
|
||||||
osSyncPrintf(VT_FGCOL(PURPLE) "☆☆☆☆☆ 最大チェック数 ☆☆☆☆☆ %d\n" VT_RST, this->silverCount);
|
osSyncPrintf(VT_FGCOL(PURPLE) "☆☆☆☆☆ 最大チェック数 ☆☆☆☆☆ %d\n" VT_RST, this->silverCount);
|
||||||
osSyncPrintf("\n\n");
|
osSyncPrintf("\n\n");
|
||||||
if (Flags_GetSwitch(play, this->switchFlag)) {
|
if (GameInteractor_Should(VB_SILVER_DESPAWN, Flags_GetSwitch(play, this->switchFlag), this)) {
|
||||||
// This is a reference to Hokuto no Ken
|
// This is a reference to Hokuto no Ken
|
||||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ You are Shock! ☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
|
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ You are Shock! ☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
|
||||||
Actor_Kill(&this->actor);
|
Actor_Kill(&this->actor);
|
||||||
|
@ -119,7 +120,7 @@ void EnGSwitch_Init(Actor* thisx, PlayState* play) {
|
||||||
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
|
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
|
||||||
this->actor.draw = EnGSwitch_DrawRupee;
|
this->actor.draw = EnGSwitch_DrawRupee;
|
||||||
this->actor.shape.yOffset = 700.0f;
|
this->actor.shape.yOffset = 700.0f;
|
||||||
if (Flags_GetSwitch(play, this->switchFlag)) {
|
if (GameInteractor_Should(VB_SILVER_DESPAWN, Flags_GetSwitch(play, this->switchFlag), this)) {
|
||||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ You are Shock! ☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
|
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ You are Shock! ☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
|
||||||
Actor_Kill(&this->actor);
|
Actor_Kill(&this->actor);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue