SA2B: v2.2 Content Update (#1904)

* Ice Trap Support

* Support Animalsanity

* Add option for controlling number of emblems in pool

* Support Slow Trap

* Support Cutscene Traps

* Support Voice Shuffle

* Handle Boss Rush goals

* Fix create item reference to self.multiworld

* Support Ringlink

* Reduce beep frequency to 20

* Add Boss Rush Chaos Emerald Hunt Goal

* Fix Eternal Engine - Pipe 1 logic

* Add Chao voice shuffle

* Remove unused option

* Adjust wording of Required Cannon's Core Missions

* Fix incorrect region assignment

* Fix incorrect animal logics

* Fix Chao Race tooltip

* Remove Green Hill Animal Location

* Add Location Count info to tooltips

* Don't allow M4 first if animalsanity is active

* Add Iron Boots to Standard Logic Egg Quarters 5

* Make Vanilla Boss Rush actually Vanilla

* Increment Mod Version

* Increment Data Package Version

---------

Co-authored-by: RaspberrySpaceJam <tyler.summers@gmail.com>
This commit is contained in:
PoryGone
2023-06-27 17:38:58 -04:00
committed by GitHub
parent d51e0ec0ab
commit 1ced726d31
10 changed files with 3067 additions and 585 deletions

View File

@@ -149,6 +149,26 @@ def create_regions(world, player: int, active_locations):
LocationName.city_escape_omo_13,
LocationName.city_escape_omo_14,
LocationName.city_escape_beetle,
LocationName.city_escape_animal_1,
LocationName.city_escape_animal_2,
LocationName.city_escape_animal_3,
LocationName.city_escape_animal_4,
LocationName.city_escape_animal_5,
LocationName.city_escape_animal_6,
LocationName.city_escape_animal_7,
LocationName.city_escape_animal_8,
LocationName.city_escape_animal_9,
LocationName.city_escape_animal_10,
LocationName.city_escape_animal_11,
LocationName.city_escape_animal_12,
LocationName.city_escape_animal_13,
LocationName.city_escape_animal_14,
LocationName.city_escape_animal_15,
LocationName.city_escape_animal_16,
LocationName.city_escape_animal_17,
LocationName.city_escape_animal_18,
LocationName.city_escape_animal_19,
LocationName.city_escape_animal_20,
LocationName.city_escape_upgrade,
]
city_escape_region = create_region(world, player, active_locations, LocationName.city_escape_region,
@@ -170,6 +190,20 @@ def create_regions(world, player: int, active_locations):
LocationName.metal_harbor_omo_4,
LocationName.metal_harbor_omo_5,
LocationName.metal_harbor_beetle,
LocationName.metal_harbor_animal_1,
LocationName.metal_harbor_animal_2,
LocationName.metal_harbor_animal_3,
LocationName.metal_harbor_animal_4,
LocationName.metal_harbor_animal_5,
LocationName.metal_harbor_animal_6,
LocationName.metal_harbor_animal_7,
LocationName.metal_harbor_animal_8,
LocationName.metal_harbor_animal_9,
LocationName.metal_harbor_animal_10,
LocationName.metal_harbor_animal_11,
LocationName.metal_harbor_animal_12,
LocationName.metal_harbor_animal_13,
LocationName.metal_harbor_animal_14,
LocationName.metal_harbor_upgrade,
]
metal_harbor_region = create_region(world, player, active_locations, LocationName.metal_harbor_region,
@@ -191,6 +225,24 @@ def create_regions(world, player: int, active_locations):
LocationName.green_forest_hidden_3,
LocationName.green_forest_hidden_4,
LocationName.green_forest_beetle,
LocationName.green_forest_animal_1,
LocationName.green_forest_animal_2,
LocationName.green_forest_animal_3,
LocationName.green_forest_animal_4,
LocationName.green_forest_animal_5,
LocationName.green_forest_animal_6,
LocationName.green_forest_animal_7,
LocationName.green_forest_animal_8,
LocationName.green_forest_animal_9,
LocationName.green_forest_animal_10,
LocationName.green_forest_animal_11,
LocationName.green_forest_animal_12,
LocationName.green_forest_animal_13,
LocationName.green_forest_animal_14,
LocationName.green_forest_animal_15,
LocationName.green_forest_animal_16,
LocationName.green_forest_animal_17,
LocationName.green_forest_animal_18,
LocationName.green_forest_upgrade,
]
green_forest_region = create_region(world, player, active_locations, LocationName.green_forest_region,
@@ -214,6 +266,25 @@ def create_regions(world, player: int, active_locations):
LocationName.pyramid_cave_omo_3,
LocationName.pyramid_cave_omo_4,
LocationName.pyramid_cave_beetle,
LocationName.pyramid_cave_animal_1,
LocationName.pyramid_cave_animal_2,
LocationName.pyramid_cave_animal_3,
LocationName.pyramid_cave_animal_4,
LocationName.pyramid_cave_animal_5,
LocationName.pyramid_cave_animal_6,
LocationName.pyramid_cave_animal_7,
LocationName.pyramid_cave_animal_8,
LocationName.pyramid_cave_animal_9,
LocationName.pyramid_cave_animal_10,
LocationName.pyramid_cave_animal_11,
LocationName.pyramid_cave_animal_12,
LocationName.pyramid_cave_animal_13,
LocationName.pyramid_cave_animal_14,
LocationName.pyramid_cave_animal_15,
LocationName.pyramid_cave_animal_16,
LocationName.pyramid_cave_animal_17,
LocationName.pyramid_cave_animal_18,
LocationName.pyramid_cave_animal_19,
LocationName.pyramid_cave_upgrade,
]
pyramid_cave_region = create_region(world, player, active_locations, LocationName.pyramid_cave_region,
@@ -247,6 +318,22 @@ def create_regions(world, player: int, active_locations):
LocationName.crazy_gadget_omo_12,
LocationName.crazy_gadget_omo_13,
LocationName.crazy_gadget_beetle,
LocationName.crazy_gadget_animal_1,
LocationName.crazy_gadget_animal_2,
LocationName.crazy_gadget_animal_3,
LocationName.crazy_gadget_animal_4,
LocationName.crazy_gadget_animal_5,
LocationName.crazy_gadget_animal_6,
LocationName.crazy_gadget_animal_7,
LocationName.crazy_gadget_animal_8,
LocationName.crazy_gadget_animal_9,
LocationName.crazy_gadget_animal_10,
LocationName.crazy_gadget_animal_11,
LocationName.crazy_gadget_animal_12,
LocationName.crazy_gadget_animal_13,
LocationName.crazy_gadget_animal_14,
LocationName.crazy_gadget_animal_15,
LocationName.crazy_gadget_animal_16,
LocationName.crazy_gadget_upgrade,
]
crazy_gadget_region = create_region(world, player, active_locations, LocationName.crazy_gadget_region,
@@ -267,6 +354,22 @@ def create_regions(world, player: int, active_locations):
LocationName.final_rush_omo_2,
LocationName.final_rush_omo_3,
LocationName.final_rush_beetle,
LocationName.final_rush_animal_1,
LocationName.final_rush_animal_2,
LocationName.final_rush_animal_3,
LocationName.final_rush_animal_4,
LocationName.final_rush_animal_5,
LocationName.final_rush_animal_6,
LocationName.final_rush_animal_7,
LocationName.final_rush_animal_8,
LocationName.final_rush_animal_9,
LocationName.final_rush_animal_10,
LocationName.final_rush_animal_11,
LocationName.final_rush_animal_12,
LocationName.final_rush_animal_13,
LocationName.final_rush_animal_14,
LocationName.final_rush_animal_15,
LocationName.final_rush_animal_16,
LocationName.final_rush_upgrade,
]
final_rush_region = create_region(world, player, active_locations, LocationName.final_rush_region,
@@ -298,6 +401,21 @@ def create_regions(world, player: int, active_locations):
LocationName.prison_lane_omo_9,
LocationName.prison_lane_omo_10,
LocationName.prison_lane_beetle,
LocationName.prison_lane_animal_1,
LocationName.prison_lane_animal_2,
LocationName.prison_lane_animal_3,
LocationName.prison_lane_animal_4,
LocationName.prison_lane_animal_5,
LocationName.prison_lane_animal_6,
LocationName.prison_lane_animal_7,
LocationName.prison_lane_animal_8,
LocationName.prison_lane_animal_9,
LocationName.prison_lane_animal_10,
LocationName.prison_lane_animal_11,
LocationName.prison_lane_animal_12,
LocationName.prison_lane_animal_13,
LocationName.prison_lane_animal_14,
LocationName.prison_lane_animal_15,
LocationName.prison_lane_upgrade,
]
prison_lane_region = create_region(world, player, active_locations, LocationName.prison_lane_region,
@@ -328,6 +446,22 @@ def create_regions(world, player: int, active_locations):
LocationName.mission_street_omo_7,
LocationName.mission_street_omo_8,
LocationName.mission_street_beetle,
LocationName.mission_street_animal_1,
LocationName.mission_street_animal_2,
LocationName.mission_street_animal_3,
LocationName.mission_street_animal_4,
LocationName.mission_street_animal_5,
LocationName.mission_street_animal_6,
LocationName.mission_street_animal_7,
LocationName.mission_street_animal_8,
LocationName.mission_street_animal_9,
LocationName.mission_street_animal_10,
LocationName.mission_street_animal_11,
LocationName.mission_street_animal_12,
LocationName.mission_street_animal_13,
LocationName.mission_street_animal_14,
LocationName.mission_street_animal_15,
LocationName.mission_street_animal_16,
LocationName.mission_street_upgrade,
]
mission_street_region = create_region(world, player, active_locations, LocationName.mission_street_region,
@@ -361,6 +495,21 @@ def create_regions(world, player: int, active_locations):
LocationName.hidden_base_omo_3,
LocationName.hidden_base_omo_4,
LocationName.hidden_base_beetle,
LocationName.hidden_base_animal_1,
LocationName.hidden_base_animal_2,
LocationName.hidden_base_animal_3,
LocationName.hidden_base_animal_4,
LocationName.hidden_base_animal_5,
LocationName.hidden_base_animal_6,
LocationName.hidden_base_animal_7,
LocationName.hidden_base_animal_8,
LocationName.hidden_base_animal_9,
LocationName.hidden_base_animal_10,
LocationName.hidden_base_animal_11,
LocationName.hidden_base_animal_12,
LocationName.hidden_base_animal_13,
LocationName.hidden_base_animal_14,
LocationName.hidden_base_animal_15,
LocationName.hidden_base_upgrade,
]
hidden_base_region = create_region(world, player, active_locations, LocationName.hidden_base_region,
@@ -393,6 +542,21 @@ def create_regions(world, player: int, active_locations):
LocationName.eternal_engine_omo_11,
LocationName.eternal_engine_omo_12,
LocationName.eternal_engine_beetle,
LocationName.eternal_engine_animal_1,
LocationName.eternal_engine_animal_2,
LocationName.eternal_engine_animal_3,
LocationName.eternal_engine_animal_4,
LocationName.eternal_engine_animal_5,
LocationName.eternal_engine_animal_6,
LocationName.eternal_engine_animal_7,
LocationName.eternal_engine_animal_8,
LocationName.eternal_engine_animal_9,
LocationName.eternal_engine_animal_10,
LocationName.eternal_engine_animal_11,
LocationName.eternal_engine_animal_12,
LocationName.eternal_engine_animal_13,
LocationName.eternal_engine_animal_14,
LocationName.eternal_engine_animal_15,
LocationName.eternal_engine_upgrade,
]
eternal_engine_region = create_region(world, player, active_locations, LocationName.eternal_engine_region,
@@ -421,6 +585,16 @@ def create_regions(world, player: int, active_locations):
LocationName.wild_canyon_omo_9,
LocationName.wild_canyon_omo_10,
LocationName.wild_canyon_beetle,
LocationName.wild_canyon_animal_1,
LocationName.wild_canyon_animal_2,
LocationName.wild_canyon_animal_3,
LocationName.wild_canyon_animal_4,
LocationName.wild_canyon_animal_5,
LocationName.wild_canyon_animal_6,
LocationName.wild_canyon_animal_7,
LocationName.wild_canyon_animal_8,
LocationName.wild_canyon_animal_9,
LocationName.wild_canyon_animal_10,
LocationName.wild_canyon_upgrade,
]
wild_canyon_region = create_region(world, player, active_locations, LocationName.wild_canyon_region,
@@ -448,6 +622,17 @@ def create_regions(world, player: int, active_locations):
LocationName.pumpkin_hill_omo_9,
LocationName.pumpkin_hill_omo_10,
LocationName.pumpkin_hill_omo_11,
LocationName.pumpkin_hill_animal_1,
LocationName.pumpkin_hill_animal_2,
LocationName.pumpkin_hill_animal_3,
LocationName.pumpkin_hill_animal_4,
LocationName.pumpkin_hill_animal_5,
LocationName.pumpkin_hill_animal_6,
LocationName.pumpkin_hill_animal_7,
LocationName.pumpkin_hill_animal_8,
LocationName.pumpkin_hill_animal_9,
LocationName.pumpkin_hill_animal_10,
LocationName.pumpkin_hill_animal_11,
LocationName.pumpkin_hill_upgrade,
]
pumpkin_hill_region = create_region(world, player, active_locations, LocationName.pumpkin_hill_region,
@@ -473,6 +658,16 @@ def create_regions(world, player: int, active_locations):
LocationName.aquatic_mine_omo_6,
LocationName.aquatic_mine_omo_7,
LocationName.aquatic_mine_beetle,
LocationName.aquatic_mine_animal_1,
LocationName.aquatic_mine_animal_2,
LocationName.aquatic_mine_animal_3,
LocationName.aquatic_mine_animal_4,
LocationName.aquatic_mine_animal_5,
LocationName.aquatic_mine_animal_6,
LocationName.aquatic_mine_animal_7,
LocationName.aquatic_mine_animal_8,
LocationName.aquatic_mine_animal_9,
LocationName.aquatic_mine_animal_10,
LocationName.aquatic_mine_upgrade,
]
aquatic_mine_region = create_region(world, player, active_locations, LocationName.aquatic_mine_region,
@@ -502,6 +697,16 @@ def create_regions(world, player: int, active_locations):
LocationName.death_chamber_omo_8,
LocationName.death_chamber_omo_9,
LocationName.death_chamber_beetle,
LocationName.death_chamber_animal_1,
LocationName.death_chamber_animal_2,
LocationName.death_chamber_animal_3,
LocationName.death_chamber_animal_4,
LocationName.death_chamber_animal_5,
LocationName.death_chamber_animal_6,
LocationName.death_chamber_animal_7,
LocationName.death_chamber_animal_8,
LocationName.death_chamber_animal_9,
LocationName.death_chamber_animal_10,
LocationName.death_chamber_upgrade,
]
death_chamber_region = create_region(world, player, active_locations, LocationName.death_chamber_region,
@@ -523,6 +728,17 @@ def create_regions(world, player: int, active_locations):
LocationName.meteor_herd_omo_2,
LocationName.meteor_herd_omo_3,
LocationName.meteor_herd_beetle,
LocationName.meteor_herd_animal_1,
LocationName.meteor_herd_animal_2,
LocationName.meteor_herd_animal_3,
LocationName.meteor_herd_animal_4,
LocationName.meteor_herd_animal_5,
LocationName.meteor_herd_animal_6,
LocationName.meteor_herd_animal_7,
LocationName.meteor_herd_animal_8,
LocationName.meteor_herd_animal_9,
LocationName.meteor_herd_animal_10,
LocationName.meteor_herd_animal_11,
LocationName.meteor_herd_upgrade,
]
meteor_herd_region = create_region(world, player, active_locations, LocationName.meteor_herd_region,
@@ -552,6 +768,26 @@ def create_regions(world, player: int, active_locations):
LocationName.radical_highway_omo_7,
LocationName.radical_highway_omo_8,
LocationName.radical_highway_beetle,
LocationName.radical_highway_animal_1,
LocationName.radical_highway_animal_2,
LocationName.radical_highway_animal_3,
LocationName.radical_highway_animal_4,
LocationName.radical_highway_animal_5,
LocationName.radical_highway_animal_6,
LocationName.radical_highway_animal_7,
LocationName.radical_highway_animal_8,
LocationName.radical_highway_animal_9,
LocationName.radical_highway_animal_10,
LocationName.radical_highway_animal_11,
LocationName.radical_highway_animal_12,
LocationName.radical_highway_animal_13,
LocationName.radical_highway_animal_14,
LocationName.radical_highway_animal_15,
LocationName.radical_highway_animal_16,
LocationName.radical_highway_animal_17,
LocationName.radical_highway_animal_18,
LocationName.radical_highway_animal_19,
LocationName.radical_highway_animal_20,
LocationName.radical_highway_upgrade,
]
radical_highway_region = create_region(world, player, active_locations, LocationName.radical_highway_region,
@@ -579,6 +815,22 @@ def create_regions(world, player: int, active_locations):
LocationName.white_jungle_omo_4,
LocationName.white_jungle_omo_5,
LocationName.white_jungle_beetle,
LocationName.white_jungle_animal_1,
LocationName.white_jungle_animal_2,
LocationName.white_jungle_animal_3,
LocationName.white_jungle_animal_4,
LocationName.white_jungle_animal_5,
LocationName.white_jungle_animal_6,
LocationName.white_jungle_animal_7,
LocationName.white_jungle_animal_8,
LocationName.white_jungle_animal_9,
LocationName.white_jungle_animal_10,
LocationName.white_jungle_animal_11,
LocationName.white_jungle_animal_12,
LocationName.white_jungle_animal_13,
LocationName.white_jungle_animal_14,
LocationName.white_jungle_animal_15,
LocationName.white_jungle_animal_16,
LocationName.white_jungle_upgrade,
]
white_jungle_region = create_region(world, player, active_locations, LocationName.white_jungle_region,
@@ -600,6 +852,26 @@ def create_regions(world, player: int, active_locations):
LocationName.sky_rail_pipe_5,
LocationName.sky_rail_pipe_6,
LocationName.sky_rail_beetle,
LocationName.sky_rail_animal_1,
LocationName.sky_rail_animal_2,
LocationName.sky_rail_animal_3,
LocationName.sky_rail_animal_4,
LocationName.sky_rail_animal_5,
LocationName.sky_rail_animal_6,
LocationName.sky_rail_animal_7,
LocationName.sky_rail_animal_8,
LocationName.sky_rail_animal_9,
LocationName.sky_rail_animal_10,
LocationName.sky_rail_animal_11,
LocationName.sky_rail_animal_12,
LocationName.sky_rail_animal_13,
LocationName.sky_rail_animal_14,
LocationName.sky_rail_animal_15,
LocationName.sky_rail_animal_16,
LocationName.sky_rail_animal_17,
LocationName.sky_rail_animal_18,
LocationName.sky_rail_animal_19,
LocationName.sky_rail_animal_20,
LocationName.sky_rail_upgrade,
]
sky_rail_region = create_region(world, player, active_locations, LocationName.sky_rail_region,
@@ -619,6 +891,23 @@ def create_regions(world, player: int, active_locations):
LocationName.final_chase_pipe_3,
LocationName.final_chase_omo_1,
LocationName.final_chase_beetle,
LocationName.final_chase_animal_1,
LocationName.final_chase_animal_2,
LocationName.final_chase_animal_3,
LocationName.final_chase_animal_4,
LocationName.final_chase_animal_5,
LocationName.final_chase_animal_6,
LocationName.final_chase_animal_7,
LocationName.final_chase_animal_8,
LocationName.final_chase_animal_9,
LocationName.final_chase_animal_10,
LocationName.final_chase_animal_11,
LocationName.final_chase_animal_12,
LocationName.final_chase_animal_13,
LocationName.final_chase_animal_14,
LocationName.final_chase_animal_15,
LocationName.final_chase_animal_16,
LocationName.final_chase_animal_17,
LocationName.final_chase_upgrade,
]
final_chase_region = create_region(world, player, active_locations, LocationName.final_chase_region,
@@ -645,6 +934,21 @@ def create_regions(world, player: int, active_locations):
LocationName.iron_gate_omo_5,
LocationName.iron_gate_omo_6,
LocationName.iron_gate_beetle,
LocationName.iron_gate_animal_1,
LocationName.iron_gate_animal_2,
LocationName.iron_gate_animal_3,
LocationName.iron_gate_animal_4,
LocationName.iron_gate_animal_5,
LocationName.iron_gate_animal_6,
LocationName.iron_gate_animal_7,
LocationName.iron_gate_animal_8,
LocationName.iron_gate_animal_9,
LocationName.iron_gate_animal_10,
LocationName.iron_gate_animal_11,
LocationName.iron_gate_animal_12,
LocationName.iron_gate_animal_13,
LocationName.iron_gate_animal_14,
LocationName.iron_gate_animal_15,
LocationName.iron_gate_upgrade,
]
iron_gate_region = create_region(world, player, active_locations, LocationName.iron_gate_region,
@@ -667,6 +971,21 @@ def create_regions(world, player: int, active_locations):
LocationName.sand_ocean_omo_1,
LocationName.sand_ocean_omo_2,
LocationName.sand_ocean_beetle,
LocationName.sand_ocean_animal_1,
LocationName.sand_ocean_animal_2,
LocationName.sand_ocean_animal_3,
LocationName.sand_ocean_animal_4,
LocationName.sand_ocean_animal_5,
LocationName.sand_ocean_animal_6,
LocationName.sand_ocean_animal_7,
LocationName.sand_ocean_animal_8,
LocationName.sand_ocean_animal_9,
LocationName.sand_ocean_animal_10,
LocationName.sand_ocean_animal_11,
LocationName.sand_ocean_animal_12,
LocationName.sand_ocean_animal_13,
LocationName.sand_ocean_animal_14,
LocationName.sand_ocean_animal_15,
LocationName.sand_ocean_upgrade,
]
sand_ocean_region = create_region(world, player, active_locations, LocationName.sand_ocean_region,
@@ -693,6 +1012,20 @@ def create_regions(world, player: int, active_locations):
LocationName.lost_colony_omo_7,
LocationName.lost_colony_omo_8,
LocationName.lost_colony_beetle,
LocationName.lost_colony_animal_1,
LocationName.lost_colony_animal_2,
LocationName.lost_colony_animal_3,
LocationName.lost_colony_animal_4,
LocationName.lost_colony_animal_5,
LocationName.lost_colony_animal_6,
LocationName.lost_colony_animal_7,
LocationName.lost_colony_animal_8,
LocationName.lost_colony_animal_9,
LocationName.lost_colony_animal_10,
LocationName.lost_colony_animal_11,
LocationName.lost_colony_animal_12,
LocationName.lost_colony_animal_13,
LocationName.lost_colony_animal_14,
LocationName.lost_colony_upgrade,
]
lost_colony_region = create_region(world, player, active_locations, LocationName.lost_colony_region,
@@ -715,6 +1048,21 @@ def create_regions(world, player: int, active_locations):
LocationName.weapons_bed_omo_1,
LocationName.weapons_bed_omo_2,
LocationName.weapons_bed_omo_3,
LocationName.weapons_bed_animal_1,
LocationName.weapons_bed_animal_2,
LocationName.weapons_bed_animal_3,
LocationName.weapons_bed_animal_4,
LocationName.weapons_bed_animal_5,
LocationName.weapons_bed_animal_6,
LocationName.weapons_bed_animal_7,
LocationName.weapons_bed_animal_8,
LocationName.weapons_bed_animal_9,
LocationName.weapons_bed_animal_10,
LocationName.weapons_bed_animal_11,
LocationName.weapons_bed_animal_12,
LocationName.weapons_bed_animal_13,
LocationName.weapons_bed_animal_14,
LocationName.weapons_bed_animal_15,
LocationName.weapons_bed_upgrade,
]
weapons_bed_region = create_region(world, player, active_locations, LocationName.weapons_bed_region,
@@ -736,6 +1084,21 @@ def create_regions(world, player: int, active_locations):
LocationName.cosmic_wall_pipe_5,
LocationName.cosmic_wall_omo_1,
LocationName.cosmic_wall_beetle,
LocationName.cosmic_wall_animal_1,
LocationName.cosmic_wall_animal_2,
LocationName.cosmic_wall_animal_3,
LocationName.cosmic_wall_animal_4,
LocationName.cosmic_wall_animal_5,
LocationName.cosmic_wall_animal_6,
LocationName.cosmic_wall_animal_7,
LocationName.cosmic_wall_animal_8,
LocationName.cosmic_wall_animal_9,
LocationName.cosmic_wall_animal_10,
LocationName.cosmic_wall_animal_11,
LocationName.cosmic_wall_animal_12,
LocationName.cosmic_wall_animal_13,
LocationName.cosmic_wall_animal_14,
LocationName.cosmic_wall_animal_15,
LocationName.cosmic_wall_upgrade,
]
cosmic_wall_region = create_region(world, player, active_locations, LocationName.cosmic_wall_region,
@@ -765,6 +1128,16 @@ def create_regions(world, player: int, active_locations):
LocationName.dry_lagoon_omo_11,
LocationName.dry_lagoon_omo_12,
LocationName.dry_lagoon_beetle,
LocationName.dry_lagoon_animal_1,
LocationName.dry_lagoon_animal_2,
LocationName.dry_lagoon_animal_3,
LocationName.dry_lagoon_animal_4,
LocationName.dry_lagoon_animal_5,
LocationName.dry_lagoon_animal_6,
LocationName.dry_lagoon_animal_7,
LocationName.dry_lagoon_animal_8,
LocationName.dry_lagoon_animal_9,
LocationName.dry_lagoon_animal_10,
LocationName.dry_lagoon_upgrade,
]
dry_lagoon_region = create_region(world, player, active_locations, LocationName.dry_lagoon_region,
@@ -791,6 +1164,16 @@ def create_regions(world, player: int, active_locations):
LocationName.egg_quarters_omo_6,
LocationName.egg_quarters_omo_7,
LocationName.egg_quarters_beetle,
LocationName.egg_quarters_animal_1,
LocationName.egg_quarters_animal_2,
LocationName.egg_quarters_animal_3,
LocationName.egg_quarters_animal_4,
LocationName.egg_quarters_animal_5,
LocationName.egg_quarters_animal_6,
LocationName.egg_quarters_animal_7,
LocationName.egg_quarters_animal_8,
LocationName.egg_quarters_animal_9,
LocationName.egg_quarters_animal_10,
LocationName.egg_quarters_upgrade,
]
egg_quarters_region = create_region(world, player, active_locations, LocationName.egg_quarters_region,
@@ -820,6 +1203,14 @@ def create_regions(world, player: int, active_locations):
LocationName.security_hall_omo_11,
LocationName.security_hall_omo_12,
LocationName.security_hall_beetle,
LocationName.security_hall_animal_1,
LocationName.security_hall_animal_2,
LocationName.security_hall_animal_3,
LocationName.security_hall_animal_4,
LocationName.security_hall_animal_5,
LocationName.security_hall_animal_6,
LocationName.security_hall_animal_7,
LocationName.security_hall_animal_8,
LocationName.security_hall_upgrade,
]
security_hall_region = create_region(world, player, active_locations, LocationName.security_hall_region,
@@ -854,6 +1245,16 @@ def create_regions(world, player: int, active_locations):
LocationName.mad_space_omo_4,
LocationName.mad_space_omo_5,
LocationName.mad_space_beetle,
LocationName.mad_space_animal_1,
LocationName.mad_space_animal_2,
LocationName.mad_space_animal_3,
LocationName.mad_space_animal_4,
LocationName.mad_space_animal_5,
LocationName.mad_space_animal_6,
LocationName.mad_space_animal_7,
LocationName.mad_space_animal_8,
LocationName.mad_space_animal_9,
LocationName.mad_space_animal_10,
LocationName.mad_space_upgrade,
]
mad_space_region = create_region(world, player, active_locations, LocationName.mad_space_region,
@@ -883,6 +1284,25 @@ def create_regions(world, player: int, active_locations):
LocationName.cannon_core_omo_7,
LocationName.cannon_core_omo_8,
LocationName.cannon_core_omo_9,
LocationName.cannon_core_animal_1,
LocationName.cannon_core_animal_2,
LocationName.cannon_core_animal_3,
LocationName.cannon_core_animal_4,
LocationName.cannon_core_animal_5,
LocationName.cannon_core_animal_6,
LocationName.cannon_core_animal_7,
LocationName.cannon_core_animal_8,
LocationName.cannon_core_animal_9,
LocationName.cannon_core_animal_10,
LocationName.cannon_core_animal_11,
LocationName.cannon_core_animal_12,
LocationName.cannon_core_animal_13,
LocationName.cannon_core_animal_14,
LocationName.cannon_core_animal_15,
LocationName.cannon_core_animal_16,
LocationName.cannon_core_animal_17,
LocationName.cannon_core_animal_18,
LocationName.cannon_core_animal_19,
LocationName.cannon_core_beetle,
]
cannon_core_region = create_region(world, player, active_locations, LocationName.cannon_core_region,
@@ -1027,7 +1447,7 @@ def create_regions(world, player: int, active_locations):
grand_prix_region_locations)
world.regions += [grand_prix_region]
if world.goal[player] == 0 or world.goal[player] == 2:
if world.goal[player] in [0, 2, 4, 5, 6]:
biolizard_region_locations = [
LocationName.finalhazard,
]
@@ -1035,15 +1455,25 @@ def create_regions(world, player: int, active_locations):
biolizard_region_locations)
world.regions += [biolizard_region]
if world.goal[player] == 1 or world.goal[player] == 2:
if world.goal[player] in [1, 2]:
green_hill_region_locations = [
LocationName.green_hill,
LocationName.green_hill_chao_1,
#LocationName.green_hill_animal_1,
]
green_hill_region = create_region(world, player, active_locations, LocationName.green_hill_region,
green_hill_region_locations)
world.regions += [green_hill_region]
if world.goal[player] in [4, 5, 6]:
for i in range(16):
boss_region_locations = [
"Boss Rush - " + str(i + 1),
]
boss_region = create_region(world, player, active_locations, "Boss Rush " + str(i + 1),
boss_region_locations)
world.regions += [boss_region]
# Set up the regions correctly.
world.regions += [
@@ -1089,7 +1519,7 @@ def create_regions(world, player: int, active_locations):
]
def connect_regions(world, player, gates: typing.List[LevelGate], cannon_core_emblems, gate_bosses, first_cannons_core_mission: str, final_cannons_core_mission: str):
def connect_regions(world, player, gates: typing.List[LevelGate], cannon_core_emblems, gate_bosses, boss_rush_bosses, first_cannons_core_mission: str, final_cannons_core_mission: str):
names: typing.Dict[str, int] = {}
connect(world, player, names, 'Menu', LocationName.gate_0_region)
@@ -1104,7 +1534,7 @@ def connect_regions(world, player, gates: typing.List[LevelGate], cannon_core_em
connect(world, player, names, LocationName.cannon_core_region, LocationName.biolizard_region,
lambda state: (state.can_reach(required_mission_name, "Location", player)))
elif world.goal[player] == 1 or world.goal[player] == 2:
elif world.goal[player] in [1, 2]:
connect(world, player, names, 'Menu', LocationName.green_hill_region,
lambda state: (state.has(ItemName.white_emerald, player) and
state.has(ItemName.red_emerald, player) and
@@ -1117,6 +1547,35 @@ def connect_regions(world, player, gates: typing.List[LevelGate], cannon_core_em
connect(world, player, names, LocationName.green_hill_region, LocationName.biolizard_region)
elif world.goal[player] == 3:
connect(world, player, names, LocationName.kart_race_expert_region, LocationName.grand_prix_region)
elif world.goal[player] in [4, 5, 6]:
if world.goal[player] == 4:
connect(world, player, names, LocationName.gate_0_region, LocationName.boss_rush_1_region)
elif world.goal[player] == 5:
required_mission_name = first_cannons_core_mission
if world.required_cannons_core_missions[player].value == 1:
required_mission_name = final_cannons_core_mission
connect(world, player, names, LocationName.cannon_core_region, LocationName.boss_rush_1_region,
lambda state: (state.can_reach(required_mission_name, "Location", player)))
elif world.goal[player] == 6:
connect(world, player, names, LocationName.gate_0_region, LocationName.boss_rush_1_region,
lambda state: (state.has(ItemName.white_emerald, player) and
state.has(ItemName.red_emerald, player) and
state.has(ItemName.cyan_emerald, player) and
state.has(ItemName.purple_emerald, player) and
state.has(ItemName.green_emerald, player) and
state.has(ItemName.yellow_emerald, player) and
state.has(ItemName.blue_emerald, player)))
for i in range(15):
if boss_rush_bosses[i] == all_gate_bosses_table[king_boom_boo]:
connect(world, player, names, "Boss Rush " + str(i + 1), "Boss Rush " + str(i + 2),
lambda state: (state.has(ItemName.knuckles_shovel_claws, player)))
else:
connect(world, player, names, "Boss Rush " + str(i + 1), "Boss Rush " + str(i + 2))
connect(world, player, names, LocationName.boss_rush_16_region, LocationName.biolizard_region)
for i in range(len(gates[0].gate_levels)):
connect(world, player, names, LocationName.gate_0_region, shuffleable_regions[gates[0].gate_levels[i]])