@@ -227,14 +227,28 @@ def tokens_required_by_settings(world: World) -> int:
227227 'LH Loach Fishing' : lambda world : world .settings .shuffle_loach_reward == 'vanilla' ,
228228}
229229
230+ def rainbow_bridge_hint_kind (world : World ) -> str :
231+ if world .settings .bridge == 'open' :
232+ return 'never'
233+ elif world .settings .bridge == 'vanilla' :
234+ return 'always'
235+ elif world .settings .bridge == 'stones' :
236+ return 'always' if world .settings .bridge_stones > 1 else 'sometimes'
237+ elif world .settings .bridge == 'medallions' :
238+ return 'always' if world .settings .bridge_medallions > 1 else 'sometimes'
239+ elif world .settings .bridge == 'dungeons' :
240+ return 'always' if world .settings .bridge_rewards > 2 else 'sometimes' if world .settings .bridge_rewards > 1 else 'never'
241+ elif world .settings .bridge == 'tokens' :
242+ return 'always' if world .settings .bridge_tokens > 20 else 'sometimes' if world .settings .bridge_tokens > 10 else 'never'
243+ elif world .settings .bridge == 'hearts' :
244+ return 'always' if world .settings .bridge_hearts > world .settings .starting_hearts + 1 else 'sometimes' if world .settings .bridge_hearts > world .settings .starting_hearts else 'never'
245+ else :
246+ raise NotImplementedError (f'Unimplemented bridge condition: { world .settings .bridge } ' )
247+
230248# Entrance hints required under certain settings
231249conditional_entrance_always : dict [str , Callable [[World ], bool ]] = {
232- 'Ganons Castle Grounds -> Ganons Castle Lobby' : lambda world : (world .settings .bridge != 'open'
233- and (world .settings .bridge != 'stones' or world .settings .bridge_stones > 1 )
234- and (world .settings .bridge != 'medallions' or world .settings .bridge_medallions > 1 )
235- and (world .settings .bridge != 'dungeons' or world .settings .bridge_rewards > 2 )
236- and (world .settings .bridge != 'tokens' or world .settings .bridge_tokens > 20 )
237- and (world .settings .bridge != 'hearts' or world .settings .bridge_hearts > world .settings .starting_hearts + 1 )),
250+ 'Ganons Castle Grounds -> Ganons Castle Lobby' : lambda world : rainbow_bridge_hint_kind (world ) == 'always' ,
251+ 'Ganons Castle Main -> Ganons Castle Tower' : lambda world : world .settings .trials > 3 or (rainbow_bridge_hint_kind (world ) == 'always' and not world .shuffle_special_dungeon_entrances ),
238252}
239253
240254# Dual hints required under certain settings
@@ -276,10 +290,8 @@ def tokens_required_by_settings(world: World) -> int:
276290 'Twinrova Rewards' : lambda world : world .settings .shuffle_dungeon_rewards not in ('vanilla' , 'reward' ),
277291
278292 # Conditional entrance hints
279- 'Ganons Castle Grounds -> Ganons Castle Lobby' : lambda world : (world .settings .bridge != 'open'
280- and (world .settings .bridge != 'dungeons' or world .settings .bridge_rewards > 1 )
281- and (world .settings .bridge != 'tokens' or world .settings .bridge_tokens > 10 )
282- and (world .settings .bridge != 'hearts' or world .settings .bridge_hearts > world .settings .starting_hearts )),
293+ 'Ganons Castle Grounds -> Ganons Castle Lobby' : lambda world : rainbow_bridge_hint_kind (world ) != 'never' ,
294+ 'Ganons Castle Main -> Ganons Castle Tower' : lambda world : world .settings .trials > 0 or (rainbow_bridge_hint_kind (world ) != 'never' and not world .shuffle_special_dungeon_entrances ),
283295}
284296
285297# Table of hints, format is (name, hint text, clear hint text, type of hint) there are special characters that are read for certain in game commands:
@@ -1389,6 +1401,7 @@ def tokens_required_by_settings(world: World) -> int:
13891401 'Kakariko Village -> Bottom of the Well' : ("a #village well# leads to" , None , 'entrance' ),
13901402
13911403 'Ganons Castle Grounds -> Ganons Castle Lobby' : ("the #rainbow bridge# leads to" , None , 'entrance' ),
1404+ 'Ganons Castle Main -> Ganons Castle Tower' : ("a #castle barrier# protects the way to" , "#Ganon's trials# protect the way to" , 'entrance' ),
13921405
13931406 'KF Links House' : ("Link's House" , None , 'region' ),
13941407 'Temple of Time' : ("the #Temple of Time#" , None , 'region' ),
@@ -1476,6 +1489,7 @@ def tokens_required_by_settings(world: World) -> int:
14761489 'Morpha Boss Room' : ("the #Giant Aquatic Amoeba#" , "#Morpha#" , 'region' ),
14771490 'Bongo Bongo Boss Room' : ("the #Phantom Shadow Beast#" , "#Bongo Bongo#" , 'region' ),
14781491 'Twinrova Boss Room' : ("the #Sorceress Sisters#" , "#Twinrova#" , 'region' ),
1492+ 'Ganons Castle Tower' : ("#Ganon's Tower#" , None , 'region' ),
14791493
14801494 # Junk hints must satisfy all the following conditions:
14811495 # - They aren't inappropriate.
0 commit comments