461 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			461 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Python
		
	
	
	
import struct
 | 
						|
from typing import TYPE_CHECKING
 | 
						|
 | 
						|
from .Options import YoshiColors, BabySound, LevelShuffle
 | 
						|
 | 
						|
if TYPE_CHECKING:
 | 
						|
    from . import YoshisIslandWorld
 | 
						|
 | 
						|
 | 
						|
def setup_gamevars(world: "YoshisIslandWorld") -> None:
 | 
						|
    if world.options.luigi_pieces_in_pool < world.options.luigi_pieces_required:
 | 
						|
        world.options.luigi_pieces_in_pool.value = world.random.randint(world.options.luigi_pieces_required.value, 100)
 | 
						|
    world.starting_lives = struct.pack("H", world.options.starting_lives)
 | 
						|
 | 
						|
    world.level_colors = []
 | 
						|
    world.color_order = []
 | 
						|
    for i in range(72):
 | 
						|
        world.level_colors.append(world.random.randint(0, 7))
 | 
						|
    if world.options.yoshi_colors == YoshiColors.option_singularity:
 | 
						|
        singularity_color = world.options.yoshi_singularity_color.value
 | 
						|
        for i in range(len(world.level_colors)):
 | 
						|
            world.level_colors[i] = singularity_color
 | 
						|
    elif world.options.yoshi_colors == YoshiColors.option_random_order:
 | 
						|
        world.leader_color = world.random.randint(0, 7)
 | 
						|
        for i in range(7):
 | 
						|
            world.color_order.append(world.random.randint(0, 7))
 | 
						|
 | 
						|
    bonus_valid = [0x00, 0x02, 0x04, 0x06, 0x08, 0x0A]
 | 
						|
 | 
						|
    world.world_bonus = []
 | 
						|
    for i in range(12):
 | 
						|
        world.world_bonus.append(world.random.choice(bonus_valid))
 | 
						|
 | 
						|
    safe_baby_sounds = [0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
 | 
						|
                        0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A,
 | 
						|
                        0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27,
 | 
						|
                        0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33,
 | 
						|
                        0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
 | 
						|
                        0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B,
 | 
						|
                        0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x52, 0x53, 0x54, 0x55, 0x56,
 | 
						|
                        0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62,
 | 
						|
                        0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E,
 | 
						|
                        0x73, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
 | 
						|
                        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B,
 | 
						|
                        0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
 | 
						|
                        0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2]
 | 
						|
 | 
						|
    if world.options.baby_mario_sound == BabySound.option_random_sound_effect:
 | 
						|
        world.baby_mario_sfx = world.random.choice(safe_baby_sounds)
 | 
						|
    elif world.options.baby_mario_sound == BabySound.option_disabled:
 | 
						|
        world.baby_mario_sfx = 0x42
 | 
						|
    else:
 | 
						|
        world.baby_mario_sfx = 0x44
 | 
						|
 | 
						|
    boss_list = ["Burt The Bashful's Boss Room", "Salvo The Slime's Boss Room",
 | 
						|
                 "Bigger Boo's Boss Room", "Roger The Ghost's Boss Room",
 | 
						|
                 "Prince Froggy's Boss Room", "Naval Piranha's Boss Room",
 | 
						|
                 "Marching Milde's Boss Room", "Hookbill The Koopa's Boss Room",
 | 
						|
                 "Sluggy The Unshaven's Boss Room", "Raphael The Raven's Boss Room",
 | 
						|
                 "Tap-Tap The Red Nose's Boss Room"]
 | 
						|
 | 
						|
    world.boss_order = []
 | 
						|
 | 
						|
    if world.options.boss_shuffle:
 | 
						|
        world.random.shuffle(boss_list)
 | 
						|
    world.boss_order = boss_list
 | 
						|
 | 
						|
    burt_pointers = [0x3D, 0x05, 0x63, 0x00]
 | 
						|
    slime_pointers = [0x70, 0x04, 0x78, 0x00]
 | 
						|
    boo_pointers = [0x74, 0xBB, 0x7A, 0x00]
 | 
						|
    pot_pointers = [0xCF, 0x04, 0x4D, 0x00]
 | 
						|
    frog_pointers = [0xBF, 0x12, 0x62, 0x04]
 | 
						|
    plant_pointers = [0x7F, 0x0D, 0x42, 0x00]
 | 
						|
    milde_pointers = [0x82, 0x06, 0x64, 0x00]
 | 
						|
    koop_pointers = [0x86, 0x0D, 0x78, 0x00]
 | 
						|
    slug_pointers = [0x8A, 0x09, 0x7A, 0x00]
 | 
						|
    raph_pointers = [0xC4, 0x03, 0x4B, 0x05]
 | 
						|
    tap_pointers = [0xCC, 0x49, 0x64, 0x02]
 | 
						|
 | 
						|
    boss_data_list = [
 | 
						|
        burt_pointers,
 | 
						|
        slime_pointers,
 | 
						|
        boo_pointers,
 | 
						|
        pot_pointers,
 | 
						|
        frog_pointers,
 | 
						|
        plant_pointers,
 | 
						|
        milde_pointers,
 | 
						|
        koop_pointers,
 | 
						|
        slug_pointers,
 | 
						|
        raph_pointers,
 | 
						|
        tap_pointers
 | 
						|
    ]
 | 
						|
 | 
						|
    boss_levels = [0x03, 0x07, 0x0F, 0x13, 0x1B, 0x1F, 0x27, 0x2B, 0x33, 0x37, 0x3F]
 | 
						|
 | 
						|
    boss_room_idlist = {
 | 
						|
        "Burt The Bashful's Boss Room": 0,
 | 
						|
        "Salvo The Slime's Boss Room": 1,
 | 
						|
        "Bigger Boo's Boss Room": 2,
 | 
						|
        "Roger The Ghost's Boss Room": 3,
 | 
						|
        "Prince Froggy's Boss Room": 4,
 | 
						|
        "Naval Piranha's Boss Room": 5,
 | 
						|
        "Marching Milde's Boss Room": 6,
 | 
						|
        "Hookbill The Koopa's Boss Room": 7,
 | 
						|
        "Sluggy The Unshaven's Boss Room": 8,
 | 
						|
        "Raphael The Raven's Boss Room": 9,
 | 
						|
        "Tap-Tap The Red Nose's Boss Room": 10,
 | 
						|
    }
 | 
						|
 | 
						|
    boss_check_list = {
 | 
						|
        "Burt The Bashful's Boss Room": "Burt The Bashful Defeated",
 | 
						|
        "Salvo The Slime's Boss Room": "Salvo The Slime Defeated",
 | 
						|
        "Bigger Boo's Boss Room": "Bigger Boo Defeated",
 | 
						|
        "Roger The Ghost's Boss Room": "Roger The Ghost Defeated",
 | 
						|
        "Prince Froggy's Boss Room": "Prince Froggy Defeated",
 | 
						|
        "Naval Piranha's Boss Room": "Naval Piranha Defeated",
 | 
						|
        "Marching Milde's Boss Room": "Marching Milde Defeated",
 | 
						|
        "Hookbill The Koopa's Boss Room": "Hookbill The Koopa Defeated",
 | 
						|
        "Sluggy The Unshaven's Boss Room": "Sluggy The Unshaven Defeated",
 | 
						|
        "Raphael The Raven's Boss Room": "Raphael The Raven Defeated",
 | 
						|
        "Tap-Tap The Red Nose's Boss Room": "Tap-Tap The Red Nose Defeated",
 | 
						|
    }
 | 
						|
 | 
						|
    world.boss_room_id = [boss_room_idlist[roomnum] for roomnum in world.boss_order]
 | 
						|
    world.tap_tap_room = boss_levels[world.boss_room_id.index(10)]
 | 
						|
    world.boss_ap_loc = [boss_check_list[roomnum] for roomnum in world.boss_order]
 | 
						|
 | 
						|
    world.boss_burt_data = boss_data_list[world.boss_room_id[0]]
 | 
						|
 | 
						|
    world.boss_slime_data = boss_data_list[world.boss_room_id[1]]
 | 
						|
 | 
						|
    world.boss_boo_data = boss_data_list[world.boss_room_id[2]]
 | 
						|
 | 
						|
    world.boss_pot_data = boss_data_list[world.boss_room_id[3]]
 | 
						|
 | 
						|
    world.boss_frog_data = boss_data_list[world.boss_room_id[4]]
 | 
						|
 | 
						|
    world.boss_plant_data = boss_data_list[world.boss_room_id[5]]
 | 
						|
 | 
						|
    world.boss_milde_data = boss_data_list[world.boss_room_id[6]]
 | 
						|
 | 
						|
    world.boss_koop_data = boss_data_list[world.boss_room_id[7]]
 | 
						|
 | 
						|
    world.boss_slug_data = boss_data_list[world.boss_room_id[8]]
 | 
						|
 | 
						|
    world.boss_raph_data = boss_data_list[world.boss_room_id[9]]
 | 
						|
 | 
						|
    world.boss_tap_data = boss_data_list[world.boss_room_id[10]]
 | 
						|
 | 
						|
    world.global_level_list = [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
 | 
						|
                               0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13,
 | 
						|
                               0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
 | 
						|
                               0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B,
 | 
						|
                               0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
 | 
						|
                               0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42]
 | 
						|
    level_id_list = {
 | 
						|
                    0x00: "1-1",
 | 
						|
                    0x01: "1-2",
 | 
						|
                    0x02: "1-3",
 | 
						|
                    0x03: "1-4",
 | 
						|
                    0x04: "1-5",
 | 
						|
                    0x05: "1-6",
 | 
						|
                    0x06: "1-7",
 | 
						|
                    0x07: "1-8",
 | 
						|
                    0x0C: "2-1",
 | 
						|
                    0x0D: "2-2",
 | 
						|
                    0x0E: "2-3",
 | 
						|
                    0x0F: "2-4",
 | 
						|
                    0x10: "2-5",
 | 
						|
                    0x11: "2-6",
 | 
						|
                    0x12: "2-7",
 | 
						|
                    0x13: "2-8",
 | 
						|
                    0x18: "3-1",
 | 
						|
                    0x19: "3-2",
 | 
						|
                    0x1A: "3-3",
 | 
						|
                    0x1B: "3-4",
 | 
						|
                    0x1C: "3-5",
 | 
						|
                    0x1D: "3-6",
 | 
						|
                    0x1E: "3-7",
 | 
						|
                    0x1F: "3-8",
 | 
						|
                    0x24: "4-1",
 | 
						|
                    0x25: "4-2",
 | 
						|
                    0x26: "4-3",
 | 
						|
                    0x27: "4-4",
 | 
						|
                    0x28: "4-5",
 | 
						|
                    0x29: "4-6",
 | 
						|
                    0x2A: "4-7",
 | 
						|
                    0x2B: "4-8",
 | 
						|
                    0x30: "5-1",
 | 
						|
                    0x31: "5-2",
 | 
						|
                    0x32: "5-3",
 | 
						|
                    0x33: "5-4",
 | 
						|
                    0x34: "5-5",
 | 
						|
                    0x35: "5-6",
 | 
						|
                    0x36: "5-7",
 | 
						|
                    0x37: "5-8",
 | 
						|
                    0x3C: "6-1",
 | 
						|
                    0x3D: "6-2",
 | 
						|
                    0x3E: "6-3",
 | 
						|
                    0x3F: "6-4",
 | 
						|
                    0x40: "6-5",
 | 
						|
                    0x41: "6-6",
 | 
						|
                    0x42: "6-7"
 | 
						|
                        }
 | 
						|
 | 
						|
    level_names = {
 | 
						|
                    0x00: "Make Eggs, Throw Eggs",
 | 
						|
                    0x01: "Watch Out Below!",
 | 
						|
                    0x02: "The Cave Of Chomp Rock",
 | 
						|
                    0x03: "Burt The Bashful's Fort",
 | 
						|
                    0x04: "Hop! Hop! Donut Lifts",
 | 
						|
                    0x05: "Shy-Guys On Stilts",
 | 
						|
                    0x06: "Touch Fuzzy Get Dizzy",
 | 
						|
                    0x07: "Salvo The Slime's Castle",
 | 
						|
                    0x0C: "Visit Koopa And Para-Koopa",
 | 
						|
                    0x0D: "The Baseball Boys",
 | 
						|
                    0x0E: "What's Gusty Taste Like?",
 | 
						|
                    0x0F: "Bigger Boo's Fort",
 | 
						|
                    0x10: "Watch Out For Lakitu",
 | 
						|
                    0x11: "The Cave Of The Mystery Maze",
 | 
						|
                    0x12: "Lakitu's Wall",
 | 
						|
                    0x13: "The Potted Ghost's Castle",
 | 
						|
                    0x18: "Welcome To Monkey World!",
 | 
						|
                    0x19: "Jungle Rhythm...",
 | 
						|
                    0x1A: "Nep-Enuts' Domain",
 | 
						|
                    0x1B: "Prince Froggy's Fort",
 | 
						|
                    0x1C: "Jammin' Through The Trees",
 | 
						|
                    0x1D: "The Cave Of Harry Hedgehog",
 | 
						|
                    0x1E: "Monkeys' Favorite Lake",
 | 
						|
                    0x1F: "Naval Piranha's Castle",
 | 
						|
                    0x24: "GO! GO! MARIO!!",
 | 
						|
                    0x25: "The Cave Of The Lakitus",
 | 
						|
                    0x26: "Don't Look Back!",
 | 
						|
                    0x27: "Marching Milde's Fort",
 | 
						|
                    0x28: "Chomp Rock Zone",
 | 
						|
                    0x29: "Lake Shore Paradise",
 | 
						|
                    0x2A: "Ride Like The Wind",
 | 
						|
                    0x2B: "Hookbill The Koopa's Castle",
 | 
						|
                    0x30: "BLIZZARD!!!",
 | 
						|
                    0x31: "Ride The Ski Lifts",
 | 
						|
                    0x32: "Danger - Icy Conditions Ahead",
 | 
						|
                    0x33: "Sluggy The Unshaven's Fort",
 | 
						|
                    0x34: "Goonie Rides!",
 | 
						|
                    0x35: "Welcome To Cloud World",
 | 
						|
                    0x36: "Shifting Platforms Ahead",
 | 
						|
                    0x37: "Raphael The Raven's Castle",
 | 
						|
                    0x3C: "Scary Skeleton Goonies!",
 | 
						|
                    0x3D: "The Cave Of The Bandits",
 | 
						|
                    0x3E: "Beware The Spinning Logs",
 | 
						|
                    0x3F: "Tap-Tap The Red Nose's Fort",
 | 
						|
                    0x40: "The Very Loooooong Cave",
 | 
						|
                    0x41: "The Deep, Underground Maze",
 | 
						|
                    0x42: "KEEP MOVING!!!!"
 | 
						|
                        }
 | 
						|
 | 
						|
    world_1_offsets = [0x01, 0x00, 0x00, 0x00, 0x00, 0x00]
 | 
						|
    world_2_offsets = [0x01, 0x01, 0x00, 0x00, 0x00, 0x00]
 | 
						|
    world_3_offsets = [0x01, 0x01, 0x01, 0x00, 0x00, 0x00]
 | 
						|
    world_4_offsets = [0x01, 0x01, 0x01, 0x01, 0x00, 0x00]
 | 
						|
    world_5_offsets = [0x01, 0x01, 0x01, 0x01, 0x01, 0x00]
 | 
						|
    easy_start_lv = [0x02, 0x04, 0x06, 0x0E, 0x10, 0x18, 0x1C, 0x28,
 | 
						|
                     0x30, 0x31, 0x35, 0x36, 0x3E, 0x40, 0x42]
 | 
						|
    norm_start_lv = [0x00, 0x01, 0x02, 0x04, 0x06, 0x0E, 0x10, 0x12, 0x18, 0x1A,
 | 
						|
                     0x1C, 0x1E, 0x28, 0x30, 0x31, 0x34, 0x35, 0x36, 0x3D, 0x3E, 0x40, 0x42]
 | 
						|
    hard_start_lv = [0x00, 0x01, 0x02, 0x04, 0x06, 0x0D, 0x0E, 0x10, 0x11, 0x12, 0x18, 0x1A, 0x1C,
 | 
						|
                     0x1E, 0x24, 0x25, 0x26, 0x28, 0x29, 0x30, 0x31, 0x34, 0x35, 0x36, 0x3D, 0x3E,
 | 
						|
                     0x40, 0x42]
 | 
						|
    diff_index = [easy_start_lv, norm_start_lv, hard_start_lv]
 | 
						|
    diff_level = diff_index[world.options.stage_logic.value]
 | 
						|
    boss_lv = [0x03, 0x07, 0x0F, 0x13, 0x1B, 0x1F, 0x27, 0x2B, 0x33, 0x37, 0x3F]
 | 
						|
    world.world_start_lv = [0, 8, 16, 24, 32, 40]
 | 
						|
    if not world.options.shuffle_midrings:
 | 
						|
        easy_start_lv.extend([0x1A, 0x24, 0x34])
 | 
						|
        norm_start_lv.extend([0x24, 0x3C])
 | 
						|
        hard_start_lv.extend([0x1D, 0x3C])
 | 
						|
 | 
						|
    if world.options.level_shuffle != LevelShuffle.option_bosses_guranteed:
 | 
						|
        hard_start_lv.extend([0x07, 0x1B, 0x1F, 0x2B, 0x33, 0x37])
 | 
						|
        if not world.options.shuffle_midrings:
 | 
						|
            easy_start_lv.extend([0x1B])
 | 
						|
            norm_start_lv.extend([0x1B, 0x2B, 0x37])
 | 
						|
 | 
						|
    starting_level = world.random.choice(diff_level)
 | 
						|
 | 
						|
    starting_level_entrance = world.world_start_lv[world.options.starting_world.value]
 | 
						|
    if world.options.level_shuffle:
 | 
						|
        world.global_level_list.remove(starting_level)
 | 
						|
        world.random.shuffle(world.global_level_list)
 | 
						|
        if world.options.level_shuffle == LevelShuffle.option_bosses_guranteed:
 | 
						|
            for i in range(11):
 | 
						|
                world.global_level_list = [item for item in world.global_level_list
 | 
						|
                                           if item not in boss_lv]
 | 
						|
            world.random.shuffle(boss_lv)
 | 
						|
 | 
						|
            world.global_level_list.insert(3 - world_1_offsets[world.options.starting_world.value], boss_lv[0])  # 1 if starting world is 1, 0 otherwise
 | 
						|
            world.global_level_list.insert(7 - world_1_offsets[world.options.starting_world.value], boss_lv[1])
 | 
						|
            world.global_level_list.insert(11 - world_2_offsets[world.options.starting_world.value], boss_lv[2])
 | 
						|
            world.global_level_list.insert(15 - world_2_offsets[world.options.starting_world.value], boss_lv[3])
 | 
						|
            world.global_level_list.insert(19 - world_3_offsets[world.options.starting_world.value], boss_lv[4])
 | 
						|
            world.global_level_list.insert(23 - world_3_offsets[world.options.starting_world.value], boss_lv[5])
 | 
						|
            world.global_level_list.insert(27 - world_4_offsets[world.options.starting_world.value], boss_lv[6])
 | 
						|
            world.global_level_list.insert(31 - world_4_offsets[world.options.starting_world.value], boss_lv[7])
 | 
						|
            world.global_level_list.insert(35 - world_5_offsets[world.options.starting_world.value], boss_lv[8])
 | 
						|
            world.global_level_list.insert(39 - world_5_offsets[world.options.starting_world.value], boss_lv[9])
 | 
						|
            world.global_level_list.insert(43 - 1, boss_lv[10])
 | 
						|
        world.global_level_list.insert(starting_level_entrance, starting_level)
 | 
						|
    world.level_location_list = [level_id_list[LevelID] for LevelID in world.global_level_list]
 | 
						|
    world.level_name_list = [level_names[LevelID] for LevelID in world.global_level_list]
 | 
						|
 | 
						|
    level_panel_dict = {
 | 
						|
                    0x00: [0x04, 0x04, 0x53],
 | 
						|
                    0x01: [0x20, 0x04, 0x53],
 | 
						|
                    0x02: [0x3C, 0x04, 0x53],
 | 
						|
                    0x03: [0x58, 0x04, 0x53],
 | 
						|
                    0x04: [0x74, 0x04, 0x53],
 | 
						|
                    0x05: [0x90, 0x04, 0x53],
 | 
						|
                    0x06: [0xAC, 0x04, 0x53],
 | 
						|
                    0x07: [0xC8, 0x04, 0x53],
 | 
						|
                    0x0C: [0x04, 0x24, 0x53],
 | 
						|
                    0x0D: [0x20, 0x24, 0x53],
 | 
						|
                    0x0E: [0x3C, 0x24, 0x53],
 | 
						|
                    0x0F: [0x58, 0x24, 0x53],
 | 
						|
                    0x10: [0x74, 0x24, 0x53],
 | 
						|
                    0x11: [0x90, 0x24, 0x53],
 | 
						|
                    0x12: [0xAC, 0x24, 0x53],
 | 
						|
                    0x13: [0xC8, 0x24, 0x53],
 | 
						|
                    0x18: [0x04, 0x44, 0x53],
 | 
						|
                    0x19: [0x20, 0x44, 0x53],
 | 
						|
                    0x1A: [0x3C, 0x44, 0x53],
 | 
						|
                    0x1B: [0x58, 0x44, 0x53],
 | 
						|
                    0x1C: [0x74, 0x44, 0x53],
 | 
						|
                    0x1D: [0x90, 0x44, 0x53],
 | 
						|
                    0x1E: [0xAC, 0x44, 0x53],
 | 
						|
                    0x1F: [0xC8, 0x44, 0x53],
 | 
						|
                    0x24: [0x04, 0x64, 0x53],
 | 
						|
                    0x25: [0x20, 0x64, 0x53],
 | 
						|
                    0x26: [0x3C, 0x64, 0x53],
 | 
						|
                    0x27: [0x58, 0x64, 0x53],
 | 
						|
                    0x28: [0x74, 0x64, 0x53],
 | 
						|
                    0x29: [0x90, 0x64, 0x53],
 | 
						|
                    0x2A: [0xAC, 0x64, 0x53],
 | 
						|
                    0x2B: [0xC8, 0x64, 0x53],
 | 
						|
                    0x30: [0x04, 0x04, 0x53],
 | 
						|
                    0x31: [0x20, 0x04, 0x53],
 | 
						|
                    0x32: [0x3C, 0x04, 0x53],
 | 
						|
                    0x33: [0x58, 0x04, 0x53],
 | 
						|
                    0x34: [0x74, 0x04, 0x53],
 | 
						|
                    0x35: [0x90, 0x04, 0x53],
 | 
						|
                    0x36: [0xAC, 0x04, 0x53],
 | 
						|
                    0x37: [0xC8, 0x04, 0x53],
 | 
						|
                    0x3C: [0x04, 0x24, 0x53],
 | 
						|
                    0x3D: [0x20, 0x24, 0x53],
 | 
						|
                    0x3E: [0x3C, 0x24, 0x53],
 | 
						|
                    0x3F: [0x58, 0x24, 0x53],
 | 
						|
                    0x40: [0x74, 0x24, 0x53],
 | 
						|
                    0x41: [0x90, 0x24, 0x53],
 | 
						|
                    0x42: [0xAC, 0x24, 0x53],
 | 
						|
                        }
 | 
						|
    panel_palette_1 = [0x00, 0x03, 0x04, 0x05, 0x0C, 0x10, 0x12, 0x13, 0x19, 0x1A, 0x1B, 0x1C, 0x1D,
 | 
						|
                       0x24, 0x26, 0x27, 0x29, 0x2A, 0x2B, 0x30, 0x32, 0x34,
 | 
						|
                       0x35, 0x37, 0x3C, 0x3D, 0x40, 0x41]  # 000C
 | 
						|
    panel_palette_2 = [0x01, 0x02, 0x06, 0x07, 0x0D, 0x0E, 0x0F, 0x11, 0x18, 0x1E, 0x1F, 0x25, 0x28,
 | 
						|
                       0x31, 0x33, 0x36, 0x3E, 0x3F, 0x42]  # 0010
 | 
						|
 | 
						|
    stage_number = 0
 | 
						|
    world_number = 1
 | 
						|
    for i in range(47):
 | 
						|
        stage_number += 1
 | 
						|
        if stage_number >= 9:
 | 
						|
            world_number += 1
 | 
						|
            stage_number = 1
 | 
						|
        for _ in range(3):
 | 
						|
            setattr(world, f"Stage{world_number}{stage_number}StageGFX",
 | 
						|
                    level_panel_dict[world.global_level_list[i]])
 | 
						|
 | 
						|
    world.level_gfx_table = []
 | 
						|
    world.palette_panel_list = []
 | 
						|
 | 
						|
    for i in range(47):
 | 
						|
        if world.global_level_list[i] >= 0x30:
 | 
						|
            world.level_gfx_table.append(0x15)
 | 
						|
        else:
 | 
						|
            world.level_gfx_table.append(0x11)
 | 
						|
 | 
						|
        if world.global_level_list[i] in panel_palette_1:
 | 
						|
            world.palette_panel_list.extend([0x00, 0x0C])
 | 
						|
        elif world.global_level_list[i] in panel_palette_2:
 | 
						|
            world.palette_panel_list.extend([0x00, 0x10])
 | 
						|
 | 
						|
    world.palette_panel_list[16:16] = [0x00, 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18]
 | 
						|
    world.palette_panel_list[40:40] = [0x00, 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18]
 | 
						|
    world.palette_panel_list[64:64] = [0x00, 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18]
 | 
						|
    world.palette_panel_list[88:88] = [0x00, 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18]
 | 
						|
    world.palette_panel_list[112:112] = [0x00, 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18]
 | 
						|
 | 
						|
    world.level_gfx_table.insert(8, 0x15)
 | 
						|
    world.level_gfx_table.insert(8, 0x15)
 | 
						|
    world.level_gfx_table.insert(8, 0x15)
 | 
						|
    world.level_gfx_table.insert(8, 0x11)
 | 
						|
 | 
						|
    world.level_gfx_table.insert(20, 0x15)
 | 
						|
    world.level_gfx_table.insert(20, 0x15)
 | 
						|
    world.level_gfx_table.insert(20, 0x15)
 | 
						|
    world.level_gfx_table.insert(20, 0x11)
 | 
						|
 | 
						|
    world.level_gfx_table.insert(32, 0x15)
 | 
						|
    world.level_gfx_table.insert(32, 0x15)
 | 
						|
    world.level_gfx_table.insert(32, 0x15)
 | 
						|
    world.level_gfx_table.insert(32, 0x11)
 | 
						|
 | 
						|
    world.level_gfx_table.insert(44, 0x15)
 | 
						|
    world.level_gfx_table.insert(44, 0x15)
 | 
						|
    world.level_gfx_table.insert(44, 0x15)
 | 
						|
    world.level_gfx_table.insert(44, 0x11)
 | 
						|
 | 
						|
    world.level_gfx_table.insert(56, 0x15)
 | 
						|
    world.level_gfx_table.insert(56, 0x15)
 | 
						|
    world.level_gfx_table.insert(56, 0x15)
 | 
						|
    world.level_gfx_table.insert(56, 0x15)
 | 
						|
 | 
						|
    castle_door_dict = {
 | 
						|
        0: [0xB8, 0x05, 0x77, 0x00],
 | 
						|
        1: [0xB8, 0x05, 0x77, 0x00],
 | 
						|
        2: [0xC6, 0x07, 0x7A, 0x00],
 | 
						|
        3: [0xCD, 0x05, 0x5B, 0x00],
 | 
						|
        4: [0xD3, 0x00, 0x77, 0x06],
 | 
						|
        5: [0xB8, 0x05, 0x77, 0x00],
 | 
						|
    }
 | 
						|
 | 
						|
    world.castle_door = castle_door_dict[world.options.bowser_door_mode.value]
 | 
						|
 | 
						|
    world.world_1_stages = world.global_level_list[0:8]
 | 
						|
    world.world_2_stages = world.global_level_list[8:16]
 | 
						|
    world.world_3_stages = world.global_level_list[16:24]
 | 
						|
    world.world_4_stages = world.global_level_list[24:32]
 | 
						|
    world.world_5_stages = world.global_level_list[32:40]
 | 
						|
    world.world_6_stages = world.global_level_list[40:47]
 | 
						|
 | 
						|
    world.world_1_stages.extend([0x08, 0x09])
 | 
						|
    world.world_2_stages.extend([0x14, 0x15])
 | 
						|
    world.world_3_stages.extend([0x20, 0x21])
 | 
						|
    world.world_4_stages.extend([0x2C, 0x2D])
 | 
						|
    world.world_5_stages.extend([0x38, 0x39])
 | 
						|
    world.world_6_stages.extend([0x43, 0x44, 0x45])
 | 
						|
 | 
						|
    bowser_text_table = {
 | 
						|
        0: [0xDE, 0xEE, 0xDC, 0xDC, 0xE5],  # Gween
 | 
						|
        1: [0xE7, 0xE0, 0xE5, 0xE2, 0xD0],  # Pink
 | 
						|
        3: [0xEB, 0xDF, 0xF0, 0xD8, 0xE5],  # Thyan
 | 
						|
        2: [0xF0, 0xDC, 0xEE, 0xEE, 0xE6],  # Yewow
 | 
						|
        4: [0xE7, 0xEC, 0xDF, 0xE7, 0xE3],  # puhpl
 | 
						|
        5: [0xD9, 0xEE, 0xE6, 0xEE, 0xE5],  # Bwown
 | 
						|
        6: [0xEE, 0xDC, 0xDB, 0xD0, 0xD0],  # Wed
 | 
						|
        7: [0xD9, 0xEE, 0xEC, 0xDC, 0xD0],  # Bwue
 | 
						|
    }
 | 
						|
 | 
						|
    if world.options.yoshi_colors == YoshiColors.option_random_order:
 | 
						|
        world.bowser_text = bowser_text_table[world.leader_color]
 | 
						|
    else:
 | 
						|
        world.bowser_text = bowser_text_table[world.level_colors[67]]
 |