Muse Dash: Update code to use some newer API (#1980)
This commit is contained in:
parent
d14131c3be
commit
09f4b7ec38
|
@ -119,13 +119,13 @@ class MuseDashWorld(World):
|
|||
starting_song_count = self.multiworld.starting_song_count[self.player].value
|
||||
additional_song_count = self.multiworld.additional_song_count[self.player].value
|
||||
|
||||
self.multiworld.random.shuffle(available_song_keys)
|
||||
self.random.shuffle(available_song_keys)
|
||||
|
||||
# First, we must double check if the player has included too many guaranteed songs
|
||||
included_song_count = len(self.included_songs)
|
||||
if included_song_count > additional_song_count:
|
||||
# If so, we want to thin the list, thus let's get the goal song and starter songs while we are at it.
|
||||
self.multiworld.random.shuffle(self.included_songs)
|
||||
self.random.shuffle(self.included_songs)
|
||||
self.victory_song_name = self.included_songs.pop()
|
||||
while len(self.included_songs) > additional_song_count:
|
||||
next_song = self.included_songs.pop()
|
||||
|
@ -133,7 +133,7 @@ class MuseDashWorld(World):
|
|||
self.starting_songs.append(next_song)
|
||||
else:
|
||||
# If not, choose a random victory song from the available songs
|
||||
chosen_song = self.multiworld.random.randrange(0, len(available_song_keys) + included_song_count)
|
||||
chosen_song = self.random.randrange(0, len(available_song_keys) + included_song_count)
|
||||
if chosen_song < included_song_count:
|
||||
self.victory_song_name = self.included_songs[chosen_song]
|
||||
del self.included_songs[chosen_song]
|
||||
|
@ -198,7 +198,7 @@ class MuseDashWorld(World):
|
|||
trap_list = self.get_available_traps()
|
||||
if len(trap_list) > 0 and trap_count > 0:
|
||||
for _ in range(0, trap_count):
|
||||
index = self.multiworld.random.randrange(0, len(trap_list))
|
||||
index = self.random.randrange(0, len(trap_list))
|
||||
self.multiworld.itempool.append(self.create_item(trap_list[index]))
|
||||
|
||||
item_count += trap_count
|
||||
|
@ -215,24 +215,17 @@ class MuseDashWorld(World):
|
|||
continue
|
||||
|
||||
# Otherwise add a random assortment of songs
|
||||
self.multiworld.random.shuffle(song_keys_in_pool)
|
||||
self.random.shuffle(song_keys_in_pool)
|
||||
for i in range(0, needed_item_count - item_count):
|
||||
self.multiworld.itempool.append(self.create_item(song_keys_in_pool[i]))
|
||||
|
||||
item_count = needed_item_count
|
||||
|
||||
def create_regions(self) -> None:
|
||||
# Basic Region Setup: Menu -> Song Select -> Songs
|
||||
menu_region = Region("Menu", self.player, self.multiworld)
|
||||
song_select_region = Region("Song Select", self.player, self.multiworld)
|
||||
|
||||
song_select_entrance = Entrance(self.player, "Song Select Entrance", menu_region)
|
||||
|
||||
menu_region.exits.append(song_select_entrance)
|
||||
song_select_entrance.connect(song_select_region)
|
||||
|
||||
self.multiworld.regions.append(menu_region)
|
||||
self.multiworld.regions.append(song_select_region)
|
||||
self.multiworld.regions += [menu_region, song_select_region]
|
||||
menu_region.connect(song_select_region)
|
||||
|
||||
# Make a collection of all songs available for this rando.
|
||||
# 1. All starting songs
|
||||
|
@ -243,7 +236,7 @@ class MuseDashWorld(World):
|
|||
all_selected_locations = self.starting_songs.copy()
|
||||
included_song_copy = self.included_songs.copy()
|
||||
|
||||
self.multiworld.random.shuffle(included_song_copy)
|
||||
self.random.shuffle(included_song_copy)
|
||||
all_selected_locations.extend(included_song_copy)
|
||||
|
||||
two_item_location_count = self.location_count - len(all_selected_locations)
|
||||
|
@ -252,34 +245,18 @@ class MuseDashWorld(World):
|
|||
for i in range(0, len(all_selected_locations)):
|
||||
name = all_selected_locations[i]
|
||||
region = Region(name, self.player, self.multiworld)
|
||||
|
||||
# 2 Locations are defined per song
|
||||
location_name = name + "-0"
|
||||
region.locations.append(MuseDashLocation(self.player, location_name,
|
||||
self.md_collection.song_locations[location_name], region))
|
||||
|
||||
if i < two_item_location_count:
|
||||
location_name = name + "-1"
|
||||
region.locations.append(MuseDashLocation(self.player, location_name,
|
||||
self.md_collection.song_locations[location_name], region))
|
||||
|
||||
region_exit = Entrance(self.player, name, song_select_region)
|
||||
song_select_region.exits.append(region_exit)
|
||||
region_exit.connect(region)
|
||||
self.multiworld.regions.append(region)
|
||||
song_select_region.connect(region, name, lambda state, place=name: state.has(place, self.player))
|
||||
|
||||
# Up to 2 Locations are defined per song
|
||||
region.add_locations({name + "-0": self.md_collection.song_locations[name + "-0"]}, MuseDashLocation)
|
||||
if i < two_item_location_count:
|
||||
region.add_locations({name + "-1": self.md_collection.song_locations[name + "-1"]}, MuseDashLocation)
|
||||
|
||||
def set_rules(self) -> None:
|
||||
self.multiworld.completion_condition[self.player] = lambda state: \
|
||||
state.has(self.music_sheet_name, self.player, self.get_music_sheet_win_count())
|
||||
|
||||
for location in self.multiworld.get_locations(self.player):
|
||||
item_name = location.name[0:(len(location.name) - 2)]
|
||||
if item_name == self.victory_song_name:
|
||||
set_rule(location, lambda state:
|
||||
state.has(self.music_sheet_name, self.player, self.get_music_sheet_win_count()))
|
||||
else:
|
||||
set_rule(location, lambda state, place=item_name: state.has(place, self.player))
|
||||
|
||||
def get_available_traps(self) -> List[str]:
|
||||
dlc_songs = self.multiworld.allow_just_as_planned_dlc_songs[self.player]
|
||||
|
||||
|
|
Loading…
Reference in New Issue