mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-20 13:23:45 -07:00
implement requiring multiple rupees & starting with silver rupees
This commit is contained in:
parent
687a693351
commit
fb7e9ea516
17 changed files with 391 additions and 183 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 {
|
||||||
|
|
|
@ -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, TODO_TRANSLATE, {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_SHADOW_TEMPLE_SILVER] = HintText(CustomMessage("They say that silver in #Shadow Temple# holds #[[1]]#.", TODO_TRANSLATE, TODO_TRANSLATE, {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_SPIRIT_TEMPLE_SILVER] = HintText(CustomMessage("They say that silver in #Spirit Temple# holds #[[1]]#.", TODO_TRANSLATE, TODO_TRANSLATE, {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_BOTW_SILVER] = HintText(CustomMessage("They say that silver in #Bottom of the Well# holds #[[1]]#.", TODO_TRANSLATE, TODO_TRANSLATE, {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_ICE_CAVERN_SILVER] = HintText(CustomMessage("They say that silver in #Ice Cavern# holds #[[1]]#.", TODO_TRANSLATE, TODO_TRANSLATE, {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_GTG_SILVER] = HintText(CustomMessage("They say that silver in #Gerudo Training Ground# holds #[[1]]#.", TODO_TRANSLATE, TODO_TRANSLATE, {QM_RED, QM_GREEN}));
|
||||||
|
hintTextTable[RHT_GANONS_CASTLE_SILVER] = HintText(CustomMessage("They say that silver in #Ganon's Castle# holds #[[1]]#.", TODO_TRANSLATE, TODO_TRANSLATE, {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*/ TODO_TRANSLATE));
|
||||||
|
|
||||||
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
|
||||||
{
|
{
|
||||||
|
|
|
@ -1201,60 +1201,62 @@ void GenerateItemPool() {
|
||||||
AddItemToMainPool(RG_SHADOW_TEMPLE_BOSS_KEY);
|
AddItemToMainPool(RG_SHADOW_TEMPLE_BOSS_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->GetOption(RSK_SHUFFLE_SILVER)) {
|
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();
|
auto dungeons = ctx->GetDungeons();
|
||||||
if (dungeons->GetDungeonFromScene(SCENE_DODONGOS_CAVERN)->IsMQ()) {
|
if (dungeons->GetDungeonFromScene(SCENE_DODONGOS_CAVERN)->IsMQ()) {
|
||||||
AddItemToMainPool(RG_DODONGOS_CAVERN_MQ_SILVER);
|
AddItemToMainPool(RG_DODONGOS_CAVERN_MQ_SILVER, isWallet ? 1 : 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dungeons->GetDungeonFromScene(SCENE_SHADOW_TEMPLE)->IsVanilla()) {
|
if (dungeons->GetDungeonFromScene(SCENE_SHADOW_TEMPLE)->IsVanilla()) {
|
||||||
AddItemToMainPool(RG_SHADOW_SILVER_BLADES);
|
AddItemToMainPool(RG_SHADOW_SILVER_BLADES, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_SHADOW_SILVER_PIT);
|
AddItemToMainPool(RG_SHADOW_SILVER_PIT, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_SHADOW_SILVER_SPIKES);
|
AddItemToMainPool(RG_SHADOW_SILVER_SPIKES, isWallet ? 1 : 5);
|
||||||
} else {
|
} else {
|
||||||
AddItemToMainPool(RG_SHADOW_MQ_SILVER_BLADES);
|
AddItemToMainPool(RG_SHADOW_MQ_SILVER_BLADES, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_SHADOW_MQ_SILVER_PIT);
|
AddItemToMainPool(RG_SHADOW_MQ_SILVER_PIT, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES);
|
AddItemToMainPool(RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES, isWallet ? 1 : 10);
|
||||||
AddItemToMainPool(RG_SHADOW_MQ_SILVER_SPIKES);
|
AddItemToMainPool(RG_SHADOW_MQ_SILVER_SPIKES, isWallet ? 1 : 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dungeons->GetDungeonFromScene(SCENE_SPIRIT_TEMPLE)->IsVanilla()) {
|
if (dungeons->GetDungeonFromScene(SCENE_SPIRIT_TEMPLE)->IsVanilla()) {
|
||||||
AddItemToMainPool(RG_SPIRIT_SILVER_CHILD);
|
AddItemToMainPool(RG_SPIRIT_SILVER_CHILD, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_SPIRIT_SILVER_SUN);
|
AddItemToMainPool(RG_SPIRIT_SILVER_SUN, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_SPIRIT_SILVER_BOULDERS);
|
AddItemToMainPool(RG_SPIRIT_SILVER_BOULDERS, isWallet ? 1 : 5);
|
||||||
} else {
|
} else {
|
||||||
AddItemToMainPool(RG_SPIRIT_MQ_SILVER_LOBBY);
|
AddItemToMainPool(RG_SPIRIT_MQ_SILVER_LOBBY, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_SPIRIT_MQ_SILVER_BIG_WALL);
|
AddItemToMainPool(RG_SPIRIT_MQ_SILVER_BIG_WALL, isWallet ? 1 : 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dungeons->GetDungeonFromScene(SCENE_BOTTOM_OF_THE_WELL)->IsVanilla()) {
|
if (dungeons->GetDungeonFromScene(SCENE_BOTTOM_OF_THE_WELL)->IsVanilla()) {
|
||||||
AddItemToMainPool(RG_BOTW_SILVER);
|
AddItemToMainPool(RG_BOTW_SILVER, isWallet ? 1 : 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dungeons->GetDungeonFromScene(SCENE_ICE_CAVERN)->IsVanilla()) {
|
if (dungeons->GetDungeonFromScene(SCENE_ICE_CAVERN)->IsVanilla()) {
|
||||||
AddItemToMainPool(RG_ICE_CAVERN_SILVER_BLADES);
|
AddItemToMainPool(RG_ICE_CAVERN_SILVER_BLADES, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_ICE_CAVERN_SILVER_BLOCK);
|
AddItemToMainPool(RG_ICE_CAVERN_SILVER_BLOCK, isWallet ? 1 : 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dungeons->GetDungeonFromScene(SCENE_GERUDO_TRAINING_GROUND)->IsVanilla()) {
|
if (dungeons->GetDungeonFromScene(SCENE_GERUDO_TRAINING_GROUND)->IsVanilla()) {
|
||||||
AddItemToMainPool(RG_GTG_SILVER_SLOPE);
|
AddItemToMainPool(RG_GTG_SILVER_SLOPE, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_GTG_SILVER_LAVA);
|
AddItemToMainPool(RG_GTG_SILVER_LAVA, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_GTG_SILVER_WATER);
|
AddItemToMainPool(RG_GTG_SILVER_WATER, isWallet ? 1 : 5);
|
||||||
} else {
|
} else {
|
||||||
AddItemToMainPool(RG_GTG_MQ_SILVER_SLOPE);
|
AddItemToMainPool(RG_GTG_MQ_SILVER_SLOPE, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_GTG_MQ_SILVER_LAVA);
|
AddItemToMainPool(RG_GTG_MQ_SILVER_LAVA, isWallet ? 1 : 6);
|
||||||
AddItemToMainPool(RG_GTG_MQ_SILVER_WATER);
|
AddItemToMainPool(RG_GTG_MQ_SILVER_WATER, isWallet ? 1 : 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dungeons->GetDungeonFromScene(SCENE_INSIDE_GANONS_CASTLE)->IsVanilla()) {
|
if (dungeons->GetDungeonFromScene(SCENE_INSIDE_GANONS_CASTLE)->IsVanilla()) {
|
||||||
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_LIGHT);
|
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_LIGHT, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_FOREST);
|
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_FOREST, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_FIRE);
|
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_FIRE, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_SPIRIT);
|
AddItemToMainPool(RG_GANONS_CASTLE_SILVER_SPIRIT, isWallet ? 1 : 5);
|
||||||
} else {
|
} else {
|
||||||
AddItemToMainPool(RG_GANONS_CASTLE_MQ_SILVER_FIRE);
|
AddItemToMainPool(RG_GANONS_CASTLE_MQ_SILVER_FIRE, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_GANONS_CASTLE_MQ_SILVER_WATER);
|
AddItemToMainPool(RG_GANONS_CASTLE_MQ_SILVER_WATER, isWallet ? 1 : 5);
|
||||||
AddItemToMainPool(RG_GANONS_CASTLE_MQ_SILVER_SHADOW);
|
AddItemToMainPool(RG_GANONS_CASTLE_MQ_SILVER_SHADOW, isWallet ? 1 : 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
|
@ -12,72 +12,75 @@ extern SaveContext gSaveContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool IsSilverCleared(s16 switchFlag) {
|
static bool IsSilverCleared(s16 switchFlag) {
|
||||||
bool isMQ =
|
bool isMQ = Rando::Context::GetInstance()->GetDungeons()->GetDungeonFromScene(gPlayState->sceneNum)->IsMQ();
|
||||||
Rando::Context::GetInstance()->GetDungeons()->GetDungeonFromScene(gPlayState->sceneNum)->IsMQ();
|
|
||||||
switch (gPlayState->sceneNum) {
|
switch (gPlayState->sceneNum) {
|
||||||
case SCENE_DODONGOS_CAVERN:
|
case SCENE_DODONGOS_CAVERN:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER);
|
return gSaveContext.ship.quest.data.randomizer.silverMqDodongosCavern >= 5;
|
||||||
case SCENE_SHADOW_TEMPLE:
|
case SCENE_SHADOW_TEMPLE:
|
||||||
switch (switchFlag) {
|
switch (switchFlag) {
|
||||||
case 1:
|
case 1:
|
||||||
return Flags_GetRandomizerInf(isMQ ? RAND_INF_SHADOW_MQ_SILVER_BLADES
|
|
||||||
: RAND_INF_SHADOW_SILVER_BLADES);
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqShadowBlades >= 5
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverShadowBlades >= 5;
|
||||||
case 3:
|
case 3:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES);
|
return gSaveContext.ship.quest.data.randomizer.silverMqShadowInvisibleBlades >= 10;
|
||||||
case 8:
|
case 8:
|
||||||
return Flags_GetRandomizerInf(isMQ ? RAND_INF_SHADOW_MQ_SILVER_SPIKES
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqShadowSpikes >= 10
|
||||||
: RAND_INF_SHADOW_SILVER_SPIKES);
|
: gSaveContext.ship.quest.data.randomizer.silverShadowSpikes >= 5;
|
||||||
case 9:
|
case 9:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_SHADOW_SILVER_PIT);
|
return gSaveContext.ship.quest.data.randomizer.silverShadowPit >= 5;
|
||||||
case 17:
|
case 17:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_SHADOW_MQ_SILVER_PIT);
|
return gSaveContext.ship.quest.data.randomizer.silverMqShadowPit >= 5;
|
||||||
}
|
}
|
||||||
case SCENE_SPIRIT_TEMPLE:
|
case SCENE_SPIRIT_TEMPLE:
|
||||||
switch (switchFlag) {
|
switch (switchFlag) {
|
||||||
case 0:
|
case 0:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL);
|
return gSaveContext.ship.quest.data.randomizer.silverMqSpiritBigWall;
|
||||||
case 2:
|
case 2:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_SPIRIT_SILVER_BOULDERS);
|
return gSaveContext.ship.quest.data.randomizer.silverSpiritBoulders;
|
||||||
case 5:
|
case 5:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_SPIRIT_SILVER_CHILD);
|
return gSaveContext.ship.quest.data.randomizer.silverSpiritChild;
|
||||||
case 10:
|
case 10:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_SPIRIT_SILVER_SUN);
|
return gSaveContext.ship.quest.data.randomizer.silverSpiritSun;
|
||||||
case 55:
|
case 55:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_SPIRIT_MQ_SILVER_LOBBY);
|
return gSaveContext.ship.quest.data.randomizer.silverMqSpiritLobby;
|
||||||
}
|
}
|
||||||
case SCENE_BOTTOM_OF_THE_WELL:
|
case SCENE_BOTTOM_OF_THE_WELL:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_BOTW_SILVER);
|
return gSaveContext.ship.quest.data.randomizer.silverBotw >= 5;
|
||||||
case SCENE_ICE_CAVERN:
|
case SCENE_ICE_CAVERN:
|
||||||
switch (switchFlag) {
|
switch (switchFlag) {
|
||||||
case 8:
|
case 8:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLOCK);
|
return gSaveContext.ship.quest.data.randomizer.silverIceCavernBlock >= 5;
|
||||||
case 31:
|
case 31:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_ICE_CAVERN_SILVER_BLADES);
|
return gSaveContext.ship.quest.data.randomizer.silverIceCavernBlades >= 5;
|
||||||
}
|
}
|
||||||
case SCENE_GERUDO_TRAINING_GROUND:
|
case SCENE_GERUDO_TRAINING_GROUND:
|
||||||
switch (switchFlag) {
|
switch (switchFlag) {
|
||||||
case 12:
|
case 12:
|
||||||
return Flags_GetRandomizerInf(isMQ ? RAND_INF_GTG_MQ_SILVER_LAVA : RAND_INF_GTG_SILVER_LAVA);
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqGtgLava >= 6
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverGtgLava >= 5;
|
||||||
case 27:
|
case 27:
|
||||||
return Flags_GetRandomizerInf(isMQ ? RAND_INF_GTG_MQ_SILVER_WATER : RAND_INF_GTG_SILVER_WATER);
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqGtgWater >= 3
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverGtgWater >= 5;
|
||||||
case 28:
|
case 28:
|
||||||
return Flags_GetRandomizerInf(isMQ ? RAND_INF_GTG_MQ_SILVER_SLOPE : RAND_INF_GTG_SILVER_SLOPE);
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqGtgSlope >= 5
|
||||||
|
: gSaveContext.ship.quest.data.randomizer.silverGtgSlope >= 5;
|
||||||
}
|
}
|
||||||
case SCENE_INSIDE_GANONS_CASTLE:
|
case SCENE_INSIDE_GANONS_CASTLE:
|
||||||
switch (switchFlag) {
|
switch (switchFlag) {
|
||||||
case 1:
|
case 1:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE);
|
return gSaveContext.ship.quest.data.randomizer.silverMqGanonFire >= 5;
|
||||||
case 2:
|
case 2:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER);
|
return gSaveContext.ship.quest.data.randomizer.silverMqGanonWater >= 5;
|
||||||
case 9:
|
case 9:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FIRE);
|
return gSaveContext.ship.quest.data.randomizer.silverGanonFire >= 5;
|
||||||
case 11:
|
case 11:
|
||||||
return Flags_GetRandomizerInf(isMQ ? RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW
|
return isMQ ? gSaveContext.ship.quest.data.randomizer.silverMqGanonShadow >= 5
|
||||||
: RAND_INF_GANONS_CASTLE_SILVER_SPIRIT);
|
: gSaveContext.ship.quest.data.randomizer.silverGanonSpirit >= 5;
|
||||||
case 14:
|
case 14:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_FOREST);
|
return gSaveContext.ship.quest.data.randomizer.silverGanonForest >= 5;
|
||||||
case 18:
|
case 18:
|
||||||
return Flags_GetRandomizerInf(RAND_INF_GANONS_CASTLE_SILVER_LIGHT);
|
return gSaveContext.ship.quest.data.randomizer.silverGanonLight >= 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -89,24 +92,25 @@ void RegisterShuffleSilver() {
|
||||||
COND_VB_SHOULD(VB_SILVER_DESPAWN, shouldRegister, {
|
COND_VB_SHOULD(VB_SILVER_DESPAWN, shouldRegister, {
|
||||||
EnGSwitch* silver = va_arg(args, EnGSwitch*);
|
EnGSwitch* silver = va_arg(args, EnGSwitch*);
|
||||||
if (silver->type == ENGSWITCH_SILVER_RUPEE) {
|
if (silver->type == ENGSWITCH_SILVER_RUPEE) {
|
||||||
auto silverIdentity = OTRGlobals::Instance->gRandomizer->IdentifySilver(gPlayState->sceneNum,
|
auto silverIdentity = OTRGlobals::Instance->gRandomizer->IdentifySilver(
|
||||||
(s16)silver->actor.world.pos.x, (s16)silver->actor.world.pos.z);
|
gPlayState->sceneNum, (s16)silver->actor.world.pos.x, (s16)silver->actor.world.pos.z);
|
||||||
*should = true;
|
*should = true;
|
||||||
LUSLOG_WARN("!!%d %d %d %d", silver->type, silverIdentity.randomizerCheck,
|
LUSLOG_WARN("!!%d %d %d %d", silver->type, silverIdentity.randomizerCheck, (s16)silver->actor.world.pos.x,
|
||||||
(s16)silver->actor.world.pos.x, (s16)silver->actor.world.pos.z);
|
(s16)silver->actor.world.pos.z);
|
||||||
if (silverIdentity.randomizerCheck == RC_UNKNOWN_CHECK ||
|
if (silverIdentity.randomizerCheck == RC_UNKNOWN_CHECK ||
|
||||||
Flags_GetRandomizerInf(silverIdentity.randomizerInf)) {
|
Flags_GetRandomizerInf(silverIdentity.randomizerInf)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto spawnedActor = (EnItem00*)Actor_Spawn(&gPlayState->actorCtx, gPlayState, ACTOR_EN_ITEM00,
|
auto spawnedActor = (EnItem00*)Actor_Spawn(
|
||||||
silver->actor.world.pos.x, silver->actor.world.pos.y, silver->actor.world.pos.z,
|
&gPlayState->actorCtx, gPlayState, ACTOR_EN_ITEM00, silver->actor.world.pos.x,
|
||||||
0, 0, 0, ITEM00_SOH_GIVE_ITEM_ENTRY, false);
|
silver->actor.world.pos.y, silver->actor.world.pos.z, 0, 0, 0, ITEM00_SOH_GIVE_ITEM_ENTRY, false);
|
||||||
LUSLOG_WARN("!!%p", spawnedActor);
|
LUSLOG_WARN("!!%p", spawnedActor);
|
||||||
spawnedActor->randoCheck = silverIdentity.randomizerCheck;
|
spawnedActor->randoCheck = silverIdentity.randomizerCheck;
|
||||||
spawnedActor->randoInf = silverIdentity.randomizerInf;
|
spawnedActor->randoInf = silverIdentity.randomizerInf;
|
||||||
spawnedActor->itemEntry = Rando::Context::GetInstance()->GetFinalGIEntry(
|
spawnedActor->itemEntry = Rando::Context::GetInstance()->GetFinalGIEntry(
|
||||||
silverIdentity.randomizerCheck, true, (GetItemID)Rando::StaticData::GetLocation(silverIdentity.randomizerCheck)->GetVanillaItem());
|
silverIdentity.randomizerCheck, true,
|
||||||
|
(GetItemID)Rando::StaticData::GetLocation(silverIdentity.randomizerCheck)->GetVanillaItem());
|
||||||
} else if (silver->type == ENGSWITCH_SILVER_TRACKER) {
|
} else if (silver->type == ENGSWITCH_SILVER_TRACKER) {
|
||||||
if (IsSilverCleared(silver->switchFlag)) {
|
if (IsSilverCleared(silver->switchFlag)) {
|
||||||
Flags_SetSwitch(gPlayState, silver->switchFlag);
|
Flags_SetSwitch(gPlayState, silver->switchFlag);
|
||||||
|
|
|
@ -1119,15 +1119,15 @@ extern "C" void Randomizer_DrawSilverRupee(PlayState* play, GetItemEntry* getIte
|
||||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
|
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
|
||||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||||
|
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0x80, 255, 255, 255, 255);
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0x80, 255, 255, 255, 255);
|
||||||
gDPSetEnvColor(POLY_OPA_DISP++, 255 / 5, 255 / 5, 255 / 5, 255);
|
gDPSetEnvColor(POLY_OPA_DISP++, 255 / 5, 255 / 5, 255 / 5, 255);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiRupeeInnerDL);
|
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiRupeeInnerDL);
|
||||||
|
|
||||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD);
|
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);
|
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, 255, 255, 255, 255);
|
||||||
gDPSetEnvColor(POLY_XLU_DISP++, 255 * 0.75f, 255 * 0.75f, 255 * 0.75f, 255);
|
gDPSetEnvColor(POLY_XLU_DISP++, 255 * 0.75f, 255 * 0.75f, 255 * 0.75f, 255);
|
||||||
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gGiRupeeOuterDL);
|
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gGiRupeeOuterDL);
|
||||||
|
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
}
|
}
|
||||||
|
|
|
@ -242,63 +242,63 @@ void Rando::StaticData::InitItemTable() {
|
||||||
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
|
// Silver Rupees
|
||||||
itemTable[RG_SHADOW_SILVER_BLADES] = Item(RG_SHADOW_SILVER_BLADES, Text{ "Shadow Silver: Blades" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SHADOW_SILVER_BLADES, Text{ "Shadow Silver: Blades" }, 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_BLADES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SHADOW_SILVER_PIT] = Item(RG_SHADOW_SILVER_PIT, Text{ "Shadow Silver: Pit" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SHADOW_SILVER_PIT, Text{ "Shadow Silver: Pit" }, 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_PIT].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SHADOW_SILVER_SPIKES] = Item(RG_SHADOW_SILVER_SPIKES, Text{ "Shadow Silver: Spikes" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SHADOW_SILVER_SPIKES, Text{ "Shadow Silver: Spikes" }, 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_SHADOW_SILVER_SPIKES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SPIRIT_SILVER_CHILD] = Item(RG_SPIRIT_SILVER_CHILD, Text{ "Spirit Silver: Child" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SPIRIT_SILVER_CHILD, Text{ "Spirit Silver: Child" }, 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_CHILD].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SPIRIT_SILVER_SUN] = Item(RG_SPIRIT_SILVER_SUN, Text{ "Spirit Silver: Sun" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SPIRIT_SILVER_SUN, Text{ "Spirit Silver: Sun" }, 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_SUN].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SPIRIT_SILVER_BOULDERS] = Item(RG_SPIRIT_SILVER_BOULDERS, Text{ "Spirit Silver: Boulders" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SPIRIT_SILVER_BOULDERS, Text{ "Spirit Silver: Boulders" }, 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_SPIRIT_SILVER_BOULDERS].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_BOTW_SILVER] = Item(RG_BOTW_SILVER, Text{ "Bottom of the Well Silver" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_BOTW_SILVER, Text{ "Bottom of the Well Silver" }, 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_BOTW_SILVER].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_ICE_CAVERN_SILVER_BLADES] = Item(RG_ICE_CAVERN_SILVER_BLADES, Text{ "Ice Cavern Silver: Blades" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_ICE_CAVERN_SILVER_BLADES, Text{ "Ice Cavern Silver: Blades" }, 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_BLADES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_ICE_CAVERN_SILVER_BLOCK] = Item(RG_ICE_CAVERN_SILVER_BLOCK, Text{ "Ice Cavern Silver: Block" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_ICE_CAVERN_SILVER_BLOCK, Text{ "Ice Cavern Silver: Block" }, 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_ICE_CAVERN_SILVER_BLOCK].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GTG_SILVER_SLOPE] = Item(RG_GTG_SILVER_SLOPE, Text{ "Training Ground Silver: Slope" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GTG_SILVER_SLOPE, Text{ "Training Ground Silver: Slope" }, 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_SLOPE].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GTG_SILVER_LAVA] = Item(RG_GTG_SILVER_LAVA, Text{ "Training Ground Silver: Lava" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GTG_SILVER_LAVA, Text{ "Training Ground Silver: Lava" }, 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_LAVA].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GTG_SILVER_WATER] = Item(RG_GTG_SILVER_WATER, Text{ "Training Ground Silver: Water" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GTG_SILVER_WATER, Text{ "Training Ground Silver: Water" }, 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_GTG_SILVER_WATER].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GANONS_CASTLE_SILVER_LIGHT] = Item(RG_GANONS_CASTLE_SILVER_LIGHT, Text{ "Ganon's Castle Silver: Light" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GANONS_CASTLE_SILVER_LIGHT, Text{ "Ganon's Castle Silver: Light" }, 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_LIGHT].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GANONS_CASTLE_SILVER_FOREST] = Item(RG_GANONS_CASTLE_SILVER_FOREST, Text{ "Ganon's Castle Silver: Forest" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GANONS_CASTLE_SILVER_FOREST, Text{ "Ganon's Castle Silver: Forest" }, 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_FOREST].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GANONS_CASTLE_SILVER_FIRE] = Item(RG_GANONS_CASTLE_SILVER_FIRE, Text{ "Ganon's Castle Silver: Fire" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GANONS_CASTLE_SILVER_FIRE, Text{ "Ganon's Castle Silver: Fire" }, 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_FIRE].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GANONS_CASTLE_SILVER_SPIRIT] = Item(RG_GANONS_CASTLE_SILVER_SPIRIT, Text{ "Ganon's Castle Silver: Spirit" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GANONS_CASTLE_SILVER_SPIRIT, Text{ "Ganon's Castle Silver: Spirit" }, 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_GANONS_CASTLE_SILVER_SPIRIT].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_DODONGOS_CAVERN_MQ_SILVER] = Item(RG_DODONGOS_CAVERN_MQ_SILVER, Text{ "Dodongo's Cavern Silver" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_DODONGOS_CAVERN_MQ_SILVER, Text{ "Dodongo's Cavern Silver" }, 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_DODONGOS_CAVERN_MQ_SILVER].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SHADOW_MQ_SILVER_BLADES] = Item(RG_SHADOW_MQ_SILVER_BLADES, Text{ "Shadow Silver: Blades" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SHADOW_MQ_SILVER_BLADES, Text{ "Shadow Silver: Blades" }, 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_BLADES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SHADOW_MQ_SILVER_PIT] = Item(RG_SHADOW_MQ_SILVER_PIT, Text{ "Shadow Silver: Pit" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SHADOW_MQ_SILVER_PIT, Text{ "Shadow Silver: Pit" }, 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_PIT].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES] = Item(RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES, Text{ "Shadow Silver: Invisible Blades" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES, Text{ "Shadow Silver: Invisible Blades" }, 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_INVISIBLE_BLADES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SHADOW_MQ_SILVER_SPIKES] = Item(RG_SHADOW_MQ_SILVER_SPIKES, Text{ "Shadow Silver: Spikes" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SHADOW_MQ_SILVER_SPIKES, Text{ "Shadow Silver: Spikes" }, 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_SHADOW_MQ_SILVER_SPIKES].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SPIRIT_MQ_SILVER_LOBBY] = Item(RG_SPIRIT_MQ_SILVER_LOBBY, Text{ "Spirit Silver: Lobby" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SPIRIT_MQ_SILVER_LOBBY, Text{ "Spirit Silver: Lobby" }, 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_LOBBY].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_SPIRIT_MQ_SILVER_BIG_WALL] = Item(RG_SPIRIT_MQ_SILVER_BIG_WALL, Text{ "Spirit Silver: Big Wall" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_SPIRIT_MQ_SILVER_BIG_WALL, Text{ "Spirit Silver: Big Wall" }, 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_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" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GTG_MQ_SILVER_SLOPE, Text{ "Training Ground Silver: Slope" }, 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_SLOPE].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GTG_MQ_SILVER_LAVA] = Item(RG_GTG_MQ_SILVER_LAVA, Text{ "Training Ground Silver: Lava" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GTG_MQ_SILVER_LAVA, Text{ "Training Ground Silver: Lava" }, 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_LAVA].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GTG_MQ_SILVER_WATER] = Item(RG_GTG_MQ_SILVER_WATER, Text{ "Training Ground Silver: Water" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GTG_MQ_SILVER_WATER, Text{ "Training Ground Silver: Water" }, 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_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" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GANONS_CASTLE_MQ_SILVER_FIRE, Text{ "Ganon's Castle Silver: Fire" }, 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_FIRE].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GANONS_CASTLE_MQ_SILVER_WATER] = Item(RG_GANONS_CASTLE_MQ_SILVER_WATER, Text{ "Ganon's Castle Silver: Water" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GANONS_CASTLE_MQ_SILVER_WATER, Text{ "Ganon's Castle Silver: Water" }, 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_WATER].SetCustomDrawFunc(Randomizer_DrawSilverRupee);
|
||||||
itemTable[RG_GANONS_CASTLE_MQ_SILVER_SHADOW] = Item(RG_GANONS_CASTLE_MQ_SILVER_SHADOW, Text{ "Ganon's Castle Silver: Shadow" }, ITEMTYPE_ITEM, GI_RUPEE_GOLD, true, LOGIC_NONE, RHT_NONE, 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] = Item(RG_GANONS_CASTLE_MQ_SILVER_SHADOW, Text{ "Ganon's Castle Silver: Shadow" }, 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);
|
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);
|
||||||
|
|
|
@ -1910,23 +1910,41 @@ 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();
|
||||||
auto keyring = randoGet >= RG_FOREST_TEMPLE_KEY_RING && randoGet <= RG_GANONS_CASTLE_KEY_RING;
|
if (randoGet >= RG_SHADOW_SILVER_BLADES && randoGet <= RG_GANONS_CASTLE_MQ_SILVER_SHADOW) {
|
||||||
auto dungeonIndex = RandoGetToDungeonScene.find(randoGet)->second;
|
s8* field = Randomizer::SilverFieldFromSaveContext(randoGet);
|
||||||
auto count = GetSmallKeyCount(dungeonIndex);
|
bool isWallet = ctx->GetOption(RSK_SHUFFLE_SILVER).Is(RO_SHUFFLE_SILVER_WALLET);
|
||||||
if (!state) {
|
if (!state) {
|
||||||
if (keyring) {
|
if (isWallet) {
|
||||||
count = 0;
|
*field = 0;
|
||||||
|
} else {
|
||||||
|
*field -= 1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
count -= 1;
|
if (isWallet) {
|
||||||
|
*field = 10;
|
||||||
|
} else {
|
||||||
|
*field += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (keyring) {
|
auto keyring = randoGet >= RG_FOREST_TEMPLE_KEY_RING && randoGet <= RG_GANONS_CASTLE_KEY_RING;
|
||||||
count = 10;
|
auto dungeonIndex = RandoGetToDungeonScene.find(randoGet)->second;
|
||||||
|
auto count = GetSmallKeyCount(dungeonIndex);
|
||||||
|
if (!state) {
|
||||||
|
if (keyring) {
|
||||||
|
count = 0;
|
||||||
|
} else {
|
||||||
|
count -= 1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
count += 1;
|
if (keyring) {
|
||||||
|
count = 10;
|
||||||
|
} else {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
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);
|
||||||
|
|
|
@ -477,8 +477,8 @@ void Settings::CreateOptionDescriptions() {
|
||||||
"\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"
|
mOptionDescriptions[RSK_SHUFFLE_SILVER] = "Silver rupees will be shuffled.\n"
|
||||||
"Items will be added to pool which completes the silver rupee puzzles,\n"
|
"Items will be added to pool which completes the silver rupee puzzles,\n"
|
||||||
"while silver rupee locations will be random items.";
|
"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. "
|
||||||
|
|
|
@ -762,6 +762,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),
|
||||||
|
@ -5938,22 +6003,28 @@ void Randomizer::CreateCustomMessages() {
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GTG_SILVER_LAVA, ITEM_KEY_SMALL, "You found Training Ground Silver: Lava"),
|
GIMESSAGE_UNTRANSLATED(RG_GTG_SILVER_LAVA, ITEM_KEY_SMALL, "You found Training Ground Silver: Lava"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GTG_SILVER_WATER, ITEM_KEY_SMALL, "You found Training Ground Silver: Water"),
|
GIMESSAGE_UNTRANSLATED(RG_GTG_SILVER_WATER, ITEM_KEY_SMALL, "You found Training Ground Silver: Water"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_SILVER_LIGHT, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Light"),
|
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_SILVER_LIGHT, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Light"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_SILVER_FOREST, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Forest"),
|
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_SILVER_FOREST, ITEM_KEY_SMALL,
|
||||||
|
"You found Ganon's Castle Silver: Forest"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_SILVER_FIRE, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Fire"),
|
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_SILVER_FIRE, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Fire"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_SILVER_SPIRIT, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Spirit"),
|
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_SILVER_SPIRIT, ITEM_KEY_SMALL,
|
||||||
|
"You found Ganon's Castle Silver: Spirit"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_DODONGOS_CAVERN_MQ_SILVER, ITEM_KEY_SMALL, "You found Dodongo's Cavern Silver"),
|
GIMESSAGE_UNTRANSLATED(RG_DODONGOS_CAVERN_MQ_SILVER, ITEM_KEY_SMALL, "You found Dodongo's Cavern Silver"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_SHADOW_MQ_SILVER_BLADES, ITEM_KEY_SMALL, "You found Shadow Silver: Blades"),
|
GIMESSAGE_UNTRANSLATED(RG_SHADOW_MQ_SILVER_BLADES, ITEM_KEY_SMALL, "You found Shadow Silver: Blades"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_SHADOW_MQ_SILVER_PIT, ITEM_KEY_SMALL, "You found Shadow Silver: Pit"),
|
GIMESSAGE_UNTRANSLATED(RG_SHADOW_MQ_SILVER_PIT, ITEM_KEY_SMALL, "You found Shadow Silver: Pit"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES, ITEM_KEY_SMALL, "You found Shadow Silver: Invisible Blades"),
|
GIMESSAGE_UNTRANSLATED(RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES, ITEM_KEY_SMALL,
|
||||||
|
"You found Shadow Silver: Invisible Blades"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_SHADOW_MQ_SILVER_SPIKES, ITEM_KEY_SMALL, "You found Shadow Silver: Spikes"),
|
GIMESSAGE_UNTRANSLATED(RG_SHADOW_MQ_SILVER_SPIKES, ITEM_KEY_SMALL, "You found Shadow Silver: Spikes"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_SPIRIT_MQ_SILVER_LOBBY, ITEM_KEY_SMALL, "You found Spirit Silver: Lobby"),
|
GIMESSAGE_UNTRANSLATED(RG_SPIRIT_MQ_SILVER_LOBBY, ITEM_KEY_SMALL, "You found Spirit Silver: Lobby"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_SPIRIT_MQ_SILVER_BIG_WALL, ITEM_KEY_SMALL, "You found Spirit Silver: Big Wall"),
|
GIMESSAGE_UNTRANSLATED(RG_SPIRIT_MQ_SILVER_BIG_WALL, ITEM_KEY_SMALL, "You found Spirit Silver: Big Wall"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GTG_MQ_SILVER_SLOPE, ITEM_KEY_SMALL, "You found Training Ground Silver: Slope"),
|
GIMESSAGE_UNTRANSLATED(RG_GTG_MQ_SILVER_SLOPE, ITEM_KEY_SMALL, "You found Training Ground Silver: Slope"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GTG_MQ_SILVER_LAVA, ITEM_KEY_SMALL, "You found Training Ground Silver: Lava"),
|
GIMESSAGE_UNTRANSLATED(RG_GTG_MQ_SILVER_LAVA, ITEM_KEY_SMALL, "You found Training Ground Silver: Lava"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GTG_MQ_SILVER_WATER, ITEM_KEY_SMALL, "You found Training Ground Silver: Water"),
|
GIMESSAGE_UNTRANSLATED(RG_GTG_MQ_SILVER_WATER, ITEM_KEY_SMALL, "You found Training Ground Silver: Water"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_MQ_SILVER_FIRE, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Fire"),
|
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_MQ_SILVER_FIRE, ITEM_KEY_SMALL,
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_MQ_SILVER_WATER, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Water"),
|
"You found Ganon's Castle Silver: Fire"),
|
||||||
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_MQ_SILVER_SHADOW, ITEM_KEY_SMALL, "You found Ganon's Castle Silver: Shadow"),
|
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_MQ_SILVER_WATER, ITEM_KEY_SMALL,
|
||||||
|
"You found Ganon's Castle Silver: Water"),
|
||||||
|
GIMESSAGE_UNTRANSLATED(RG_GANONS_CASTLE_MQ_SILVER_SHADOW, ITEM_KEY_SMALL,
|
||||||
|
"You found Ganon's Castle Silver: Shadow"),
|
||||||
} };
|
} };
|
||||||
CreateGetItemMessages(getItemMessages);
|
CreateGetItemMessages(getItemMessages);
|
||||||
CreateRupeeMessages();
|
CreateRupeeMessages();
|
||||||
|
@ -6049,35 +6120,6 @@ std::map<RandomizerGet, RandomizerInf> randomizerGetToRandInf = {
|
||||||
{ RG_BONGO_BONGO_SOUL, RAND_INF_BONGO_BONGO_SOUL },
|
{ RG_BONGO_BONGO_SOUL, RAND_INF_BONGO_BONGO_SOUL },
|
||||||
{ RG_TWINROVA_SOUL, RAND_INF_TWINROVA_SOUL },
|
{ RG_TWINROVA_SOUL, RAND_INF_TWINROVA_SOUL },
|
||||||
{ RG_GANON_SOUL, RAND_INF_GANON_SOUL },
|
{ RG_GANON_SOUL, RAND_INF_GANON_SOUL },
|
||||||
{ RG_SHADOW_SILVER_BLADES, RAND_INF_SHADOW_SILVER_BLADES },
|
|
||||||
{ RG_SHADOW_SILVER_PIT, RAND_INF_SHADOW_SILVER_PIT },
|
|
||||||
{ RG_SHADOW_SILVER_SPIKES, RAND_INF_SHADOW_SILVER_SPIKES },
|
|
||||||
{ RG_SPIRIT_SILVER_CHILD, RAND_INF_SPIRIT_SILVER_CHILD },
|
|
||||||
{ RG_SPIRIT_SILVER_SUN, RAND_INF_SPIRIT_SILVER_SUN },
|
|
||||||
{ RG_SPIRIT_SILVER_BOULDERS, RAND_INF_SPIRIT_SILVER_BOULDERS },
|
|
||||||
{ RG_BOTW_SILVER, RAND_INF_BOTW_SILVER },
|
|
||||||
{ RG_ICE_CAVERN_SILVER_BLADES, RAND_INF_ICE_CAVERN_SILVER_BLADES },
|
|
||||||
{ RG_ICE_CAVERN_SILVER_BLOCK, RAND_INF_ICE_CAVERN_SILVER_BLOCK },
|
|
||||||
{ RG_GTG_SILVER_SLOPE, RAND_INF_GTG_SILVER_SLOPE },
|
|
||||||
{ RG_GTG_SILVER_LAVA, RAND_INF_GTG_SILVER_LAVA },
|
|
||||||
{ RG_GTG_SILVER_WATER, RAND_INF_GTG_SILVER_WATER },
|
|
||||||
{ RG_GANONS_CASTLE_SILVER_LIGHT, RAND_INF_GANONS_CASTLE_SILVER_LIGHT },
|
|
||||||
{ RG_GANONS_CASTLE_SILVER_FOREST, RAND_INF_GANONS_CASTLE_SILVER_FOREST },
|
|
||||||
{ RG_GANONS_CASTLE_SILVER_FIRE, RAND_INF_GANONS_CASTLE_SILVER_FIRE },
|
|
||||||
{ RG_GANONS_CASTLE_SILVER_SPIRIT, RAND_INF_GANONS_CASTLE_SILVER_SPIRIT },
|
|
||||||
{ RG_DODONGOS_CAVERN_MQ_SILVER, RAND_INF_DODONGOS_CAVERN_MQ_SILVER },
|
|
||||||
{ RG_SHADOW_MQ_SILVER_BLADES, RAND_INF_SHADOW_MQ_SILVER_BLADES },
|
|
||||||
{ RG_SHADOW_MQ_SILVER_PIT, RAND_INF_SHADOW_MQ_SILVER_PIT },
|
|
||||||
{ RG_SHADOW_MQ_SILVER_INVISIBLE_BLADES, RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES },
|
|
||||||
{ RG_SHADOW_MQ_SILVER_SPIKES, RAND_INF_SHADOW_MQ_SILVER_SPIKES },
|
|
||||||
{ RG_SPIRIT_MQ_SILVER_LOBBY, RAND_INF_SPIRIT_MQ_SILVER_LOBBY },
|
|
||||||
{ RG_SPIRIT_MQ_SILVER_BIG_WALL, RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL },
|
|
||||||
{ RG_GTG_MQ_SILVER_SLOPE, RAND_INF_GTG_MQ_SILVER_SLOPE },
|
|
||||||
{ RG_GTG_MQ_SILVER_LAVA, RAND_INF_GTG_MQ_SILVER_LAVA },
|
|
||||||
{ RG_GTG_MQ_SILVER_WATER, RAND_INF_GTG_MQ_SILVER_WATER },
|
|
||||||
{ RG_GANONS_CASTLE_MQ_SILVER_FIRE, RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE },
|
|
||||||
{ RG_GANONS_CASTLE_MQ_SILVER_WATER, RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER },
|
|
||||||
{ RG_GANONS_CASTLE_MQ_SILVER_SHADOW, RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||||
|
@ -6361,6 +6403,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);
|
||||||
|
|
|
@ -5391,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,
|
||||||
|
@ -6495,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,
|
||||||
|
|
|
@ -1468,36 +1468,6 @@ 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_4)
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_5)
|
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW_5)
|
||||||
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_BLADES)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_PIT)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SHADOW_SILVER_SPIKES)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_CHILD)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_SUN)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SPIRIT_SILVER_BOULDERS)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_BOTW_SILVER)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLADES)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_ICE_CAVERN_SILVER_BLOCK)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_SLOPE)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_LAVA)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GTG_SILVER_WATER)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_LIGHT)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FOREST)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_FIRE)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_SILVER_SPIRIT)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_DODONGOS_CAVERN_MQ_SILVER)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_BLADES)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_PIT)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_INVISIBLE_BLADES)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SHADOW_MQ_SILVER_SPIKES)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_LOBBY)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_SPIRIT_MQ_SILVER_BIG_WALL)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_SLOPE)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_LAVA)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GTG_MQ_SILVER_WATER)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_FIRE)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_WATER)
|
|
||||||
DEFINE_RAND_INF(RAND_INF_GANONS_CASTLE_MQ_SILVER_SHADOW)
|
|
||||||
|
|
||||||
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,8 +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", "Start With"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleSilver"), mOptionDescriptions[RSK_SHUFFLE_SILVER], WidgetType::Combobox, RO_SHUFFLE_SILVER_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_BOOL(RSK_SHUFFLE_SILVER, "Shuffle Silver Rupees", CVAR_RANDOMIZER_SETTING("ShuffleSilver"), mOptionDescriptions[RSK_SHUFFLE_SILVER]);
|
|
||||||
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]);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue