Skip to content

Commit 1064f83

Browse files
added Boss location group tag to ibek bell check and Sky Arena checks that require Arachlea; also made it so that any location with this tag is removed from the location pool if Kill Bosses is turned off
1 parent 874e597 commit 1064f83

File tree

3 files changed

+35
-17
lines changed

3 files changed

+35
-17
lines changed

worlds/crystal_project/__init__.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from .constants.display_regions import *
99
from .constants.teleport_stones import *
1010
from .constants.item_groups import *
11+
from .constants.location_groups import *
1112
from .constants.region_passes import *
1213
from .home_point_locations import get_home_points
1314
from .items import item_table, optional_scholar_abilities, filler_items, \
@@ -172,6 +173,16 @@ def create_regions(self) -> None:
172173
if self.options.kill_bosses_mode.value == self.options.kill_bosses_mode.option_true:
173174
bosses = get_boss_locations(self.player, self.options)
174175
locations.extend(bosses)
176+
else:
177+
#Can't just do "for location in locations" because when a location is removed, then the number of things inside the list changes, and the code will skip the next location
178+
i = 0
179+
while i < len(locations):
180+
location = locations[i]
181+
if location.tags is not None:
182+
if BOSS_LOCATION_GROUP in location.tags:
183+
locations.remove(location)
184+
i -= 1
185+
i += 1
175186

176187
if self.options.shopsanity.value != self.options.shopsanity.option_disabled:
177188
shops = get_shop_locations(self.player, self.options)
Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1-
SUMMON_LOCATION_GROUP = "Summon"
2-
PENGUIN_LOCATION_GROUP = "Penguin"
3-
CRAB_LOCATION_GROUP = "Undersea Crab"
1+
CRYSTAL_LOCATION_GROUP = "Crystals"
2+
HOME_POINT_LOCATION_GROUP = "Home Points"
3+
REGION_COMPLETION_LOCATION_GROUP = "Region Completions"
4+
SHOP_LOCATION_GROUP = "Shops"
5+
#Fighting
6+
BOSS_LOCATION_GROUP = "Bosses"
7+
SUMMON_LOCATION_GROUP = "Summons"
8+
#Collectibles
9+
PENGUIN_LOCATION_GROUP = "Penguins"
10+
CRAB_LOCATION_GROUP = "Undersea Crabs"

worlds/crystal_project/locations.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ def get_treasure_and_npc_locations(player: int, options: CrystalProjectOptions |
709709
LocationData(TALL_POSSESSOR_ROCK_AP_REGION, ANCIENT_RESERVOIR_DISPLAY_NAME + " Chest - Celebrate your new hops", 2517 + treasure_index_offset), # Fenix Juice Pouch chest
710710

711711
#NPCs
712-
LocationData(IBEK_CAVE_AP_REGION, ANCIENT_RESERVOIR_DISPLAY_NAME + " NPC - Goat victory Ibek Bell", 1676 + npc_index_offset), # Z30_PostBossEvent;
712+
LocationData(IBEK_CAVE_AP_REGION, ANCIENT_RESERVOIR_DISPLAY_NAME + " NPC - Goat victory Ibek Bell", 1676 + npc_index_offset, tags=[BOSS_LOCATION_GROUP]), # Z30_PostBossEvent;
713713
#Trek Spiraling Up Out of Ibek's Cave
714714
LocationData(IBEK_CAVE_SPIRALING_TREK_OUT_AP_REGION, ANCIENT_RESERVOIR_DISPLAY_NAME + " NPC - Silver in the goat digs", 2696 + npc_index_offset), # Dust
715715

@@ -882,14 +882,14 @@ def get_treasure_and_npc_locations(player: int, options: CrystalProjectOptions |
882882
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - 8 Sky Arena Wins room 3", 2800 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, EIGHTH_SKY_ARENA_FIGHT_LEVEL)), # Wizards Wall chest
883883
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " NPC - Gold in 8 Sky Arena Wins room 1", 2830 + npc_index_offset, lambda state: logic.is_area_in_level_range(state, EIGHTH_SKY_ARENA_FIGHT_LEVEL)), # Ingot
884884
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " NPC - Gold in 8 Sky Arena Wins room 2", 2831 + npc_index_offset, lambda state: logic.is_area_in_level_range(state, EIGHTH_SKY_ARENA_FIGHT_LEVEL)), # Ore
885-
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - 10 Sky Arena Wins room 1", 2756 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL)), # (753, 134, -263) Yasha chest
886-
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - 10 Sky Arena Wins room 2", 2928 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL)), # (754, 134, -264) Muramasa chest
887-
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - 10 Sky Arena Wins room 3", 2929 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL)), # (755, 134, -263) Shadow Gi chest
888-
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " NPC - 10 Sky Arena Wins room Diamond 1", 2833 + npc_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL)), # (752, 133, -262) Dust
889-
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " NPC - 10 Sky Arena Wins room Diamond 2", 2811 + npc_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL)), # (756, 133, -261) Ingot
890-
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - Fall through floorboards of 10 Sky Arena Wins room 1", 3763 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL)), # (754, 130, -264) Zether chest
891-
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - Fall through floorboards of 10 Sky Arena Wins room 2", 3764 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL)), # (755, 130, -263) Z-Potion chest
892-
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " NPC - Diamond through a hole in the 10 Sky Arena Wins room floor", 2832 + npc_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL)), #(753, 130, -264) Ore
885+
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - 10 Sky Arena Wins room 1", 2756 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL), tags=[BOSS_LOCATION_GROUP]), # (753, 134, -263) Yasha chest
886+
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - 10 Sky Arena Wins room 2", 2928 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL), tags=[BOSS_LOCATION_GROUP]), # (754, 134, -264) Muramasa chest
887+
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - 10 Sky Arena Wins room 3", 2929 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL), tags=[BOSS_LOCATION_GROUP]), # (755, 134, -263) Shadow Gi chest
888+
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " NPC - 10 Sky Arena Wins room Diamond 1", 2833 + npc_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL), tags=[BOSS_LOCATION_GROUP]), # (752, 133, -262) Dust
889+
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " NPC - 10 Sky Arena Wins room Diamond 2", 2811 + npc_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL), tags=[BOSS_LOCATION_GROUP]), # (756, 133, -261) Ingot
890+
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - Fall through floorboards of 10 Sky Arena Wins room 1", 3763 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL), tags=[BOSS_LOCATION_GROUP]), # (754, 130, -264) Zether chest
891+
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " Chest - Fall through floorboards of 10 Sky Arena Wins room 2", 3764 + treasure_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL), tags=[BOSS_LOCATION_GROUP]), # (755, 130, -263) Z-Potion chest
892+
LocationData(SKY_ARENA_AP_REGION, SHOUDU_PROVINCE_DISPLAY_NAME + " NPC - Diamond through a hole in the 10 Sky Arena Wins room floor", 2832 + npc_index_offset, lambda state: logic.is_area_in_level_range(state, ARACHLEA_FIGHT_LEVEL), tags=[BOSS_LOCATION_GROUP]), #(753, 130, -264) Ore
893893

894894
#The Undercity
895895
# can get without mounts from Shoudu
@@ -2038,23 +2038,23 @@ def get_location_names_per_category() -> Dict[str, Set[str]]:
20382038
process_location_tags(categories, location)
20392039

20402040
for location in get_crystal_locations(-1, None):
2041-
categories.setdefault("Crystals", set()).add(location.name)
2041+
categories.setdefault(CRYSTAL_LOCATION_GROUP, set()).add(location.name)
20422042
process_location_tags(categories, location)
20432043

20442044
for location in get_shop_locations(-1, None):
2045-
categories.setdefault("Shops", set()).add(location.name)
2045+
categories.setdefault(SHOP_LOCATION_GROUP, set()).add(location.name)
20462046
process_location_tags(categories, location)
20472047

20482048
for location in get_boss_locations(-1, None):
2049-
categories.setdefault("Bosses", set()).add(location.name)
2049+
categories.setdefault(BOSS_LOCATION_GROUP, set()).add(location.name)
20502050
process_location_tags(categories, location)
20512051

20522052
for location in get_home_points():
2053-
categories.setdefault("Home Points", set()).add(location.name)
2053+
categories.setdefault(HOME_POINT_LOCATION_GROUP, set()).add(location.name)
20542054
process_location_tags(categories, location)
20552055

20562056
for location in get_region_completion_locations():
2057-
categories.setdefault("Region Completions", set()).add(location.name)
2057+
categories.setdefault(REGION_COMPLETION_LOCATION_GROUP, set()).add(location.name)
20582058
process_location_tags(categories, location)
20592059

20602060
return categories

0 commit comments

Comments
 (0)