mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-10-20 18:38:01 -04:00
Fix typos in randomizer (#7357)
This commit is contained in:
@@ -2684,7 +2684,7 @@
|
||||
},
|
||||
"water_dragon_jump_dive": {
|
||||
"name": "Water Temple Dragon Statue Jump Dive",
|
||||
"description": "If you come into the dragon statue room from the serpent river, you can sidehop down from above and get into the tunnel without needing either Iron Boots or a Scale. Alternativly, you can do this while equipping irons in middair to get into the tunnel without swim. This trick applies to both Vanilla and Master Quest. In Vanilla, you must shoot the switch from above with the Bow, and then quickly get through the tunnel before the gate closes."
|
||||
"description": "If you come into the dragon statue room from the serpent river, you can sidehop down from above and get into the tunnel without needing either Iron Boots or a Scale. Alternatively, you can do this while equipping irons in midair to get into the tunnel without swim. This trick applies to both Vanilla and Master Quest. In Vanilla, you must shoot the switch from above with the Bow, and then quickly get through the tunnel before the gate closes."
|
||||
},
|
||||
"water_adult_dragon": {
|
||||
"name": "Water Temple Dragon Statue Switch from Above the Water as Adult",
|
||||
@@ -2916,7 +2916,7 @@
|
||||
},
|
||||
"gtg_mq_with_hookshot": {
|
||||
"name": "Gerudo Training Ground MQ Left Side Silver Rupees with Hookshot",
|
||||
"description": "The highest Silver Rupee can be obtained by hookshooting the target and then immediately jumpslashing toward the Rupee."
|
||||
"description": "The highest Silver Rupee can be obtained by hookshotting the target and then immediately jumpslashing toward the Rupee."
|
||||
},
|
||||
"gtg_mq_without_hookshot": {
|
||||
"name": "Gerudo Training Ground MQ Left Side Silver Rupees without Hookshot",
|
||||
|
||||
@@ -334,8 +334,8 @@ void Rando::StaticData::RegisterSilverLocations() {
|
||||
locationTable[RC_SPIRIT_NEAR_DOOR_SUN_SILVER] = Location::Collectable(RC_SPIRIT_NEAR_DOOR_SUN_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-984, -450), "Near Door Sun Silver", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_NEAR_DOOR_SUN_SILVER));
|
||||
locationTable[RC_SPIRIT_NW_BOULDER_SILVER] = Location::Collectable(RC_SPIRIT_NW_BOULDER_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1284, -1355), "Northwest Boulder Silver", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_NW_BOULDER_SILVER));
|
||||
locationTable[RC_SPIRIT_SW_BOULDER_SILVER] = Location::Collectable(RC_SPIRIT_SW_BOULDER_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1284, -813), "Southwest Boulder Silver", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SW_BOULDER_SILVER));
|
||||
locationTable[RC_SPIRIT_SE_BOULDER_SILVER] = Location::Collectable(RC_SPIRIT_SE_BOULDER_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1856, -944), "Southeast Boulder Super", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SE_BOULDER_SILVER));
|
||||
locationTable[RC_SPIRIT_NE_BOULDER_SILVER] = Location::Collectable(RC_SPIRIT_NE_BOULDER_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1856, -1219), "Notheast Boulder Silver", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_NE_BOULDER_SILVER));
|
||||
locationTable[RC_SPIRIT_SE_BOULDER_SILVER] = Location::Collectable(RC_SPIRIT_SE_BOULDER_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1856, -944), "Southeast Boulder Silver", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_SE_BOULDER_SILVER));
|
||||
locationTable[RC_SPIRIT_NE_BOULDER_SILVER] = Location::Collectable(RC_SPIRIT_NE_BOULDER_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1856, -1219), "Northeast Boulder Silver", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_NE_BOULDER_SILVER));
|
||||
locationTable[RC_SPIRIT_AIRBORNE_BOULDER_SILVER] = Location::Collectable(RC_SPIRIT_AIRBORNE_BOULDER_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1573, -920), "Airborne Boulder Silver", RHT_SPIRIT_TEMPLE_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_AIRBORNE_BOULDER_SILVER));
|
||||
locationTable[RC_BOTW_B1_LADDER_SILVER] = Location::Collectable(RC_BOTW_B1_LADDER_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-796, -150), "B1 Ladder Silver", RHT_BOTW_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B1_LADDER_SILVER));
|
||||
locationTable[RC_BOTW_B2_LADDER_SILVER] = Location::Collectable(RC_BOTW_B2_LADDER_SILVER, RCQUEST_VANILLA, RCTYPE_SILVER, ACTOR_EN_G_SWITCH, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-614, -297), "B2 Ladder Silver", RHT_BOTW_SILVER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTW_B2_LADDER_SILVER));
|
||||
|
||||
@@ -43,7 +43,7 @@ bool LocationAccess::CheckConditionAtAgeTime(bool& age, bool& time) const {
|
||||
}
|
||||
|
||||
bool LocationAccess::ConditionsMet(Region* parentRegion, bool calculatingAvailableChecks) const {
|
||||
// WARNING enterance validation can run this after resetting the access for sphere 0 validation
|
||||
// WARNING entrance validation can run this after resetting the access for sphere 0 validation
|
||||
// When refactoring ToD access, either fix the above or do not assume that we
|
||||
// have any access at all just because this is being run
|
||||
bool conditionsMet = false;
|
||||
|
||||
@@ -630,7 +630,7 @@ void RegionTable_Init_FireTemple() {
|
||||
//Only adult is tall enough to use a bow shot without climbing to UPPER
|
||||
//Logical ways to cross are hovers, longshot or running through the lava and then climbing back up as adult (child can't reach the ledge).
|
||||
//The Damage logic here is for jumping down and running across the lava to get in dins range of the south torch
|
||||
//Fairies cannot be used for this as it is time sensetive, and NL is only useful with sticks as it disables other magic while in use, so it's tunic or raw damage taking ability.
|
||||
//Fairies cannot be used for this as it is time sensitive, and NL is only useful with sticks as it disables other magic while in use, so it's tunic or raw damage taking ability.
|
||||
//testing tells me you take 3 ticks of lava damage, which is 12 internal damage or 3/4 of a heart at x1 damage multiplier, performing this run
|
||||
LOCATION(RC_FIRE_TEMPLE_MQ_NEAR_BOSS_CHEST, logic->CanUse(RG_DINS_FIRE) && logic->HasItem(RG_OPEN_CHEST) &&
|
||||
(logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_LONGSHOT) ||
|
||||
|
||||
@@ -723,7 +723,7 @@ void RegionTable_Init_ForestTemple() {
|
||||
LOCATION(RC_FOREST_TEMPLE_MQ_RAISED_ISLAND_COURTYARD_LOWER_CHEST, logic->HasItem(RG_OPEN_CHEST)),
|
||||
}, {
|
||||
//Exits
|
||||
//Skipping swim here is non-trival, needs a roll-jump. If a swim lock is added it's probably wise to copy deku baba events here
|
||||
//Skipping swim here is non-trivial, needs a roll-jump. If a swim lock is added it's probably wise to copy deku baba events here
|
||||
ENTRANCE(RR_FOREST_TEMPLE_MQ_NE_COURTYARD, true),
|
||||
ENTRANCE(RR_FOREST_TEMPLE_MQ_NE_COURTYARD_LEDGE_ABOVE_ISLAND, logic->CanUse(RG_SONG_OF_TIME)),
|
||||
});
|
||||
|
||||
@@ -313,7 +313,7 @@ void RegionTable_Init_IceCavern() {
|
||||
LOCATION(RC_ICE_CAVERN_MQ_MAP_RED_ICE, logic->BlueFire()),
|
||||
}, {});
|
||||
|
||||
//RANDOTODO the default state of the toggle switchs in MQ ice are wierd, investigate for doordsanity
|
||||
//RANDOTODO the default state of the toggle switches in MQ ice are weird, investigate for doorsanity
|
||||
areaTable[RR_ICE_CAVERN_MQ_SCARECROW_ROOM] = Region("Ice Cavern MQ Scarecrow Room", SCENE_ICE_CAVERN, {
|
||||
//Events
|
||||
EVENT_ACCESS(LOGIC_BLUE_FIRE_ACCESS, logic->CanUse(RG_SONG_OF_TIME) || logic->BunnyHovers() || (logic->IsAdult && (logic->CanGroundJump() || ctx->GetTrickOption(RT_SLIDE_JUMP)))),
|
||||
|
||||
@@ -716,7 +716,7 @@ void RegionTable_Init_ShadowTemple() {
|
||||
ENTRANCE(RR_SHADOW_TEMPLE_MQ_SPIKES_DOOR_PLATFORM, (((ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->CanUse(logic->IsAdult && AnyAgeTime([]{return logic->CanKillEnemy(RE_REDEAD);}) ? RG_HOOKSHOT : RG_LONGSHOT)) &&
|
||||
//regardless, we can't assume the player does not have the silvers, so we need to cross from the glass to the platform with hovers or a jumpslash jump (as adult)
|
||||
(logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && logic->CanJumpslash()))) ||
|
||||
//alternativly, a middair groundjump from the invisible spikes takes adult directly there
|
||||
//alternatively, a midair groundjump from the invisible spikes takes adult directly there
|
||||
((ctx->GetTrickOption(RT_LENS_SHADOW_MQ) || logic->CanUse(RG_LENS_OF_TRUTH)) && logic->IsAdult && logic->CanMiddairGroundJump()))
|
||||
});
|
||||
|
||||
|
||||
@@ -256,7 +256,7 @@ void RegionTable_Init_SpiritTemple() {
|
||||
RR_SPIRIT_TEMPLE_STATUE_ROOM_CHILD, []{return logic->CanGetEnemyDrop(RE_GOLD_SKULLTULA, ED_LONGSHOT);})),
|
||||
}, {
|
||||
//Exits
|
||||
//Adult can barely make it with just a jump, but it's a bit tight with a bad retry if it is relevent, so it would be it's own trick.
|
||||
//Adult can barely make it with just a jump, but it's a bit tight with a bad retry if it is relevant, so it would be it's own trick.
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_STATUE_ROOM_CHILD, logic->CanUse(RG_HOVER_BOOTS) || logic->BunnyHood() || logic->CanJumpslash() || logic->CanUse(RG_HOOKSHOT)),
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_STATUE_ROOM, true),
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_GS_LEDGE, logic->IsAdult && (ctx->GetTrickOption(RT_SPIRIT_STATUE_JUMP) || logic->BunnyHood())),
|
||||
@@ -570,7 +570,7 @@ void RegionTable_Init_SpiritTemple() {
|
||||
// Exits
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_STATUE_ROOM, true),
|
||||
//Bunny hood jumps with a jumpslash can reach either hand and with good timing the platform as child.
|
||||
//The latter is definitely a trick, the former may not be but I am dissalowing it because I would have to spend a week writing a new branch of spirit key logic.
|
||||
//The latter is definitely a trick, the former may not be but I am disallowing it because I would have to spend a week writing a new branch of spirit key logic.
|
||||
//If this interaction with the hands is added, SpiritSharedLogic needs updating for it
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_INNER_WEST_HAND, logic->CanUse(RG_HOVER_BOOTS) || (logic->BunnyHood() && logic->CanJumpslash() && logic->IsAdult)),
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_INNER_LEFT_HAND, logic->CanUse(RG_HOVER_BOOTS) || (logic->BunnyHood() && logic->CanJumpslash() && logic->IsAdult)),
|
||||
@@ -659,7 +659,7 @@ void RegionTable_Init_SpiritTemple() {
|
||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_GIBDO_BOULDER, logic->BlastOrSmash()),
|
||||
}, {
|
||||
//Exits
|
||||
//climbing the grate through the celing allows you to go backwards here, but that's a clip not visible collision
|
||||
//climbing the grate through the ceiling allows you to go backwards here, but that's a clip not visible collision
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_TURNTABLE, logic->Get(LOGIC_SPIRIT_MQ_GIBDOS_CLEARED)),
|
||||
});
|
||||
|
||||
@@ -1192,7 +1192,7 @@ void RegionTable_Init_SpiritTemple() {
|
||||
// Exits
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_STATUE_ROOM, true),
|
||||
//Bunny hood jumps with a jumpslash can reach either hand and with good timing the platform as child.
|
||||
//The latter is definitely a trick, the former may not be but I am dissalowing it because I would have to spend a week writing a new branch of spirit key logic.
|
||||
//The latter is definitely a trick, the former may not be but I am disallowing it because I would have to spend a week writing a new branch of spirit key logic.
|
||||
//If this interaction with the hands is added, SpiritSharedLogic needs updating for it
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_INNER_RIGHT_HAND, logic->CanUse(RG_HOVER_BOOTS)),
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_INNER_LEFT_HAND, logic->CanUse(RG_HOVER_BOOTS)),
|
||||
|
||||
@@ -254,11 +254,11 @@ void RegionTable_Init_WaterTemple() {
|
||||
//Implies CanAvoid(RE_STINGER)
|
||||
//the full logic for the puzzle, as it is cut down here for optimisation because of how the water rising starts requiring scale
|
||||
//EVENT_ACCESS(LOGIC_WATER_PUSHED_B1_BLOCK, logic->HasItem(RG_GORONS_BRACELET) && logic->HasExplosives() &&
|
||||
// (logic->CanUse(RG_HOOKSHOT) || logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && logiic->BunnyHood()))),
|
||||
// (logic->CanUse(RG_HOOKSHOT) || logic->HasItem(RG_BRONZE_SCALE) || logic->CanUse(RG_HOVER_BOOTS) || (logic->IsAdult && logic->BunnyHood()))),
|
||||
}, {
|
||||
//Locations //we can always get the pots by shooting them from afar and diving for the item...
|
||||
LOCATION(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1, (logic->CanBreakPots(ED_LONGSHOT, true, true) && logic->HasItem(RG_BRONZE_SCALE)) ||
|
||||
//or we can use irons and hookshot the pot, hookshoting to the target door if needed to cross the gap
|
||||
//or we can use irons and hookshot the pot, hookshotting to the target door if needed to cross the gap
|
||||
(logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT) && logic->WaterTimer() >= 8)),
|
||||
LOCATION(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2, (logic->CanBreakPots(ED_LONGSHOT, true, true) && logic->HasItem(RG_BRONZE_SCALE)) ||
|
||||
(logic->CanUse(RG_IRON_BOOTS) && logic->CanUse(RG_HOOKSHOT) && logic->WaterTimer() >= 8)),
|
||||
@@ -1113,7 +1113,7 @@ void RegionTable_Init_WaterTemple() {
|
||||
LOCATION(RC_WATER_TEMPLE_MQ_WONDER_HOOKSHOT_STAIRCASE_LEFT_3, logic->CanUse(RG_HOOKSHOT)),
|
||||
}, {
|
||||
//Exits
|
||||
//you can also make it with hover boots and good timing, using the momentom of the slope, but it's a trick
|
||||
//you can also make it with hover boots and good timing, using the momentum of the slope, but it's a trick
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_WATERFALL, logic->CanUse(RG_LONGSHOT) && logic->CanHitSwitch(ED_FAR)),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_STALFOS_PIT, true),
|
||||
});
|
||||
@@ -1133,7 +1133,7 @@ void RegionTable_Init_WaterTemple() {
|
||||
//Exits
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_STALFOS_PIT, logic->CanUse(RG_HOOKSHOT) && (logic->IsAdult || (logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8))),
|
||||
//Child can use the second method (going via the wall target near the half raised target) with bunny hood, but while the first jump is just wall assisted, the second is inconsistent
|
||||
//It is also possible for them to jump around the statue with bunny, or even climb up sometimes. This needs more investigation before catagorisation as they also seem inconsistent without a setup
|
||||
//It is also possible for them to jump around the statue with bunny, or even climb up sometimes. This needs more investigation before categorisation as they also seem inconsistent without a setup
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_STALFOS_PIT_POTS, (logic->IsAdult && logic->CanUse(RG_HOOKSHOT)) || (logic->CanUse(RG_HOOKSHOT) && (logic->IsAdult || logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8) && (logic->CanUse(RG_HOVER_BOOTS) || logic->Get(LOGIC_WATER_MQ_STALFOS_PIT)))),
|
||||
ENTRANCE(RR_WATER_TEMPLE_MQ_STALFOS_PIT_UPPER, logic->Get(LOGIC_WATER_MQ_STALFOS_PIT) && (logic->IsAdult || logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 8) && logic->CanUse(RG_HOOKSHOT)),
|
||||
});
|
||||
|
||||
@@ -1048,7 +1048,7 @@ bool Logic::CanKillEnemy(RandomizerEnemy enemy, EnemyDistance distance, bool wal
|
||||
// RANDOTODO make a function to track our ammo vs his HP when ammo capacity is taken into account in logic
|
||||
// all swords can at least trade blows with dark link, and even with 1 damage a slash it works out
|
||||
return CanUseSword() ||
|
||||
// Boomerang is a relaible, infinite ammo stun, so it enables any way to get enough damage with the
|
||||
// Boomerang is a reliable, infinite ammo stun, so it enables any way to get enough damage with the
|
||||
// ammo we have Max HP dark link has 40 HP, bows and bombs do 2 so 20 ammo, stick jumpslash does 4 so
|
||||
// 10 sticks
|
||||
(CanUse(RG_BOOMERANG) &&
|
||||
@@ -1178,7 +1178,7 @@ bool Logic::CanPassEnemy(RandomizerEnemy enemy, EnemyDistance distance, bool wal
|
||||
}
|
||||
|
||||
// Can we avoid this enemy while climbing up a wall, or doing a difficult platforming challenge?
|
||||
// use grounded if the challenge is such that the enemy interfears even if it cannot hit link out of the air
|
||||
// use grounded if the challenge is such that the enemy interferes even if it cannot hit link out of the air
|
||||
bool Logic::CanAvoidEnemy(RandomizerEnemy enemy, EnemyDistance distance, bool grounded, uint8_t quantity) {
|
||||
// DISTANCE AND WALL ASSUMED, add more arguments later if needed
|
||||
if (CanKillEnemy(enemy, distance, true, quantity)) {
|
||||
@@ -1430,7 +1430,7 @@ bool Logic::WaterRisingTargetTo3FCentral() {
|
||||
* changed out of logic
|
||||
*
|
||||
* Extending from these 3, LOGIC_WATER_COULD_LOW_FROM_HIGH and LOGIC_WATER_COULD_HIGH_FROM_MID tell us if we can move
|
||||
* from 1 level to the next, without us first having to confirm we can always do the preceeding level first. These allow
|
||||
* from 1 level to the next, without us first having to confirm we can always do the preceding level first. These allow
|
||||
* us to check for conditions where we can complete a water level loop and reach any level from any level before we know
|
||||
* for sure we have real access. MIDDLE_EMBLEM always requires low water, so FROM_LOW is implied in
|
||||
* LOGIC_WATER_COULD_MIDDLE.
|
||||
@@ -1763,7 +1763,7 @@ uint16_t Logic::FireTimer() {
|
||||
}
|
||||
|
||||
// Tunic is not required if you are using irons to do something that a simple gold scale dive could do, and you are not
|
||||
// in water temple. (celing swimming and long walks through water do not count)
|
||||
// in water temple. (ceiling swimming and long walks through water do not count)
|
||||
uint16_t Logic::WaterTimer() {
|
||||
if (CanUse(RG_ZORA_TUNIC)) {
|
||||
return UINT16_MAX;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
// Randomizer tricks and glitches (beta) based on knowledge of what is achievable in Ship of Harkinian randomizer,
|
||||
// excludes Item manipulation (e.g. RBA/GIM/SRM) and Wrong Warping and Ganon BK Skip
|
||||
// TODO Fill and alphabetize (area based tricks must have area in name and come alphetized after general tricks)
|
||||
// TODO Fill and alphabetize (area based tricks must have area in name and come alphabetized after general tricks)
|
||||
// TODO test commented out tricks to see if consistent with console on SoH
|
||||
// TODO add area specific tricks
|
||||
RANDO_ENUM_BEGIN(RandomizerTrick)
|
||||
|
||||
@@ -447,7 +447,7 @@ void Settings::CreateOptions() {
|
||||
OPT_U8(RSK_MQ_DUNGEON_RANDOM, {"None", "Set Number", "Random", "Selection Only"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("MQDungeons"), WIDGET_CVAR_COMBOBOX, RO_MQ_DUNGEONS_NONE, false, nullptr, IMFLAG_NONE);
|
||||
OPT_CALLBACK(RSK_MQ_DUNGEON_RANDOM, {
|
||||
switch (CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE)) {
|
||||
// If No MQ Dungeons, add a separator after the combobx and hide
|
||||
// If No MQ Dungeons, add a separator after the combobox and hide
|
||||
// the count slider and the toggle for individual dungeon selections.
|
||||
case RO_MQ_DUNGEONS_NONE:
|
||||
mOptions[RSK_MQ_DUNGEON_COUNT].Hide();
|
||||
@@ -1097,7 +1097,7 @@ void Settings::CreateOptions() {
|
||||
mOptions[RSK_LOACH_HINT].Enable();
|
||||
} else {
|
||||
mOptions[RSK_LOACH_HINT].Disable(
|
||||
"Loach hint is only avaliable with \"Fishsanity\" set to \"Shuffle only Hyrule Loach\"\nas that's the only "
|
||||
"Loach hint is only available with \"Fishsanity\" set to \"Shuffle only Hyrule Loach\"\nas that's the only "
|
||||
"setting where you present the loach to the fishing pond owner.");
|
||||
}
|
||||
});
|
||||
@@ -2770,7 +2770,7 @@ void Context::FinalizeSettings(const std::set<RandomizerCheck>& excludedLocation
|
||||
mqSet += 1;
|
||||
break;
|
||||
case RO_MQ_SET_RANDOM:
|
||||
// 50% per dungeon, rolled separatly so people can either have a linear distribtuion
|
||||
// 50% per dungeon, rolled separately so people can either have a linear distribution
|
||||
// or a bell curve for the number of MQ dungeons per seed.
|
||||
if (Random(0, 2)) {
|
||||
dungeon->SetMQ();
|
||||
@@ -2814,7 +2814,7 @@ void Context::FinalizeSettings(const std::set<RandomizerCheck>& excludedLocation
|
||||
}
|
||||
// otherwise, every dungeon is possible
|
||||
} else {
|
||||
// if count is MAX_MQ_DUNGEON_COUNT, we know everything is MQ, so can skip some setps and not set Known
|
||||
// if count is MAX_MQ_DUNGEON_COUNT, we know everything is MQ, so can skip some steps and not set Known
|
||||
if (mOptions[RSK_MQ_DUNGEON_RANDOM].Is(RO_MQ_DUNGEONS_SET_NUMBER) && mqCount == MAX_MQ_DUNGEON_COUNT) {
|
||||
randMQOption.resize(MAX_MQ_DUNGEON_COUNT);
|
||||
for (int i = 0; i < MAX_MQ_DUNGEON_COUNT; i++) {
|
||||
|
||||
Reference in New Issue
Block a user