@@ -43,9 +43,9 @@ void RegionTable_Init_GerudoTrainingGround() {
4343 EventAccess (LOGIC_GTG_SILVER_SLOPE, []{return logic->CanUse (logic->IsAdult ? RG_HOOKSHOT : RG_LONGSHOT) || ctx->GetTrickOption (RT_GTG_WITHOUT_HOOKSHOT);}),
4444 }, {
4545 // Locations
46- LOCATION (RC_GTG_SILVER_SLOPE_1, true ), // TODO figure out which of these need hookshot
46+ LOCATION (RC_GTG_SILVER_SLOPE_1, true ),
4747 LOCATION (RC_GTG_SILVER_SLOPE_2, true ),
48- LOCATION (RC_GTG_SILVER_SLOPE_3, true ),
48+ LOCATION (RC_GTG_SILVER_SLOPE_3, logic-> CanUse (logic-> IsAdult ? RG_HOOKSHOT : RG_LONGSHOT) || ctx-> GetTrickOption (RT_GTG_WITHOUT_HOOKSHOT) ),
4949 LOCATION (RC_GTG_SILVER_SLOPE_4, true ),
5050 LOCATION (RC_GTG_SILVER_SLOPE_5, true ),
5151 }, {
@@ -72,6 +72,7 @@ void RegionTable_Init_GerudoTrainingGround() {
7272 LOCATION (RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_CENTRAL_CHEST, true ),
7373 LOCATION (RC_GERUDO_TRAINING_GROUND_MAZE_RIGHT_SIDE_CHEST, true ),
7474 LOCATION (RC_GERUDO_TRAINING_GROUND_FREESTANDING_KEY, true ),
75+ LOCATION (RC_GTG_SILVER_LAVA_5, true ),
7576 }, {
7677 // Exits
7778 Entrance (RR_GERUDO_TRAINING_GROUND_LAVA_ROOM, []{return true ;}),
@@ -161,9 +162,8 @@ void RegionTable_Init_GerudoTrainingGround() {
161162 // Locations
162163 LOCATION (RC_GTG_SILVER_LAVA_1, true ),
163164 LOCATION (RC_GTG_SILVER_LAVA_2, true ),
164- LOCATION (RC_GTG_SILVER_LAVA_3, true ),
165- LOCATION (RC_GTG_SILVER_LAVA_4, true ),
166- LOCATION (RC_GTG_SILVER_LAVA_5, true ),
165+ LOCATION (RC_GTG_SILVER_LAVA_3, logic->CanUse (RG_HOVER_BOOTS) || logic->CanUse (RG_SONG_OF_TIME)),
166+ LOCATION (RC_GTG_SILVER_LAVA_5, logic->CanUse (RG_HOVER_BOOTS) || logic->CanUse (RG_SONG_OF_TIME)),
167167 }, {
168168 // Exits
169169 Entrance (RR_GERUDO_TRAINING_GROUND_DINALFOS, []{return true ;}),
@@ -173,7 +173,10 @@ void RegionTable_Init_GerudoTrainingGround() {
173173 Entrance (RR_GERUDO_TRAINING_GROUND_UNDERWATER, []{return logic->HasItem (RG_GTG_SILVER_LAVA);}),
174174 });
175175
176- areaTable[RR_GERUDO_TRAINING_GROUND_LAVA_ROOM_UPPER_LEDGE] = Region (" Gerudo Training Ground Lava Room" , SCENE_GERUDO_TRAINING_GROUND, {}, {}, {
176+ areaTable[RR_GERUDO_TRAINING_GROUND_LAVA_ROOM_UPPER_LEDGE] = Region (" Gerudo Training Ground Lava Room" , SCENE_GERUDO_TRAINING_GROUND, {}, {
177+ LOCATION (RC_GTG_SILVER_LAVA_4, logic->CanUse (RG_HOOKSHOT)),
178+ LOCATION (RC_GTG_SILVER_LAVA_5, true ),
179+ }, {
177180 // Exits
178181 // possible to make across with as adult's rolling jump, no hookshot necessary
179182 Entrance (RR_GERUDO_TRAINING_GROUND_LAVA_ROOM, []{return logic->CanUse (RG_HOOKSHOT) || logic->CanUse (RG_HOVER_BOOTS) || logic->CanUse (RG_SONG_OF_TIME);}),
@@ -186,11 +189,12 @@ void RegionTable_Init_GerudoTrainingGround() {
186189 }, {
187190 // Locations
188191 LOCATION (RC_GERUDO_TRAINING_GROUND_UNDERWATER_SILVER_RUPEE_CHEST, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && logic->HasItem (RG_BRONZE_SCALE) && logic->WaterTimer () >= 24 ),
189- LOCATION (RC_GTG_SILVER_WATER_1, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && logic->HasItem (RG_BRONZE_SCALE) && logic->WaterTimer () >= 24 ),
190- LOCATION (RC_GTG_SILVER_WATER_2, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && logic->HasItem (RG_BRONZE_SCALE) && logic->WaterTimer () >= 24 ),
191- LOCATION (RC_GTG_SILVER_WATER_3, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && logic->HasItem (RG_BRONZE_SCALE) && logic->WaterTimer () >= 24 ),
192- LOCATION (RC_GTG_SILVER_WATER_4, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && logic->HasItem (RG_BRONZE_SCALE) && logic->WaterTimer () >= 24 ),
193- LOCATION (RC_GTG_SILVER_WATER_5, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && logic->HasItem (RG_BRONZE_SCALE) && logic->WaterTimer () >= 24 ),
192+ // 3 & 5 can be retrieved with only iron boots by attempting to backflip underwater
193+ LOCATION (RC_GTG_SILVER_WATER_1, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 16 ),
194+ LOCATION (RC_GTG_SILVER_WATER_2, logic->CanUse (RG_SONG_OF_TIME) && (logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 16 ) || logic->HasItem (RG_GOLDEN_SCALE)),
195+ LOCATION (RC_GTG_SILVER_WATER_3, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 16 ),
196+ LOCATION (RC_GTG_SILVER_WATER_4, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && (logic->HasItem (RG_BRONZE_SCALE) || logic->CanUse (RG_HOOKSHOT)) && logic->WaterTimer () >= 16 ),
197+ LOCATION (RC_GTG_SILVER_WATER_5, logic->CanUse (RG_SONG_OF_TIME) && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 16 ),
194198 }, {
195199 // Exits
196200 Entrance (RR_GERUDO_TRAINING_GROUND_LAVA_ROOM, []{return true ;}),
@@ -363,19 +367,20 @@ void RegionTable_Init_GerudoTrainingGround() {
363367 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_TORCH_SLUG_ROOM, []{return true ;}),
364368 });
365369
366- // this region exists to place silver rupee items on later, normally it's all on fire and cannot be stood on without access from another area
367- // This covers the 2 platforms that can be jumped to directly from RR_GERUDO_TRAINING_GROUND_MQ_SWITCH_LEDGE
368- // the unshuffled rupee collection is handled by the event GTGPlatformSilverRupees
369- areaTable[RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS] = Region (" Gerudo Training Ground MQ Ledge Side Platforms" , SCENE_GERUDO_TRAINING_GROUND, {}, {}, {
370+ // This covers the 2 platforms that can be jumped to directly from RR_GERUDO_TRAINING_GROUND_MQ_SWITCH_LEDGE, without flame circles
371+ areaTable[RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS] = Region (" Gerudo Training Ground MQ Ledge Side Platforms" , SCENE_GERUDO_TRAINING_GROUND, {}, {
372+ LOCATION (RC_GTG_MQ_SILVER_LAVA_1, true ),
373+ LOCATION (RC_GTG_MQ_SILVER_LAVA_3, true ),
374+ }, {
370375 // Exits
371376 // This is merely to extend this region's logic if you have hovers
372377 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_FURTHEST_PLATFORM, []{return logic->CanUse (RG_HOVER_BOOTS);}),
373378 });
374379
375- // this region exists to place silver rupee items on later, normally it's all on fire and cannot be stood on without access from another area
376- // This covers the platform that needs hover boots or the spawned targets to reach from any starting point other than RR_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT
377- // the unshuffled rupee collection is handled by the event GTGPlatformSilverRupees
378- areaTable[RR_GERUDO_TRAINING_GROUND_MQ_FURTHEST_PLATFORM] = Region ( " Gerudo Training Ground MQ Furthest Platform " , SCENE_GERUDO_TRAINING_GROUND, {}, { }, {
380+ // This covers the platform that needs hover boots or the spawned targets to reach from any starting point other than RR_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT, without flame circles
381+ areaTable[RR_GERUDO_TRAINING_GROUND_MQ_FURTHEST_PLATFORM] = Region ( " Gerudo Training Ground MQ Furthest Platform " , SCENE_GERUDO_TRAINING_GROUND, {}, {
382+ LOCATION (RC_GTG_MQ_SILVER_LAVA_2, true ),
383+ }, {
379384 // Exits
380385 // This is merely to extend this region's logic if you have hovers
381386 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS, []{return logic->CanUse (RG_HOVER_BOOTS);}),
@@ -384,7 +389,11 @@ void RegionTable_Init_GerudoTrainingGround() {
384389 areaTable[RR_GERUDO_TRAINING_GROUND_MQ_PLATFORMS_UNLIT_TORCH] = Region (" Gerudo Training Ground MQ Platforms Unlit Torch" , SCENE_GERUDO_TRAINING_GROUND, {
385390 // Events
386391 EventAccess (LOGIC_GTG_MQ_SILVER_LAVA, []{return logic->HasFireSource () && logic->CanUse (RG_HOVER_BOOTS);}),
387- }, {}, {
392+ }, {
393+ LOCATION (RC_GTG_MQ_SILVER_LAVA_4, logic->HasFireSource ()),
394+ LOCATION (RC_GTG_MQ_SILVER_LAVA_5, logic->HasFireSource ()),
395+ LOCATION (RC_GTG_MQ_SILVER_LAVA_6, logic->HasFireSource ()),
396+ }, {
388397 // Exits
389398 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_UNDERWATER, []{return logic->HasItem (RG_GTG_MQ_SILVER_LAVA);}),
390399 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS, []{return logic->HasFireSource () && logic->CanUse (RG_HOVER_BOOTS);}),
@@ -394,16 +403,13 @@ void RegionTable_Init_GerudoTrainingGround() {
394403
395404 areaTable[RR_GERUDO_TRAINING_GROUND_MQ_TORCH_SIDE_PLATFORMS] = Region (" Gerudo Training Ground Torch Side Platforms" , SCENE_GERUDO_TRAINING_GROUND, {
396405 // Events
397- // this torch shot is possible as child but tight and obtuse enough to be a trick
406+ // this torch shot is possible as child but tight and obtuse enough to be a trick, hoverboots can also light with stick as trick
398407 EventAccess (LOGIC_GTG_MQ_SILVER_LAVA, []{return ((logic->CanUse (RG_FAIRY_BOW) && logic->IsAdult ) || logic->CanUse (RG_FIRE_ARROWS)) && logic->CanUse (RG_HOVER_BOOTS);}),
399408 }, {
400409 // Locations
401- LOCATION (RC_GTG_MQ_SILVER_LAVA_1, logic->Get (LOGIC_GTG_MQ_SILVER_LAVA)),
402- LOCATION (RC_GTG_MQ_SILVER_LAVA_2, logic->Get (LOGIC_GTG_MQ_SILVER_LAVA)),
403- LOCATION (RC_GTG_MQ_SILVER_LAVA_3, logic->Get (LOGIC_GTG_MQ_SILVER_LAVA)),
404- LOCATION (RC_GTG_MQ_SILVER_LAVA_4, logic->Get (LOGIC_GTG_MQ_SILVER_LAVA)),
405- LOCATION (RC_GTG_MQ_SILVER_LAVA_5, logic->Get (LOGIC_GTG_MQ_SILVER_LAVA)),
406- LOCATION (RC_GTG_MQ_SILVER_LAVA_6, logic->Get (LOGIC_GTG_MQ_SILVER_LAVA)),
410+ LOCATION (RC_GTG_MQ_SILVER_LAVA_4, (logic->CanUse (RG_FAIRY_BOW) && logic->IsAdult ) || logic->CanUse (RG_FIRE_ARROWS)),
411+ LOCATION (RC_GTG_MQ_SILVER_LAVA_5, (logic->CanUse (RG_FAIRY_BOW) && logic->IsAdult ) || logic->CanUse (RG_FIRE_ARROWS)),
412+ LOCATION (RC_GTG_MQ_SILVER_LAVA_6, (logic->CanUse (RG_FAIRY_BOW) && logic->IsAdult ) || logic->CanUse (RG_FIRE_ARROWS)),
407413 }, {
408414 // Exits
409415 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS, []{return ((logic->CanUse (RG_FAIRY_BOW) && logic->IsAdult ) || logic->CanUse (RG_FIRE_ARROWS)) && logic->CanUse (RG_HOVER_BOOTS);}),
@@ -413,14 +419,14 @@ void RegionTable_Init_GerudoTrainingGround() {
413419 });
414420
415421 areaTable[RR_GERUDO_TRAINING_GROUND_MQ_UNDERWATER] = Region (" Gerudo Training Ground MQ Underwater" , SCENE_GERUDO_TRAINING_GROUND, {
416- EventAccess (LOGIC_GTG_MQ_SILVER_WATER, []{return logic->HasFireSource () && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 24 && logic->HasItem (RG_BRONZE_SCALE) && logic-> TakeDamage ();}),
422+ EventAccess (LOGIC_GTG_MQ_SILVER_WATER, []{return logic->HasFireSource () && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 24 && logic->TakeDamage ();}),
417423 }, {
418424 // Locations
419425 // it is possible to snipe the stingers with bow or sling before dropping in, or just get really lucky, and avoid needing to take damage, but that might be trick worthy
420426 LOCATION (RC_GERUDO_TRAINING_GROUND_MQ_UNDERWATER_SILVER_RUPEE_CHEST, logic->HasItem (RG_GTG_MQ_SILVER_WATER)),
421- LOCATION (RC_GTG_MQ_SILVER_WATER_1, logic->HasFireSource () && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 24 && logic->HasItem (RG_BRONZE_SCALE) && logic-> TakeDamage ()),
422- LOCATION (RC_GTG_MQ_SILVER_WATER_2, logic->HasFireSource () && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 24 && logic->HasItem (RG_BRONZE_SCALE) && logic-> TakeDamage ()),
423- LOCATION (RC_GTG_MQ_SILVER_WATER_3, logic->HasFireSource () && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 24 && logic->HasItem (RG_BRONZE_SCALE) && logic-> TakeDamage ()),
427+ LOCATION (RC_GTG_MQ_SILVER_WATER_1, logic->HasFireSource () && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 24 && logic->TakeDamage ()),
428+ LOCATION (RC_GTG_MQ_SILVER_WATER_2, logic->HasFireSource () && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 24 && logic->TakeDamage ()),
429+ LOCATION (RC_GTG_MQ_SILVER_WATER_3, logic->HasFireSource () && logic->CanUse (RG_IRON_BOOTS) && logic->WaterTimer () >= 24 && logic->TakeDamage ()),
424430 }, {
425431 // Exits
426432 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_PLATFORMS_UNLIT_TORCH, []{return true ;}),
@@ -434,10 +440,16 @@ void RegionTable_Init_GerudoTrainingGround() {
434440 // Locations
435441 LOCATION (RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_CENTRAL_CHEST, true ),
436442 LOCATION (RC_GERUDO_TRAINING_GROUND_MQ_MAZE_RIGHT_SIDE_CHEST, true ),
443+ LOCATION (RC_GTG_MQ_SILVER_LAVA_1, logic->CanUse (RG_FIRE_ARROWS)),
444+ LOCATION (RC_GTG_MQ_SILVER_LAVA_2, logic->CanUse (RG_FIRE_ARROWS)),
445+ LOCATION (RC_GTG_MQ_SILVER_LAVA_3, logic->CanUse (RG_FIRE_ARROWS)),
446+ LOCATION (RC_GTG_MQ_SILVER_LAVA_4, logic->CanUse (RG_FIRE_ARROWS)),
447+ LOCATION (RC_GTG_MQ_SILVER_LAVA_5, logic->CanUse (RG_FIRE_ARROWS)),
448+ LOCATION (RC_GTG_MQ_SILVER_LAVA_6, logic->CanUse (RG_FIRE_ARROWS)),
437449 }, {
438450 // Exits
439451 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_LOBBY, []{return true ;}),
440- Entrance (RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS , []{return logic->CanUse (RG_FIRE_ARROWS) || logic->CanUse (RG_LONGSHOT);}),
452+ Entrance (RR_GERUDO_TRAINING_GROUND_MQ_TORCH_SIDE_PLATFORMS , []{return logic->CanUse (RG_FIRE_ARROWS) || logic->CanUse (RG_LONGSHOT);}),
441453 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_PLATFORMS_UNLIT_TORCH, []{return logic->CanUse (RG_FIRE_ARROWS) || logic->CanUse (RG_LONGSHOT) || (logic->HasItem (RG_GTG_MQ_SILVER_LAVA) && logic->CanUse (RG_HOVER_BOOTS));}),
442454 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_LEDGE_SIDE_PLATFORMS, []{return logic->CanUse (RG_FIRE_ARROWS);}),
443455 Entrance (RR_GERUDO_TRAINING_GROUND_MQ_FURTHEST_PLATFORM, []{return logic->CanUse (RG_FIRE_ARROWS);}),
0 commit comments