mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-19 21:03:42 -07:00
2 hookshot extension tricks
This commit is contained in:
parent
73209fcf2c
commit
b380dca0cb
4 changed files with 15 additions and 7 deletions
|
@ -104,14 +104,14 @@ void RegionTable_Init_GanonsCastle() {
|
||||||
|
|
||||||
areaTable[RR_GANONS_CASTLE_SPIRIT_TRIAL] = Region("Ganon's Castle Spirit Trial", SCENE_INSIDE_GANONS_CASTLE, {
|
areaTable[RR_GANONS_CASTLE_SPIRIT_TRIAL] = Region("Ganon's Castle Spirit Trial", SCENE_INSIDE_GANONS_CASTLE, {
|
||||||
//Events
|
//Events
|
||||||
EventAccess(&logic->NutPot, []{return ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)));}),
|
EventAccess(&logic->NutPot, []{return ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && (logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_BOW_EXTENSION) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_FAIRY_SLINGSHOT)))) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)));}),
|
||||||
EventAccess(&logic->SpiritTrialClear, []{return logic->CanUse(RG_LIGHT_ARROWS) && (logic->CanUse(RG_MIRROR_SHIELD) || ctx->GetOption(RSK_SUNLIGHT_ARROWS)) && logic->CanUse(RG_BOMBCHU_5) && ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT));}),
|
EventAccess(&logic->SpiritTrialClear, []{return logic->CanUse(RG_LIGHT_ARROWS) && (logic->CanUse(RG_MIRROR_SHIELD) || ctx->GetOption(RSK_SUNLIGHT_ARROWS)) && (logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_BOW_EXTENSION) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_FAIRY_SLINGSHOT)))) && ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT));}),
|
||||||
}, {
|
}, {
|
||||||
//Locations
|
//Locations
|
||||||
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST, (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) || logic->CanUse(RG_HOOKSHOT)) && (logic->CanJumpslashExceptHammer() || logic->CanUse(RG_BOMBCHU_5))),
|
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_CRYSTAL_SWITCH_CHEST, (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) || logic->CanUse(RG_HOOKSHOT)) && (logic->CanJumpslashExceptHammer() || (logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_BOW_EXTENSION) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_FAIRY_SLINGSHOT)))))),
|
||||||
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_INVISIBLE_CHEST, (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) || logic->CanUse(RG_HOOKSHOT)) && (logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_BOW_EXTENSION) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_FAIRY_SLINGSHOT)))) && (ctx->GetTrickOption(RT_LENS_GANON) || logic->CanUse(RG_LENS_OF_TRUTH))),
|
||||||
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1, ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)))),
|
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1, ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && (logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_BOW_EXTENSION) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_FAIRY_SLINGSHOT)))) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)))),
|
||||||
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && logic->CanUse(RG_BOMBCHU_5) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)))),
|
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, ((ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_HOOKSHOT) && logic->CanJumpslashExceptHammer()) || logic->CanUse(RG_HOOKSHOT)) && (logic->CanUse(RG_BOMBCHU_5) || (ctx->GetTrickOption(RT_GANON_SPIRIT_TRIAL_BOW_EXTENSION) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_FAIRY_SLINGSHOT)))) && logic->CanUse(RG_FAIRY_BOW) && (logic->CanUse(RG_MIRROR_SHIELD) || (ctx->GetOption(RSK_SUNLIGHT_ARROWS) && logic->CanUse(RG_LIGHT_ARROWS)))),
|
||||||
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)),
|
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_SUN_FAIRY, logic->CanUse(RG_SUNS_SONG)),
|
||||||
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_HEART, true),
|
LOCATION(RC_GANONS_CASTLE_SPIRIT_TRIAL_HEART, true),
|
||||||
}, {});
|
}, {});
|
||||||
|
|
|
@ -17,7 +17,7 @@ void RegionTable_Init_GerudoValley() {
|
||||||
Entrance(RR_GV_UPPER_STREAM, []{return logic->IsChild || logic->HasItem(RG_BRONZE_SCALE) || logic->TakeDamage();}),
|
Entrance(RR_GV_UPPER_STREAM, []{return logic->IsChild || logic->HasItem(RG_BRONZE_SCALE) || logic->TakeDamage();}),
|
||||||
Entrance(RR_GV_CRATE_LEDGE, []{return logic->IsChild || logic->CanUse(RG_LONGSHOT);}),
|
Entrance(RR_GV_CRATE_LEDGE, []{return logic->IsChild || logic->CanUse(RG_LONGSHOT);}),
|
||||||
Entrance(RR_GV_GROTTO_LEDGE, []{return true;}),
|
Entrance(RR_GV_GROTTO_LEDGE, []{return true;}),
|
||||||
Entrance(RR_GV_FORTRESS_SIDE, []{return (logic->IsAdult && (logic->CanUse(RG_EPONA) || logic->CanUse(RG_LONGSHOT) || ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) || logic->THRescuedAllCarpenters)) || (logic->IsChild && logic->CanUse(RG_HOOKSHOT));}),
|
Entrance(RR_GV_FORTRESS_SIDE, []{return (logic->IsAdult && (logic->CanUse(RG_EPONA) || logic->CanUse(RG_LONGSHOT) || ctx->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) || logic->THRescuedAllCarpenters)) || ((logic->IsChild || ctx->GetTrickOption(RT_GV_HOOKSHOT_EXTENSION_ACROSS_BRIDGE)) && logic->CanUse(RG_HOOKSHOT));}),
|
||||||
Entrance(RR_GV_LOWER_STREAM, []{return logic->IsChild;}), //can use cucco as child
|
Entrance(RR_GV_LOWER_STREAM, []{return logic->IsChild;}), //can use cucco as child
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -3578,6 +3578,7 @@ typedef enum {
|
||||||
RT_LH_LAB_DIVING,
|
RT_LH_LAB_DIVING,
|
||||||
RT_LH_WATER_HOOKSHOT,
|
RT_LH_WATER_HOOKSHOT,
|
||||||
RT_GV_CRATE_HOVERS,
|
RT_GV_CRATE_HOVERS,
|
||||||
|
RT_GV_HOOKSHOT_EXTENSION_ACROSS_BRIDGE,
|
||||||
RT_PASS_GUARDS_WITH_NOTHING,
|
RT_PASS_GUARDS_WITH_NOTHING,
|
||||||
RT_GF_JUMP,
|
RT_GF_JUMP,
|
||||||
RT_GF_WARRIOR_WITH_DIFFICULT_WEAPON,
|
RT_GF_WARRIOR_WITH_DIFFICULT_WEAPON,
|
||||||
|
@ -3702,6 +3703,7 @@ typedef enum {
|
||||||
RT_GTG_MQ_WITHOUT_HOOKSHOT,
|
RT_GTG_MQ_WITHOUT_HOOKSHOT,
|
||||||
RT_LENS_GANON,
|
RT_LENS_GANON,
|
||||||
RT_GANON_SPIRIT_TRIAL_HOOKSHOT,
|
RT_GANON_SPIRIT_TRIAL_HOOKSHOT,
|
||||||
|
RT_GANON_SPIRIT_TRIAL_BOW_EXTENSION,
|
||||||
RT_LENS_GANON_MQ,
|
RT_LENS_GANON_MQ,
|
||||||
RT_GANON_MQ_FIRE_TRIAL,
|
RT_GANON_MQ_FIRE_TRIAL,
|
||||||
RT_GANON_MQ_SHADOW_TRIAL,
|
RT_GANON_MQ_SHADOW_TRIAL,
|
||||||
|
|
|
@ -581,6 +581,9 @@ void Settings::CreateOptions() {
|
||||||
"Gerudo Valley Crate PoH as Adult with Hover Boots",
|
"Gerudo Valley Crate PoH as Adult with Hover Boots",
|
||||||
"From the far side of Gerudo Valley, a precise Hover Boots movement and jump-slash recoil can allow "
|
"From the far side of Gerudo Valley, a precise Hover Boots movement and jump-slash recoil can allow "
|
||||||
"adult to reach the ledge with the crate PoH without needing Longshot. You will take fall damage.");
|
"adult to reach the ledge with the crate PoH without needing Longshot. You will take fall damage.");
|
||||||
|
OPT_TRICK(RT_GV_HOOKSHOT_EXTENSION_ACROSS_BRIDGE, RCQUEST_BOTH, RA_GERUDO_VALLEY,
|
||||||
|
{ Tricks::Tag::INTERMEDIATE, Tricks::Tag::GLITCH }, "Gerudo Valley Cross Bridge with Hookshot Extension",
|
||||||
|
"It is possible to cross Gerudo Valley with only Hookshot using a hookshot extension.");
|
||||||
OPT_TRICK(RT_PASS_GUARDS_WITH_NOTHING, RCQUEST_BOTH, RA_GERUDO_FORTRESS, { Tricks::Tag::NOVICE },
|
OPT_TRICK(RT_PASS_GUARDS_WITH_NOTHING, RCQUEST_BOTH, RA_GERUDO_FORTRESS, { Tricks::Tag::NOVICE },
|
||||||
"Sneak Past Moving Gerudo Guards with No Items",
|
"Sneak Past Moving Gerudo Guards with No Items",
|
||||||
"The logic normally guarantees Bow or Hookshot to stun them from a distance,"
|
"The logic normally guarantees Bow or Hookshot to stun them from a distance,"
|
||||||
|
@ -1133,6 +1136,9 @@ void Settings::CreateOptions() {
|
||||||
"Spirit Trial without Hookshot",
|
"Spirit Trial without Hookshot",
|
||||||
"The highest rupee can be obtained as either age by performing a precise jump and a well-timed jumpslash "
|
"The highest rupee can be obtained as either age by performing a precise jump and a well-timed jumpslash "
|
||||||
"off of an Armos.");
|
"off of an Armos.");
|
||||||
|
OPT_TRICK(RT_GANON_SPIRIT_TRIAL_BOW_EXTENSION, RCQUEST_VANILLA, RA_GANONS_CASTLE,
|
||||||
|
{ Tricks::Tag::NOVICE, Tricks::Tag::GLITCH }, "Spirit Trial Switch with Bow Extension",
|
||||||
|
"It is possible to shoot through wall to hit switch using a bow extension.");
|
||||||
OPT_TRICK(RT_LENS_GANON_MQ, RCQUEST_MQ, RA_GANONS_CASTLE, { Tricks::Tag::NOVICE },
|
OPT_TRICK(RT_LENS_GANON_MQ, RCQUEST_MQ, RA_GANONS_CASTLE, { Tricks::Tag::NOVICE },
|
||||||
"Ganon\'s Castle MQ without Lens of Truth",
|
"Ganon\'s Castle MQ without Lens of Truth",
|
||||||
"Removes the requirements for the Lens of Truth in Ganon's Castle MQ.");
|
"Removes the requirements for the Lens of Truth in Ganon's Castle MQ.");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue