SMW: change random in generate_output to use slot random
This commit is contained in:
parent
53e2232f29
commit
0eb66957b1
|
@ -149,9 +149,9 @@ def generate_shuffled_level_music(world, player):
|
|||
shuffled_level_music = level_music_value_data.copy()
|
||||
|
||||
if world.music_shuffle[player] == "consistent":
|
||||
world.random.shuffle(shuffled_level_music)
|
||||
world.per_slot_randoms[player].shuffle(shuffled_level_music)
|
||||
elif world.music_shuffle[player] == "singularity":
|
||||
single_song = world.random.choice(shuffled_level_music)
|
||||
single_song = world.per_slot_randoms[player].choice(shuffled_level_music)
|
||||
shuffled_level_music = [single_song for i in range(len(shuffled_level_music))]
|
||||
|
||||
return shuffled_level_music
|
||||
|
@ -160,9 +160,9 @@ def generate_shuffled_ow_music(world, player):
|
|||
shuffled_ow_music = ow_music_value_data.copy()
|
||||
|
||||
if world.music_shuffle[player] == "consistent" or world.music_shuffle[player] == "full":
|
||||
world.random.shuffle(shuffled_ow_music)
|
||||
world.per_slot_randoms[player].shuffle(shuffled_ow_music)
|
||||
elif world.music_shuffle[player] == "singularity":
|
||||
single_song = world.random.choice(shuffled_ow_music)
|
||||
single_song = world.per_slot_randoms[player].choice(shuffled_ow_music)
|
||||
shuffled_ow_music = [single_song for i in range(len(shuffled_ow_music))]
|
||||
|
||||
return shuffled_ow_music
|
||||
|
@ -170,7 +170,7 @@ def generate_shuffled_ow_music(world, player):
|
|||
def generate_shuffled_ow_palettes(rom, world, player):
|
||||
if world.overworld_palette_shuffle[player]:
|
||||
for address, valid_palettes in valid_ow_palettes.items():
|
||||
chosen_palette = world.random.choice(valid_palettes)
|
||||
chosen_palette = world.per_slot_randoms[player].choice(valid_palettes)
|
||||
rom.write_byte(address, chosen_palette)
|
||||
|
||||
def generate_shuffled_header_data(rom, world, player):
|
||||
|
@ -196,11 +196,11 @@ def generate_shuffled_header_data(rom, world, player):
|
|||
|
||||
if world.music_shuffle[player] == "full":
|
||||
level_header[2] &= 0x8F
|
||||
level_header[2] |= (world.random.randint(0, 7) << 5)
|
||||
level_header[2] |= (world.per_slot_randoms[player].randint(0, 7) << 5)
|
||||
|
||||
if (world.foreground_palette_shuffle[player] and tileset in valid_foreground_palettes):
|
||||
level_header[3] &= 0xF8
|
||||
level_header[3] |= world.random.choice(valid_foreground_palettes[tileset])
|
||||
level_header[3] |= world.per_slot_randoms[player].choice(valid_foreground_palettes[tileset])
|
||||
|
||||
if world.background_palette_shuffle[player]:
|
||||
layer2_ptr_list = list(rom.read_bytes(0x2E600 + level_id * 3, 3))
|
||||
|
@ -208,10 +208,10 @@ def generate_shuffled_header_data(rom, world, player):
|
|||
|
||||
if layer2_ptr in valid_background_palettes:
|
||||
level_header[0] &= 0x1F
|
||||
level_header[0] |= (world.random.choice(valid_background_palettes[layer2_ptr]) << 5)
|
||||
level_header[0] |= (world.per_slot_randoms[player].choice(valid_background_palettes[layer2_ptr]) << 5)
|
||||
|
||||
if layer2_ptr in valid_background_colors:
|
||||
level_header[1] &= 0x1F
|
||||
level_header[1] |= (world.random.choice(valid_background_colors[layer2_ptr]) << 5)
|
||||
level_header[1] |= (world.per_slot_randoms[player].choice(valid_background_colors[layer2_ptr]) << 5)
|
||||
|
||||
rom.write_bytes(layer1_ptr, bytes(level_header))
|
||||
|
|
|
@ -725,7 +725,7 @@ def handle_swap_donut_gh_exits(rom):
|
|||
|
||||
def handle_bowser_rooms(rom, world, player: int):
|
||||
if world.bowser_castle_rooms[player] == "random_two_room":
|
||||
chosen_rooms = world.random.sample(standard_bowser_rooms, 2)
|
||||
chosen_rooms = world.per_slot_randoms[player].sample(standard_bowser_rooms, 2)
|
||||
|
||||
rom.write_byte(0x3A680, chosen_rooms[0].roomID)
|
||||
rom.write_byte(0x3A684, chosen_rooms[0].roomID)
|
||||
|
@ -738,7 +738,7 @@ def handle_bowser_rooms(rom, world, player: int):
|
|||
rom.write_byte(chosen_rooms[len(chosen_rooms)-1].exitAddress, 0xBD)
|
||||
|
||||
elif world.bowser_castle_rooms[player] == "random_five_room":
|
||||
chosen_rooms = world.random.sample(standard_bowser_rooms, 5)
|
||||
chosen_rooms = world.per_slot_randoms[player].sample(standard_bowser_rooms, 5)
|
||||
|
||||
rom.write_byte(0x3A680, chosen_rooms[0].roomID)
|
||||
rom.write_byte(0x3A684, chosen_rooms[0].roomID)
|
||||
|
@ -752,7 +752,7 @@ def handle_bowser_rooms(rom, world, player: int):
|
|||
|
||||
elif world.bowser_castle_rooms[player] == "gauntlet":
|
||||
chosen_rooms = standard_bowser_rooms.copy()
|
||||
world.random.shuffle(chosen_rooms)
|
||||
world.per_slot_randoms[player].shuffle(chosen_rooms)
|
||||
|
||||
rom.write_byte(0x3A680, chosen_rooms[0].roomID)
|
||||
rom.write_byte(0x3A684, chosen_rooms[0].roomID)
|
||||
|
@ -768,7 +768,7 @@ def handle_bowser_rooms(rom, world, player: int):
|
|||
|
||||
entrance_point = bowser_rooms_copy.pop(0)
|
||||
|
||||
world.random.shuffle(bowser_rooms_copy)
|
||||
world.per_slot_randoms[player].shuffle(bowser_rooms_copy)
|
||||
|
||||
rom.write_byte(entrance_point.exitAddress, bowser_rooms_copy[0].roomID)
|
||||
for i in range(0, len(bowser_rooms_copy) - 1):
|
||||
|
@ -782,8 +782,8 @@ def handle_boss_shuffle(rom, world, player):
|
|||
submap_boss_rooms_copy = submap_boss_rooms.copy()
|
||||
ow_boss_rooms_copy = ow_boss_rooms.copy()
|
||||
|
||||
world.random.shuffle(submap_boss_rooms_copy)
|
||||
world.random.shuffle(ow_boss_rooms_copy)
|
||||
world.per_slot_randoms[player].shuffle(submap_boss_rooms_copy)
|
||||
world.per_slot_randoms[player].shuffle(ow_boss_rooms_copy)
|
||||
|
||||
for i in range(len(submap_boss_rooms_copy)):
|
||||
rom.write_byte(submap_boss_rooms[i].exitAddress, submap_boss_rooms_copy[i].roomID)
|
||||
|
@ -796,19 +796,19 @@ def handle_boss_shuffle(rom, world, player):
|
|||
|
||||
elif world.boss_shuffle[player] == "full":
|
||||
for i in range(len(submap_boss_rooms)):
|
||||
chosen_boss = world.random.choice(submap_boss_rooms)
|
||||
chosen_boss = world.per_slot_randoms[player].choice(submap_boss_rooms)
|
||||
rom.write_byte(submap_boss_rooms[i].exitAddress, chosen_boss.roomID)
|
||||
|
||||
for i in range(len(ow_boss_rooms)):
|
||||
chosen_boss = world.random.choice(ow_boss_rooms)
|
||||
chosen_boss = world.per_slot_randoms[player].choice(ow_boss_rooms)
|
||||
rom.write_byte(ow_boss_rooms[i].exitAddress, chosen_boss.roomID)
|
||||
|
||||
if ow_boss_rooms[i].exitAddressAlt is not None:
|
||||
rom.write_byte(ow_boss_rooms[i].exitAddressAlt, chosen_boss.roomID)
|
||||
|
||||
elif world.boss_shuffle[player] == "singularity":
|
||||
chosen_submap_boss = world.random.choice(submap_boss_rooms)
|
||||
chosen_ow_boss = world.random.choice(ow_boss_rooms)
|
||||
chosen_submap_boss = world.per_slot_randoms[player].choice(submap_boss_rooms)
|
||||
chosen_ow_boss = world.per_slot_randoms[player].choice(ow_boss_rooms)
|
||||
|
||||
for i in range(len(submap_boss_rooms)):
|
||||
rom.write_byte(submap_boss_rooms[i].exitAddress, chosen_submap_boss.roomID)
|
||||
|
@ -821,8 +821,6 @@ def handle_boss_shuffle(rom, world, player):
|
|||
|
||||
|
||||
def patch_rom(world, rom, player, active_level_dict):
|
||||
local_random = world.per_slot_randoms[player]
|
||||
|
||||
goal_text = generate_goal_text(world, player)
|
||||
|
||||
rom.write_bytes(0x2A6E2, goal_text)
|
||||
|
|
Loading…
Reference in New Issue