|  | 
| 27 | 27 | from .stardew_rule.rule_explain import explain | 
| 28 | 28 | from .strings.ap_names.ap_option_names import OptionName | 
| 29 | 29 | from .strings.ap_names.community_upgrade_names import CommunityUpgrade | 
| 30 |  | -from .strings.ap_names.event_names import Event | 
| 31 | 30 | from .strings.ap_names.mods.mod_items import SVEQuestItem, SVERunes | 
| 32 | 31 | from .strings.ap_names.transport_names import Transportation | 
| 33 | 32 | from .strings.artisan_good_names import ArtisanGood | 
| @@ -251,7 +250,8 @@ def set_entrance_rules(logic: StardewLogic, multiworld, player, world_options: S | 
| 251 | 250 |     set_entrance_rule(multiworld, player, Entrance.enter_witch_warp_cave, logic.quest.has_dark_talisman() | (logic.mod.magic.can_blink())) | 
| 252 | 251 |     set_entrance_rule(multiworld, player, Entrance.enter_witch_hut, (logic.has(ArtisanGood.void_mayonnaise) | logic.mod.magic.can_blink())) | 
| 253 | 252 |     set_entrance_rule(multiworld, player, Entrance.enter_mutant_bug_lair, | 
| 254 |  | -                      (logic.received(Event.start_dark_talisman_quest) & logic.relationship.can_meet(NPC.krobus)) | logic.mod.magic.can_blink()) | 
|  | 253 | +                      (logic.wallet.has_rusty_key() & logic.region.can_reach(Region.railroad) & logic.relationship.can_meet( | 
|  | 254 | +                          NPC.krobus)) | logic.mod.magic.can_blink()) | 
| 255 | 255 |     set_entrance_rule(multiworld, player, Entrance.enter_casino, logic.quest.has_club_card()) | 
| 256 | 256 | 
 | 
| 257 | 257 |     set_bedroom_entrance_rules(logic, multiworld, player, world_options) | 
| @@ -307,17 +307,15 @@ def set_mines_floor_entrance_rules(logic, multiworld, player): | 
| 307 | 307 |         rule = logic.mine.has_mine_elevator_to_floor(floor - 10) | 
| 308 | 308 |         if floor == 5 or floor == 45 or floor == 85: | 
| 309 | 309 |             rule = rule & logic.mine.can_progress_in_the_mines_from_floor(floor) | 
| 310 |  | -        entrance = multiworld.get_entrance(dig_to_mines_floor(floor), player) | 
| 311 |  | -        MultiWorldRules.set_rule(entrance, rule) | 
|  | 310 | +        set_entrance_rule(multiworld, player, dig_to_mines_floor(floor), rule) | 
| 312 | 311 | 
 | 
| 313 | 312 | 
 | 
| 314 | 313 | def set_skull_cavern_floor_entrance_rules(logic, multiworld, player): | 
| 315 | 314 |     for floor in range(25, 200 + 25, 25): | 
| 316 | 315 |         rule = logic.mod.elevator.has_skull_cavern_elevator_to_floor(floor - 25) | 
| 317 | 316 |         if floor == 25 or floor == 75 or floor == 125: | 
| 318 | 317 |             rule = rule & logic.mine.can_progress_in_the_skull_cavern_from_floor(floor) | 
| 319 |  | -        entrance = multiworld.get_entrance(dig_to_skull_floor(floor), player) | 
| 320 |  | -        MultiWorldRules.set_rule(entrance, rule) | 
|  | 318 | +        set_entrance_rule(multiworld, player, dig_to_skull_floor(floor), rule) | 
| 321 | 319 | 
 | 
| 322 | 320 | 
 | 
| 323 | 321 | def set_blacksmith_entrance_rules(logic, multiworld, player): | 
| @@ -346,9 +344,8 @@ def set_skill_entrance_rules(logic, multiworld, player, world_options: StardewVa | 
| 346 | 344 | 
 | 
| 347 | 345 | 
 | 
| 348 | 346 | def set_blacksmith_upgrade_rule(logic, multiworld, player, entrance_name: str, item_name: str, tool_material: str): | 
| 349 |  | -    material_entrance = multiworld.get_entrance(entrance_name, player) | 
| 350 | 347 |     upgrade_rule = logic.has(item_name) & logic.money.can_spend(tool_upgrade_prices[tool_material]) | 
| 351 |  | -    MultiWorldRules.set_rule(material_entrance, upgrade_rule) | 
|  | 348 | +    set_entrance_rule(multiworld, player, entrance_name, upgrade_rule) | 
| 352 | 349 | 
 | 
| 353 | 350 | 
 | 
| 354 | 351 | def set_festival_entrance_rules(logic, multiworld, player): | 
| @@ -880,25 +877,19 @@ def set_traveling_merchant_day_rules(logic: StardewLogic, multiworld: MultiWorld | 
| 880 | 877 | 
 | 
| 881 | 878 | 
 | 
| 882 | 879 | def set_arcade_machine_rules(logic: StardewLogic, multiworld: MultiWorld, player: int, world_options: StardewValleyOptions): | 
| 883 |  | -    MultiWorldRules.add_rule(multiworld.get_entrance(Entrance.play_junimo_kart, player), | 
| 884 |  | -                             logic.received(Wallet.skull_key)) | 
|  | 880 | +    play_junimo_kart_rule = logic.received(Wallet.skull_key) | 
|  | 881 | + | 
| 885 | 882 |     if world_options.arcade_machine_locations != ArcadeMachineLocations.option_full_shuffling: | 
|  | 883 | +        set_entrance_rule(multiworld, player, Entrance.play_junimo_kart, play_junimo_kart_rule) | 
| 886 | 884 |         return | 
| 887 | 885 | 
 | 
| 888 |  | -    MultiWorldRules.add_rule(multiworld.get_entrance(Entrance.play_junimo_kart, player), | 
| 889 |  | -                             logic.has("Junimo Kart Small Buff")) | 
| 890 |  | -    MultiWorldRules.add_rule(multiworld.get_entrance(Entrance.reach_junimo_kart_2, player), | 
| 891 |  | -                             logic.has("Junimo Kart Medium Buff")) | 
| 892 |  | -    MultiWorldRules.add_rule(multiworld.get_entrance(Entrance.reach_junimo_kart_3, player), | 
| 893 |  | -                             logic.has("Junimo Kart Big Buff")) | 
| 894 |  | -    MultiWorldRules.add_rule(multiworld.get_entrance(Entrance.reach_junimo_kart_4, player), | 
| 895 |  | -                             logic.has("Junimo Kart Max Buff")) | 
| 896 |  | -    MultiWorldRules.add_rule(multiworld.get_entrance(Entrance.play_journey_of_the_prairie_king, player), | 
| 897 |  | -                             logic.has("JotPK Small Buff")) | 
| 898 |  | -    MultiWorldRules.add_rule(multiworld.get_entrance(Entrance.reach_jotpk_world_2, player), | 
| 899 |  | -                             logic.has("JotPK Medium Buff")) | 
| 900 |  | -    MultiWorldRules.add_rule(multiworld.get_entrance(Entrance.reach_jotpk_world_3, player), | 
| 901 |  | -                             logic.has("JotPK Big Buff")) | 
|  | 886 | +    set_entrance_rule(multiworld, player, Entrance.play_junimo_kart, play_junimo_kart_rule & logic.has("Junimo Kart Small Buff")) | 
|  | 887 | +    set_entrance_rule(multiworld, player, Entrance.reach_junimo_kart_2, logic.has("Junimo Kart Medium Buff")) | 
|  | 888 | +    set_entrance_rule(multiworld, player, Entrance.reach_junimo_kart_3, logic.has("Junimo Kart Big Buff")) | 
|  | 889 | +    set_entrance_rule(multiworld, player, Entrance.reach_junimo_kart_4, logic.has("Junimo Kart Max Buff")) | 
|  | 890 | +    set_entrance_rule(multiworld, player, Entrance.play_journey_of_the_prairie_king, logic.has("JotPK Small Buff")) | 
|  | 891 | +    set_entrance_rule(multiworld, player, Entrance.reach_jotpk_world_2, logic.has("JotPK Medium Buff")) | 
|  | 892 | +    set_entrance_rule(multiworld, player, Entrance.reach_jotpk_world_3, logic.has("JotPK Big Buff")) | 
| 902 | 893 |     MultiWorldRules.add_rule(multiworld.get_location("Journey of the Prairie King Victory", player), | 
| 903 | 894 |                              logic.has("JotPK Max Buff")) | 
| 904 | 895 | 
 | 
| @@ -1049,6 +1040,7 @@ def set_entrance_rule(multiworld, player, entrance: str, rule: StardewRule): | 
| 1049 | 1040 |         potentially_required_regions = look_for_indirect_connection(rule) | 
| 1050 | 1041 |         if potentially_required_regions: | 
| 1051 | 1042 |             for region in potentially_required_regions: | 
|  | 1043 | +                logger.debug(f"Registering indirect condition for {region} -> {entrance}") | 
| 1052 | 1044 |                 multiworld.register_indirect_condition(multiworld.get_region(region, player), multiworld.get_entrance(entrance, player)) | 
| 1053 | 1045 | 
 | 
| 1054 | 1046 |         MultiWorldRules.set_rule(multiworld.get_entrance(entrance, player), rule) | 
|  | 
0 commit comments