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
|
starting_song_count = self.multiworld.starting_song_count[self.player].value
|
||||||
additional_song_count = self.multiworld.additional_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
|
# First, we must double check if the player has included too many guaranteed songs
|
||||||
included_song_count = len(self.included_songs)
|
included_song_count = len(self.included_songs)
|
||||||
if included_song_count > additional_song_count:
|
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.
|
# 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()
|
self.victory_song_name = self.included_songs.pop()
|
||||||
while len(self.included_songs) > additional_song_count:
|
while len(self.included_songs) > additional_song_count:
|
||||||
next_song = self.included_songs.pop()
|
next_song = self.included_songs.pop()
|
||||||
|
@ -133,7 +133,7 @@ class MuseDashWorld(World):
|
||||||
self.starting_songs.append(next_song)
|
self.starting_songs.append(next_song)
|
||||||
else:
|
else:
|
||||||
# If not, choose a random victory song from the available songs
|
# 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:
|
if chosen_song < included_song_count:
|
||||||
self.victory_song_name = self.included_songs[chosen_song]
|
self.victory_song_name = self.included_songs[chosen_song]
|
||||||
del self.included_songs[chosen_song]
|
del self.included_songs[chosen_song]
|
||||||
|
@ -198,7 +198,7 @@ class MuseDashWorld(World):
|
||||||
trap_list = self.get_available_traps()
|
trap_list = self.get_available_traps()
|
||||||
if len(trap_list) > 0 and trap_count > 0:
|
if len(trap_list) > 0 and trap_count > 0:
|
||||||
for _ in range(0, trap_count):
|
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]))
|
self.multiworld.itempool.append(self.create_item(trap_list[index]))
|
||||||
|
|
||||||
item_count += trap_count
|
item_count += trap_count
|
||||||
|
@ -215,24 +215,17 @@ class MuseDashWorld(World):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Otherwise add a random assortment of songs
|
# 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):
|
for i in range(0, needed_item_count - item_count):
|
||||||
self.multiworld.itempool.append(self.create_item(song_keys_in_pool[i]))
|
self.multiworld.itempool.append(self.create_item(song_keys_in_pool[i]))
|
||||||
|
|
||||||
item_count = needed_item_count
|
item_count = needed_item_count
|
||||||
|
|
||||||
def create_regions(self) -> None:
|
def create_regions(self) -> None:
|
||||||
# Basic Region Setup: Menu -> Song Select -> Songs
|
|
||||||
menu_region = Region("Menu", self.player, self.multiworld)
|
menu_region = Region("Menu", self.player, self.multiworld)
|
||||||
song_select_region = Region("Song Select", self.player, self.multiworld)
|
song_select_region = Region("Song Select", self.player, self.multiworld)
|
||||||
|
self.multiworld.regions += [menu_region, song_select_region]
|
||||||
song_select_entrance = Entrance(self.player, "Song Select Entrance", menu_region)
|
menu_region.connect(song_select_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)
|
|
||||||
|
|
||||||
# Make a collection of all songs available for this rando.
|
# Make a collection of all songs available for this rando.
|
||||||
# 1. All starting songs
|
# 1. All starting songs
|
||||||
|
@ -243,7 +236,7 @@ class MuseDashWorld(World):
|
||||||
all_selected_locations = self.starting_songs.copy()
|
all_selected_locations = self.starting_songs.copy()
|
||||||
included_song_copy = self.included_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)
|
all_selected_locations.extend(included_song_copy)
|
||||||
|
|
||||||
two_item_location_count = self.location_count - len(all_selected_locations)
|
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)):
|
for i in range(0, len(all_selected_locations)):
|
||||||
name = all_selected_locations[i]
|
name = all_selected_locations[i]
|
||||||
region = Region(name, self.player, self.multiworld)
|
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)
|
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:
|
def set_rules(self) -> None:
|
||||||
self.multiworld.completion_condition[self.player] = lambda state: \
|
self.multiworld.completion_condition[self.player] = lambda state: \
|
||||||
state.has(self.music_sheet_name, self.player, self.get_music_sheet_win_count())
|
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]:
|
def get_available_traps(self) -> List[str]:
|
||||||
dlc_songs = self.multiworld.allow_just_as_planned_dlc_songs[self.player]
|
dlc_songs = self.multiworld.allow_just_as_planned_dlc_songs[self.player]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue