mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-04-23 08:14:31 +00:00
Merge Visible Collision and Hammer Through Collision (#6317)
This commit is contained in:
parent
3882086677
commit
40ad4fed82
|
|
@ -345,7 +345,7 @@ void RegionTable_Init_FireTemple() {
|
|||
|
||||
areaTable[RR_FIRE_TEMPLE_SOT_CAGE_SWITCH] = Region("Fire Temple Sot Cage Switch", SCENE_FIRE_TEMPLE, {}, {
|
||||
//Locations
|
||||
LOCATION(RC_FIRE_TEMPLE_HIGHEST_GORON_CHEST, (logic->CanUse(RG_SONG_OF_TIME) || ctx->GetTrickOption(RT_RUSTED_SWITCHES)) && logic->CanUse(RG_MEGATON_HAMMER) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
LOCATION(RC_FIRE_TEMPLE_HIGHEST_GORON_CHEST, (logic->CanUse(RG_SONG_OF_TIME) || ctx->GetTrickOption(RT_VISIBLE_COLLISION)) && logic->CanUse(RG_MEGATON_HAMMER) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, false),
|
||||
|
|
@ -702,7 +702,7 @@ void RegionTable_Init_FireTemple() {
|
|||
//Explosives can also reach this room. Chus is relatively simple, they need to detonate on the first horizontal bar up from the floor while horizontally near the switch, but bombs are much harder
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_MAZE_CRATE_CAGE, AnyAgeTime([]{return logic->CanJumpslash();})),
|
||||
//it's possible to make the RT_FIRE_MQ_MAZE_HOVERS as child using bunny hood jumps, but not adult as adult bonks
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_UPPER_LIZALFOS_MAZE, (logic->HasExplosives() || ctx->GetTrickOption(RT_RUSTED_SWITCHES)) && logic->CanUse(RG_MEGATON_HAMMER) && logic->CanUse(RG_HOOKSHOT)),
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_UPPER_LIZALFOS_MAZE, (logic->HasExplosives() || ctx->GetTrickOption(RT_VISIBLE_COLLISION)) && logic->CanUse(RG_MEGATON_HAMMER) && logic->CanUse(RG_HOOKSHOT)),
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_MAZE_SWITCH_DOOR, logic->HasExplosives() && ctx->GetTrickOption(RT_FIRE_MQ_MAZE_SIDE_ROOM)),
|
||||
ENTRANCE(RR_FIRE_TEMPLE_MQ_NARROW_PATH_ROOM, false),
|
||||
});
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ void RegionTable_Init_GanonsCastle() {
|
|||
//Events
|
||||
EVENT_ACCESS(LOGIC_FAIRY_ACCESS, logic->CanBreakPots()),
|
||||
EVENT_ACCESS(LOGIC_WATER_TRIAL_RUSTED_SWITCH, logic->IsAdult && (logic->HasItem(RG_POWER_BRACELET) || (logic->CanMiddairGroundJump())) &&
|
||||
(logic->BlueFire() || ctx->GetTrickOption(RT_RUSTED_SWITCHES)) &&
|
||||
(logic->BlueFire() || ctx->GetTrickOption(RT_VISIBLE_COLLISION)) &&
|
||||
logic->CanUse(RG_MEGATON_HAMMER)),
|
||||
}, {
|
||||
//Locations
|
||||
|
|
@ -575,7 +575,7 @@ void RegionTable_Init_GanonsCastle() {
|
|||
areaTable[RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_CHAIRS_ROOM] = Region("Ganon's Castle MQ Spirit Trial Chairs Room", SCENE_INSIDE_GANONS_CASTLE, {}, {}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_GANONS_CASTLE_MQ_MAIN, true),
|
||||
ENTRANCE(RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_BEFORE_SWITCH, AnyAgeTime([]{return (logic->CanHitEyeTargets() || ctx->GetTrickOption(RT_RUSTED_SWITCHES)) && logic->CanUse(RG_MEGATON_HAMMER);})),
|
||||
ENTRANCE(RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_BEFORE_SWITCH, AnyAgeTime([]{return (logic->CanHitEyeTargets() || ctx->GetTrickOption(RT_VISIBLE_COLLISION)) && logic->CanUse(RG_MEGATON_HAMMER);})),
|
||||
});
|
||||
|
||||
areaTable[RR_GANONS_CASTLE_MQ_SPIRIT_TRIAL_BEFORE_SWITCH] = Region("Ganon's Castle MQ Spirit Trial Before Switch", SCENE_INSIDE_GANONS_CASTLE, {}, {
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ void RegionTable_Init_IceCavern() {
|
|||
LOCATION(RC_ICE_CAVERN_MAP_CHEST, logic->BlueFire() && logic->HasItem(RG_OPEN_CHEST)),
|
||||
// very easy to break pot through ice
|
||||
LOCATION(RC_ICE_CAVERN_FROZEN_POT_1, (logic->CanBreakPots() && logic->BlueFire()) || logic->HasExplosives() ||
|
||||
(ctx->GetTrickOption(RT_RUSTED_SWITCHES) && ((logic->CanStandingShield() && logic->CanUse(RG_KOKIRI_SWORD)) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER))) ||
|
||||
(ctx->GetTrickOption(RT_VISIBLE_COLLISION) && ((logic->CanStandingShield() && logic->CanUse(RG_KOKIRI_SWORD)) || logic->CanUse(RG_MASTER_SWORD) || logic->CanUse(RG_BIGGORON_SWORD) || logic->CanUse(RG_MEGATON_HAMMER))) ||
|
||||
(ctx->GetTrickOption(RT_HOOKSHOT_EXTENSION) && logic->CanUse(RG_HOOKSHOT))),
|
||||
LOCATION(RC_ICE_CAVERN_MAP_ROOM_LEFT_HEART, true),
|
||||
LOCATION(RC_ICE_CAVERN_MAP_ROOM_MIDDLE_HEART, true),
|
||||
|
|
|
|||
|
|
@ -574,7 +574,7 @@ void RegionTable_Init_SpiritTemple() {
|
|||
areaTable[RR_SPIRIT_TEMPLE_MQ_CHILD_SIDE_HUB] = Region("Spirit Temple MQ Child Side Hub", SCENE_SPIRIT_TEMPLE, {
|
||||
//Events
|
||||
//not technically a rusted switch, but a boulder through a wall, but is part of the same trick on N64
|
||||
EVENT_ACCESS(LOGIC_SPIRIT_MQ_CRAWL_BOULDER, logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_RUSTED_SWITCHES) && logic->CanUse(RG_MEGATON_HAMMER))),
|
||||
EVENT_ACCESS(LOGIC_SPIRIT_MQ_CRAWL_BOULDER, logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_VISIBLE_COLLISION) && logic->CanUse(RG_MEGATON_HAMMER))),
|
||||
}, {
|
||||
//Locations
|
||||
LOCATION(RC_SPIRIT_TEMPLE_MQ_CHILD_HAMMER_SWITCH_CHEST, logic->Get(LOGIC_SPIRIT_MQ_TIME_TRAVEL_CHEST) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
|
|
@ -665,7 +665,7 @@ void RegionTable_Init_SpiritTemple() {
|
|||
areaTable[RR_SPIRIT_TEMPLE_MQ_1F_CHEST_SWITCH] = Region("Spirit Temple MQ West 1F Rusted Switch", SCENE_SPIRIT_TEMPLE, {
|
||||
//Events
|
||||
EVENT_ACCESS(LOGIC_SPIRIT_MQ_TIME_TRAVEL_CHEST, logic->CanUse(RG_MEGATON_HAMMER) && logic->HasItem(RG_OPEN_CHEST)),
|
||||
EVENT_ACCESS(LOGIC_SPIRIT_MQ_CRAWL_BOULDER, logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_RUSTED_SWITCHES) && logic->CanUse(RG_MEGATON_HAMMER))),
|
||||
EVENT_ACCESS(LOGIC_SPIRIT_MQ_CRAWL_BOULDER, logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_VISIBLE_COLLISION) && logic->CanUse(RG_MEGATON_HAMMER))),
|
||||
}, {}, {
|
||||
//Exits
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_CHILD_SIDE_HUB, logic->CanUse(RG_CRAWL) && logic->Get(LOGIC_SPIRIT_MQ_CRAWL_BOULDER)),
|
||||
|
|
@ -709,7 +709,7 @@ void RegionTable_Init_SpiritTemple() {
|
|||
//Logic can then allow child back into spirit, putting 1F west in logic with only 6 keys without forwards entry
|
||||
ENTRANCE(RR_DESERT_COLOSSUS, logic->CanUse(RG_CRAWL) && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).Is(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF) &&
|
||||
logic->SmallKeys(SCENE_SPIRIT_TEMPLE, 6) && logic->MQSpiritStatueToSunBlock() &&
|
||||
(logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_RUSTED_SWITCHES) && AnyAgeTime([]{return logic->CanUse(RG_MEGATON_HAMMER);})))),
|
||||
(logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_VISIBLE_COLLISION) && AnyAgeTime([]{return logic->CanUse(RG_MEGATON_HAMMER);})))),
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_SUN_ON_FLOOR, logic->SmallKeys(SCENE_SPIRIT_TEMPLE, 6)),
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_POT_LEDGE, logic->CanUse(RG_HOVER_BOOTS) || logic->CanUse(RG_SONG_OF_TIME)),
|
||||
ENTRANCE(RR_SPIRIT_TEMPLE_MQ_INNER_RIGHT_HAND, logic->IsAdult || logic->CanJumpslash() || logic->CanUse(RG_HOVER_BOOTS)/* || CanBunnyJump()*/),
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ RANDO_ENUM_ITEM(RT_VISIBLE_COLLISION) // -- general tricks
|
|||
RANDO_ENUM_ITEM(RT_GROTTOS_WITHOUT_AGONY)
|
||||
RANDO_ENUM_ITEM(RT_FEWER_TUNIC_REQUIREMENTS)
|
||||
RANDO_ENUM_ITEM(RT_UNINTUITIVE_JUMPS)
|
||||
RANDO_ENUM_ITEM(RT_RUSTED_SWITCHES)
|
||||
RANDO_ENUM_ITEM(RT_FLAMING_CHESTS)
|
||||
RANDO_ENUM_ITEM(RT_BUNNY_HOOD_JUMPS)
|
||||
RANDO_ENUM_ITEM(RT_DAMAGE_BOOST_SIMPLE)
|
||||
|
|
|
|||
|
|
@ -1400,10 +1400,16 @@ void Settings::CreateOptions() {
|
|||
Try to keep Name Tags less than 8 chars.
|
||||
*/
|
||||
|
||||
OPT_TRICK(RT_VISIBLE_COLLISION, RCQUEST_BOTH, RA_NONE, { Tricks::Tag::NOVICE },
|
||||
"Pass Through Visible One-Way Collision", "VisCol",
|
||||
"Allows climbing through the platform to reach Impa's House Back as adult with no items and going "
|
||||
"through the Kakariko Village Gate as child when coming from the Mountain Trail side.");
|
||||
OPT_TRICK(RT_VISIBLE_COLLISION, RCQUEST_BOTH, RA_NONE, { Tricks::Tag::NOVICE }, "Ignore Visible Collision",
|
||||
"VisCol",
|
||||
"Allows ignoring visible barriers and objects that do not actually stop Link from walking, climbing or "
|
||||
"hitting things, without clipping.\n\n"
|
||||
"This notably allows for walking through Kak's gate backwards, climb into the back of Impa's house as "
|
||||
"Adult from the coop,"
|
||||
"and hitting Rusted Switches or boulders through Blocks, Ice and Walls.\n\n"
|
||||
"This trick only applies to case where doing the thing is trivial, instances where it only works from "
|
||||
"certain angles are not part of this trick,"
|
||||
"niether are any form of clips, including clipping Link's hitbox inside boulders with jumpslash.");
|
||||
OPT_TRICK(RT_GROTTOS_WITHOUT_AGONY, RCQUEST_BOTH, RA_NONE, { Tricks::Tag::NOVICE },
|
||||
"Hidden Grottos without Stone of Agony", "NoSoA",
|
||||
"Allows entering hidden grottos without the Stone of Agony.");
|
||||
|
|
@ -1413,15 +1419,6 @@ void Settings::CreateOptions() {
|
|||
"Many ledges can be overcome with particular jumps which are simple to execute without items.\n"
|
||||
"This includes jumping from heights to dive deeper without scales,\n"
|
||||
"though this trick doesn't cover Water Temple's Dragon Room.");
|
||||
OPT_TRICK(RT_RUSTED_SWITCHES, RCQUEST_BOTH, RA_NONE, { Tricks::Tag::NOVICE }, "Hammer Through Collision", "HamCol",
|
||||
"Applies to:\n"
|
||||
"- Hitting Fire Temple Highest Goron Chest's Rusted Switch in the SoT Block without Song of Time.\n"
|
||||
"- Hitting the rusted switch in Water Trial through the Ice."
|
||||
"- Hitting MQ Fire Temple Lizalfos Maze's Rusted Switch in the wall.\n"
|
||||
"- Having Adult hammer the rock in the west side crawlspace of MQ Spirit so child can get through "
|
||||
"without bombchus."
|
||||
"- MQ Spirit Trial's Rusted Switch between the thrones without hitting the eye target to drop an Iron "
|
||||
"Knuckle.\n");
|
||||
OPT_TRICK(RT_FLAMING_CHESTS, RCQUEST_BOTH, RA_NONE, { Tricks::Tag::INTERMEDIATE }, "Flaming Chests", "FlaChst",
|
||||
"The chests encircled in flames in Gerudo Training Ground and in Spirit Temple can be opened by running "
|
||||
"into the flames while Link is invincible after taking damage.");
|
||||
|
|
|
|||
|
|
@ -306,10 +306,9 @@ std::unordered_map<u32, RandomizerHint> StaticData::grottoChestParamsToHint{
|
|||
|
||||
// preexisting entries are for compatibility with Copper Charlie and should not be updated
|
||||
std::unordered_map<std::string, RandomizerTrick> StaticData::trickToEnum = {
|
||||
{ "0", RT_VISIBLE_COLLISION },
|
||||
{ "1", RT_GROTTOS_WITHOUT_AGONY },
|
||||
{ "2", RT_FEWER_TUNIC_REQUIREMENTS },
|
||||
{ "3", RT_RUSTED_SWITCHES },
|
||||
{ "3", RT_VISIBLE_COLLISION },
|
||||
{ "4", RT_FLAMING_CHESTS },
|
||||
{ "6", RT_DAMAGE_BOOST_SIMPLE },
|
||||
{ "7", RT_HOVER_BOOST_SIMPLE },
|
||||
|
|
|
|||
Loading…
Reference in a new issue