Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make Options snake_case #2

Merged
merged 1 commit into from
May 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions worlds/sa2b/Locations.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,16 +255,16 @@ class SA2BLocation(Location):
def setup_locations(world, player: int):
location_table = {**first_mission_location_table}

if world.IncludeMissions[player].value >= 2:
if world.include_missions[player].value >= 2:
location_table.update({**second_mission_location_table})

if world.IncludeMissions[player].value >= 3:
if world.include_missions[player].value >= 3:
location_table.update({**third_mission_location_table})

if world.IncludeMissions[player].value >= 4:
if world.include_missions[player].value >= 4:
location_table.update({**fourth_mission_location_table})

if world.IncludeMissions[player].value >= 5:
if world.include_missions[player].value >= 5:
location_table.update({**fifth_mission_location_table})

location_table.update({**upgrade_location_table})
Expand Down
12 changes: 6 additions & 6 deletions worlds/sa2b/Options.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ class MusicShuffle(Choice):


sa2b_options: typing.Dict[str, type(Option)] = {
"DeathLink": DeathLink,
"MusicShuffle": MusicShuffle,
"IncludeMissions": IncludeMissions,
"EmblemPercentageForCannonsCore": EmblemPercentageForCannonsCore,
"NumberOfLevelGates": NumberOfLevelGates,
"LevelGateDistribution": LevelGateDistribution,
"death_link": DeathLink,
"music_shuffle": MusicShuffle,
"include_missions": IncludeMissions,
"emblem_percentage_for_cannons_core": EmblemPercentageForCannonsCore,
"number_of_level_gates": NumberOfLevelGates,
"level_gate_distribution": LevelGateDistribution,
}
17 changes: 9 additions & 8 deletions worlds/sa2b/Rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@ def set_mission_progress_rules(world: MultiWorld, player: int):
sorted(fourth_mission_location_table.items()),
sorted(fifth_mission_location_table.items())):

if world.IncludeMissions[player].value >= 2:
if world.include_missions[player].value >= 2:
set_rule(world.get_location(k2, player), lambda state, k1=k1: state.can_reach(k1, "Location", player))

if world.IncludeMissions[player].value >= 3:
if world.include_missions[player].value >= 3:
set_rule(world.get_location(k3, player), lambda state, k2=k2: state.can_reach(k2, "Location", player))

if world.IncludeMissions[player].value >= 4:
if world.include_missions[player].value >= 4:
set_rule(world.get_location(k4, player), lambda state, k3=k3: state.can_reach(k3, "Location", player))

if world.IncludeMissions[player].value >= 5:
if world.include_missions[player].value >= 5:
set_rule(world.get_location(k5, player), lambda state, k4=k4: state.can_reach(k4, "Location", player))


Expand Down Expand Up @@ -83,7 +83,7 @@ def set_mission_upgrade_rules(world: MultiWorld, player: int):
state.has(ItemName.sonic_bounce_bracelet, player))

# Mission 2 Upgrade Requirements
if world.IncludeMissions[player].value >= 2:
if world.include_missions[player].value >= 2:
add_rule(world.get_location(LocationName.metal_harbor_2, player),
lambda state: state.has(ItemName.sonic_light_shoes, player))
add_rule(world.get_location(LocationName.mission_street_2, player),
Expand Down Expand Up @@ -116,7 +116,7 @@ def set_mission_upgrade_rules(world: MultiWorld, player: int):
state.has(ItemName.eggman_jet_engine, player))

# Mission 3 Upgrade Requirements
if world.IncludeMissions[player].value >= 3:
if world.include_missions[player].value >= 3:
add_rule(world.get_location(LocationName.city_escape_3, player),
lambda state: state.has(ItemName.sonic_mystic_melody, player))
add_rule(world.get_location(LocationName.wild_canyon_3, player),
Expand Down Expand Up @@ -220,7 +220,7 @@ def set_mission_upgrade_rules(world: MultiWorld, player: int):
state.has(ItemName.sonic_light_shoes, player))

# Mission 4 Upgrade Requirements
if world.IncludeMissions[player].value >= 4:
if world.include_missions[player].value >= 4:
add_rule(world.get_location(LocationName.metal_harbor_4, player),
lambda state: state.has(ItemName.sonic_light_shoes, player))
add_rule(world.get_location(LocationName.pumpkin_hill_4, player),
Expand Down Expand Up @@ -274,7 +274,7 @@ def set_mission_upgrade_rules(world: MultiWorld, player: int):
state.has(ItemName.sonic_bounce_bracelet, player))

# Mission 5 Upgrade Requirements
if world.IncludeMissions[player].value >= 5:
if world.include_missions[player].value >= 5:
add_rule(world.get_location(LocationName.city_escape_5, player),
lambda state: state.has(ItemName.sonic_flame_ring, player))
add_rule(world.get_location(LocationName.wild_canyon_5, player),
Expand Down Expand Up @@ -341,6 +341,7 @@ def set_mission_upgrade_rules(world: MultiWorld, player: int):
add_rule(world.get_location(LocationName.cannon_core_5, player),
lambda state: state.has(ItemName.tails_booster, player) and
state.has(ItemName.eggman_jet_engine, player) and
state.has(ItemName.knuckles_mystic_melody, player) and
state.has(ItemName.knuckles_hammer_gloves, player) and
state.has(ItemName.knuckles_air_necklace, player) and
state.has(ItemName.sonic_bounce_bracelet, player))
Expand Down
33 changes: 15 additions & 18 deletions worlds/sa2b/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,12 @@ def _get_slot_data(self):
return {
"ModVersion": 100,
"MusicMap": self.music_map,
"MusicShuffle": self.world.MusicShuffle[self.player],
"DeathLink": self.world.DeathLink[self.player],
"IncludeMissions": self.world.IncludeMissions[self.player].value,
"EmblemPercentageForCannonsCore": self.world.EmblemPercentageForCannonsCore[self.player].value,
"NumberOfLevelGates": self.world.NumberOfLevelGates[self.player].value,
"LevelGateDistribution": self.world.LevelGateDistribution[self.player],
"MusicShuffle": self.world.music_shuffle[self.player].value,
"DeathLink": self.world.death_link[self.player].value,
"IncludeMissions": self.world.include_missions[self.player].value,
"EmblemPercentageForCannonsCore": self.world.emblem_percentage_for_cannons_core[self.player].value,
"NumberOfLevelGates": self.world.number_of_level_gates[self.player].value,
"LevelGateDistribution": self.world.level_gate_distribution[self.player].value,
"EmblemsForCannonsCore": self.emblems_for_cannons_core,
"RegionEmblemMap": self.region_emblem_map,
}
Expand All @@ -82,15 +82,12 @@ def _create_items(self, name: str):
def fill_slot_data(self) -> dict:
slot_data = self._get_slot_data()
slot_data["MusicMap"] = self.music_map
for option_name in sa2b_options:
option = getattr(self.world, option_name)[self.player]
slot_data[option_name] = option.value

return slot_data

def get_levels_per_gate(self) -> list:
levels_per_gate = list()
max_gate_index = self.world.NumberOfLevelGates[self.player]
max_gate_index = self.world.number_of_level_gates[self.player]
average_level_count = 30 / (max_gate_index + 1)
levels_added = 0

Expand All @@ -103,8 +100,8 @@ def get_levels_per_gate(self) -> list:
levels_added += 1
additional_count_iterator += 1 if additional_count_iterator < max_gate_index else -max_gate_index

if self.world.LevelGateDistribution[self.player] == 0 or self.world.LevelGateDistribution[self.player] == 2:
early_distribution = self.world.LevelGateDistribution[self.player] == 0
if self.world.level_gate_distribution[self.player] == 0 or self.world.level_gate_distribution[self.player] == 2:
early_distribution = self.world.level_gate_distribution[self.player] == 0
levels_to_distribute = 5
gate_index_offset = 0
while levels_to_distribute > 0:
Expand Down Expand Up @@ -133,7 +130,7 @@ def generate_basic(self):
total_required_locations = 31

# Mission Locations
total_required_locations *= self.world.IncludeMissions[self.player].value
total_required_locations *= self.world.include_missions[self.player].value

# Upgrades
total_required_locations += 28
Expand All @@ -147,7 +144,7 @@ def generate_basic(self):
# itempool += [self.create_item(ItemName.emblem)] * total_emblem_count

self.emblems_for_cannons_core = math.floor(
total_emblem_count * (self.world.EmblemPercentageForCannonsCore[self.player].value / 100.0))
total_emblem_count * (self.world.emblem_percentage_for_cannons_core[self.player].value / 100.0))

shuffled_region_list = list(range(30))
emblem_requirement_list = list()
Expand All @@ -168,8 +165,8 @@ def generate_basic(self):
total_levels_added += 1
if levels_added_to_gate >= levels_per_gate[current_gate]:
current_gate += 1
if current_gate > self.world.NumberOfLevelGates[self.player].value:
current_gate = self.world.NumberOfLevelGates[self.player].value
if current_gate > self.world.number_of_level_gates[self.player].value:
current_gate = self.world.number_of_level_gates[self.player].value
else:
current_gate_emblems = max(
math.floor(total_emblem_count * math.pow(total_levels_added / 30.0, 2.0)), current_gate)
Expand All @@ -186,12 +183,12 @@ def generate_basic(self):

self.world.itempool += itempool

if self.world.MusicShuffle[self.player] == "levels":
if self.world.music_shuffle[self.player] == "levels":
musiclist_o = list(range(0, 47))
musiclist_s = musiclist_o.copy()
self.world.random.shuffle(musiclist_s)
self.music_map = dict(zip(musiclist_o, musiclist_s))
elif self.world.MusicShuffle[self.player] == "full":
elif self.world.music_shuffle[self.player] == "full":
musiclist_o = list(range(0, 78))
musiclist_s = musiclist_o.copy()
self.world.random.shuffle(musiclist_s)
Expand Down