Added options from Maseya Palette Randomizer (#145)
Add remaining palette shuffle options
This commit is contained in:
parent
b2a60ac926
commit
b91a627b32
|
@ -34,8 +34,12 @@ def main():
|
||||||
''')
|
''')
|
||||||
parser.add_argument('--heartcolor', default='red', const='red', nargs='?', choices=['red', 'blue', 'green', 'yellow', 'random'],
|
parser.add_argument('--heartcolor', default='red', const='red', nargs='?', choices=['red', 'blue', 'green', 'yellow', 'random'],
|
||||||
help='Select the color of Link\'s heart meter. (default: %(default)s)')
|
help='Select the color of Link\'s heart meter. (default: %(default)s)')
|
||||||
parser.add_argument('--ow_palettes', default='default', choices=['default', 'random', 'blackout'])
|
parser.add_argument('--ow_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
parser.add_argument('--uw_palettes', default='default', choices=['default', 'random', 'blackout'])
|
parser.add_argument('--link_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
|
parser.add_argument('--shield_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
|
parser.add_argument('--sword_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
|
parser.add_argument('--hud_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
|
parser.add_argument('--uw_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
parser.add_argument('--sprite', help='''\
|
parser.add_argument('--sprite', help='''\
|
||||||
Path to a sprite sheet to use for Link. Needs to be in
|
Path to a sprite sheet to use for Link. Needs to be in
|
||||||
binary format and have a length of 0x7000 (28672) bytes,
|
binary format and have a length of 0x7000 (28672) bytes,
|
||||||
|
|
|
@ -10,19 +10,27 @@ def adjust(args):
|
||||||
start = time.perf_counter()
|
start = time.perf_counter()
|
||||||
logger = logging.getLogger('Adjuster')
|
logger = logging.getLogger('Adjuster')
|
||||||
logger.info('Patching ROM.')
|
logger.info('Patching ROM.')
|
||||||
|
vanillaRom = args.baserom
|
||||||
if os.path.splitext(args.rom)[-1].lower() == '.bmbp':
|
if os.path.splitext(args.rom)[-1].lower() == '.bmbp':
|
||||||
import Patch
|
import Patch
|
||||||
meta, args.rom = Patch.create_rom_file(args.rom)
|
meta, args.rom = Patch.create_rom_file(args.rom)
|
||||||
|
|
||||||
if os.stat(args.rom).st_size in (0x200000, 0x400000) and os.path.splitext(args.rom)[-1].lower() == '.sfc':
|
if os.stat(args.rom).st_size in (0x200000, 0x400000) and os.path.splitext(args.rom)[-1].lower() == '.sfc':
|
||||||
rom = LocalRom(args.rom, patch=False)
|
rom = LocalRom(args.rom, patch=False, vanillaRom=vanillaRom)
|
||||||
else:
|
else:
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
'Provided Rom is not a valid Link to the Past Randomizer Rom. Please provide one for adjusting.')
|
'Provided Rom is not a valid Link to the Past Randomizer Rom. Please provide one for adjusting.')
|
||||||
|
palettes_options={}
|
||||||
|
palettes_options['dungeon']=args.uw_palettes
|
||||||
|
|
||||||
|
palettes_options['overworld']=args.ow_palettes
|
||||||
|
palettes_options['hud']=args.hud_palettes
|
||||||
|
palettes_options['sword']=args.sword_palettes
|
||||||
|
palettes_options['shield']=args.shield_palettes
|
||||||
|
palettes_options['link']=args.link_palettes
|
||||||
|
|
||||||
apply_rom_settings(rom, args.heartbeep, args.heartcolor, args.quickswap, args.fastmenu, args.disablemusic,
|
apply_rom_settings(rom, args.heartbeep, args.heartcolor, args.quickswap, args.fastmenu, args.disablemusic,
|
||||||
args.sprite, args.ow_palettes, args.uw_palettes)
|
args.sprite, palettes_options)
|
||||||
path = output_path(f'{os.path.basename(args.rom)[:-4]}_adjusted.sfc')
|
path = output_path(f'{os.path.basename(args.rom)[:-4]}_adjusted.sfc')
|
||||||
rom.write_to_file(path)
|
rom.write_to_file(path)
|
||||||
|
|
||||||
|
|
|
@ -283,8 +283,13 @@ def parse_arguments(argv, no_defaults=False):
|
||||||
''')
|
''')
|
||||||
parser.add_argument('--heartcolor', default=defval('red'), const='red', nargs='?', choices=['red', 'blue', 'green', 'yellow', 'random'],
|
parser.add_argument('--heartcolor', default=defval('red'), const='red', nargs='?', choices=['red', 'blue', 'green', 'yellow', 'random'],
|
||||||
help='Select the color of Link\'s heart meter. (default: %(default)s)')
|
help='Select the color of Link\'s heart meter. (default: %(default)s)')
|
||||||
parser.add_argument('--ow_palettes', default=defval('default'), choices=['default', 'random', 'blackout'])
|
parser.add_argument('--ow_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
parser.add_argument('--uw_palettes', default=defval('default'), choices=['default', 'random', 'blackout'])
|
parser.add_argument('--uw_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
|
parser.add_argument('--hud_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
|
parser.add_argument('--shield_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
|
parser.add_argument('--sword_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
|
parser.add_argument('--link_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
|
||||||
|
|
||||||
parser.add_argument('--sprite', help='''\
|
parser.add_argument('--sprite', help='''\
|
||||||
Path to a sprite sheet to use for Link. Needs to be in
|
Path to a sprite sheet to use for Link. Needs to be in
|
||||||
binary format and have a length of 0x7000 (28672) bytes,
|
binary format and have a length of 0x7000 (28672) bytes,
|
||||||
|
|
67
Gui.py
67
Gui.py
|
@ -198,7 +198,7 @@ def guiMain(args=None):
|
||||||
owPalettesLabel.pack(side=LEFT)
|
owPalettesLabel.pack(side=LEFT)
|
||||||
owPalettesVar = StringVar()
|
owPalettesVar = StringVar()
|
||||||
owPalettesVar.set('default')
|
owPalettesVar.set('default')
|
||||||
owPalettesOptionMenu = OptionMenu(owPalettesFrame, owPalettesVar, 'default', 'random', 'blackout')
|
owPalettesOptionMenu = OptionMenu(owPalettesFrame, owPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
owPalettesOptionMenu.pack(side=LEFT)
|
owPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
uwPalettesFrame = Frame(romOptionsFrame)
|
uwPalettesFrame = Frame(romOptionsFrame)
|
||||||
|
@ -207,11 +207,41 @@ def guiMain(args=None):
|
||||||
uwPalettesLabel.pack(side=LEFT)
|
uwPalettesLabel.pack(side=LEFT)
|
||||||
uwPalettesVar = StringVar()
|
uwPalettesVar = StringVar()
|
||||||
uwPalettesVar.set('default')
|
uwPalettesVar.set('default')
|
||||||
uwPalettesOptionMenu = OptionMenu(uwPalettesFrame, uwPalettesVar, 'default', 'random', 'blackout')
|
uwPalettesOptionMenu = OptionMenu(uwPalettesFrame, uwPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
uwPalettesOptionMenu.pack(side=LEFT)
|
uwPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
hudPalettesFrame = Frame(romOptionsFrame)
|
||||||
|
hudPalettesFrame.grid(row=4, column=0, sticky=E)
|
||||||
|
hudPalettesLabel = Label(hudPalettesFrame, text='HUD palettes')
|
||||||
|
hudPalettesLabel.pack(side=LEFT)
|
||||||
|
hudPalettesVar = StringVar()
|
||||||
|
hudPalettesVar.set('default')
|
||||||
|
hudPalettesOptionMenu = OptionMenu(hudPalettesFrame, hudPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
hudPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
swordPalettesFrame = Frame(romOptionsFrame)
|
||||||
|
swordPalettesFrame.grid(row=4, column=1, sticky=E)
|
||||||
|
swordPalettesLabel = Label(swordPalettesFrame, text='Sword palettes')
|
||||||
|
swordPalettesLabel.pack(side=LEFT)
|
||||||
|
swordPalettesVar = StringVar()
|
||||||
|
swordPalettesVar.set('default')
|
||||||
|
swordPalettesOptionMenu = OptionMenu(swordPalettesFrame, swordPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
swordPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
shieldPalettesFrame = Frame(romOptionsFrame)
|
||||||
|
shieldPalettesFrame.grid(row=5, column=0, sticky=E)
|
||||||
|
shieldPalettesLabel = Label(shieldPalettesFrame, text='Shield palettes')
|
||||||
|
shieldPalettesLabel.pack(side=LEFT)
|
||||||
|
shieldPalettesVar = StringVar()
|
||||||
|
shieldPalettesVar.set('default')
|
||||||
|
shieldPalettesOptionMenu = OptionMenu(shieldPalettesFrame, shieldPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
shieldPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
romDialogFrame = Frame(romOptionsFrame)
|
romDialogFrame = Frame(romOptionsFrame)
|
||||||
romDialogFrame.grid(row=4, column=0, columnspan=2, sticky=W+E)
|
romDialogFrame.grid(row=6, column=0, columnspan=2, sticky=W+E)
|
||||||
|
|
||||||
baseRomLabel = Label(romDialogFrame, text='Base Rom: ')
|
baseRomLabel = Label(romDialogFrame, text='Base Rom: ')
|
||||||
romVar = StringVar(value="Zelda no Densetsu - Kamigami no Triforce (Japan).sfc")
|
romVar = StringVar(value="Zelda no Densetsu - Kamigami no Triforce (Japan).sfc")
|
||||||
|
@ -538,6 +568,9 @@ def guiMain(args=None):
|
||||||
guiargs.disablemusic = bool(disableMusicVar.get())
|
guiargs.disablemusic = bool(disableMusicVar.get())
|
||||||
guiargs.ow_palettes = owPalettesVar.get()
|
guiargs.ow_palettes = owPalettesVar.get()
|
||||||
guiargs.uw_palettes = uwPalettesVar.get()
|
guiargs.uw_palettes = uwPalettesVar.get()
|
||||||
|
guiargs.hud_palettes = hudPalettesVar.get()
|
||||||
|
guiargs.sword_palettes = swordPalettesVar.get()
|
||||||
|
guiargs.shield_palettes = shieldPalettesVar.get()
|
||||||
guiargs.shuffleganon = bool(shuffleGanonVar.get())
|
guiargs.shuffleganon = bool(shuffleGanonVar.get())
|
||||||
guiargs.hints = bool(hintsVar.get())
|
guiargs.hints = bool(hintsVar.get())
|
||||||
guiargs.enemizercli = enemizerCLIpathVar.get()
|
guiargs.enemizercli = enemizerCLIpathVar.get()
|
||||||
|
@ -702,22 +735,43 @@ def guiMain(args=None):
|
||||||
fastMenuLabel2.pack(side=LEFT)
|
fastMenuLabel2.pack(side=LEFT)
|
||||||
|
|
||||||
owPalettesFrame2 = Frame(drowDownFrame2)
|
owPalettesFrame2 = Frame(drowDownFrame2)
|
||||||
owPalettesOptionMenu2 = OptionMenu(owPalettesFrame2, owPalettesVar, 'default', 'random', 'blackout')
|
owPalettesOptionMenu2 = OptionMenu(owPalettesFrame2, owPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
owPalettesOptionMenu2.pack(side=RIGHT)
|
owPalettesOptionMenu2.pack(side=RIGHT)
|
||||||
owPalettesLabel2 = Label(owPalettesFrame2, text='Overworld palettes')
|
owPalettesLabel2 = Label(owPalettesFrame2, text='Overworld palettes')
|
||||||
owPalettesLabel2.pack(side=LEFT)
|
owPalettesLabel2.pack(side=LEFT)
|
||||||
|
|
||||||
uwPalettesFrame2 = Frame(drowDownFrame2)
|
uwPalettesFrame2 = Frame(drowDownFrame2)
|
||||||
uwPalettesOptionMenu2 = OptionMenu(uwPalettesFrame2, uwPalettesVar, 'default', 'random', 'blackout')
|
uwPalettesOptionMenu2 = OptionMenu(uwPalettesFrame2, uwPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
uwPalettesOptionMenu2.pack(side=RIGHT)
|
uwPalettesOptionMenu2.pack(side=RIGHT)
|
||||||
uwPalettesLabel2 = Label(uwPalettesFrame2, text='Dungeon palettes')
|
uwPalettesLabel2 = Label(uwPalettesFrame2, text='Dungeon palettes')
|
||||||
uwPalettesLabel2.pack(side=LEFT)
|
uwPalettesLabel2.pack(side=LEFT)
|
||||||
|
|
||||||
|
hudPalettesFrame2 = Frame(drowDownFrame2)
|
||||||
|
hudPalettesOptionMenu2 = OptionMenu(hudPalettesFrame2, hudPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
hudPalettesOptionMenu2.pack(side=RIGHT)
|
||||||
|
hudPalettesLabel2 = Label(hudPalettesFrame2, text='HUD palettes')
|
||||||
|
hudPalettesLabel2.pack(side=LEFT)
|
||||||
|
|
||||||
|
swordPalettesFrame2 = Frame(drowDownFrame2)
|
||||||
|
swordPalettesOptionMenu2 = OptionMenu(swordPalettesFrame2, swordPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
swordPalettesOptionMenu2.pack(side=RIGHT)
|
||||||
|
swordPalettesLabel2 = Label(swordPalettesFrame2, text='Sword palettes')
|
||||||
|
swordPalettesLabel2.pack(side=LEFT)
|
||||||
|
|
||||||
|
shieldPalettesFrame2 = Frame(drowDownFrame2)
|
||||||
|
shieldPalettesOptionMenu2 = OptionMenu(shieldPalettesFrame2, shieldPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
shieldPalettesOptionMenu2.pack(side=RIGHT)
|
||||||
|
shieldPalettesLabel2 = Label(shieldPalettesFrame2, text='Shield palettes')
|
||||||
|
shieldPalettesLabel2.pack(side=LEFT)
|
||||||
|
|
||||||
heartbeepFrame2.pack(expand=True, anchor=E)
|
heartbeepFrame2.pack(expand=True, anchor=E)
|
||||||
heartcolorFrame2.pack(expand=True, anchor=E)
|
heartcolorFrame2.pack(expand=True, anchor=E)
|
||||||
fastMenuFrame2.pack(expand=True, anchor=E)
|
fastMenuFrame2.pack(expand=True, anchor=E)
|
||||||
owPalettesFrame2.pack(expand=True, anchor=E)
|
owPalettesFrame2.pack(expand=True, anchor=E)
|
||||||
uwPalettesFrame2.pack(expand=True, anchor=E)
|
uwPalettesFrame2.pack(expand=True, anchor=E)
|
||||||
|
hudPalettesFrame2.pack(expand=True, anchor=E)
|
||||||
|
swordPalettesFrame2.pack(expand=True, anchor=E)
|
||||||
|
shieldPalettesFrame2.pack(expand=True, anchor=E)
|
||||||
|
|
||||||
bottomFrame2 = Frame(topFrame2)
|
bottomFrame2 = Frame(topFrame2)
|
||||||
|
|
||||||
|
@ -728,6 +782,9 @@ def guiMain(args=None):
|
||||||
guiargs.fastmenu = fastMenuVar.get()
|
guiargs.fastmenu = fastMenuVar.get()
|
||||||
guiargs.ow_palettes = owPalettesVar.get()
|
guiargs.ow_palettes = owPalettesVar.get()
|
||||||
guiargs.uw_palettes = uwPalettesVar.get()
|
guiargs.uw_palettes = uwPalettesVar.get()
|
||||||
|
guiargs.hud_palettes = hudPalettesVar.get()
|
||||||
|
guiargs.sword_palettes = swordPalettesVar.get()
|
||||||
|
guiargs.shield_palettes = shieldPalettesVar.get()
|
||||||
guiargs.quickswap = bool(quickSwapVar.get())
|
guiargs.quickswap = bool(quickSwapVar.get())
|
||||||
guiargs.disablemusic = bool(disableMusicVar.get())
|
guiargs.disablemusic = bool(disableMusicVar.get())
|
||||||
guiargs.rom = romVar2.get()
|
guiargs.rom = romVar2.get()
|
||||||
|
|
13
Main.py
13
Main.py
|
@ -36,7 +36,7 @@ def main(args, seed=None):
|
||||||
if args.outputpath:
|
if args.outputpath:
|
||||||
os.makedirs(args.outputpath, exist_ok=True)
|
os.makedirs(args.outputpath, exist_ok=True)
|
||||||
output_path.cached_path = args.outputpath
|
output_path.cached_path = args.outputpath
|
||||||
|
|
||||||
start = time.perf_counter()
|
start = time.perf_counter()
|
||||||
|
|
||||||
# initialize the world
|
# initialize the world
|
||||||
|
@ -192,9 +192,18 @@ def main(args, seed=None):
|
||||||
|
|
||||||
world.spoiler.hashes[(player, team)] = get_hash_string(rom.hash)
|
world.spoiler.hashes[(player, team)] = get_hash_string(rom.hash)
|
||||||
|
|
||||||
|
palettes_options={}
|
||||||
|
palettes_options['dungeon']=args.uw_palettes[player]
|
||||||
|
palettes_options['overworld']=args.ow_palettes[player]
|
||||||
|
palettes_options['hud']=args.hud_palettes[player]
|
||||||
|
palettes_options['sword']=args.sword_palettes[player]
|
||||||
|
palettes_options['shield']=args.shield_palettes[player]
|
||||||
|
palettes_options['link']=args.link_palettes[player]
|
||||||
|
|
||||||
apply_rom_settings(rom, args.heartbeep[player], args.heartcolor[player], args.quickswap[player],
|
apply_rom_settings(rom, args.heartbeep[player], args.heartcolor[player], args.quickswap[player],
|
||||||
args.fastmenu[player], args.disablemusic[player], args.sprite[player],
|
args.fastmenu[player], args.disablemusic[player], args.sprite[player],
|
||||||
args.ow_palettes[player], args.uw_palettes[player], world, player, True)
|
palettes_options, world, player, True)
|
||||||
|
|
||||||
|
|
||||||
mcsb_name = ''
|
mcsb_name = ''
|
||||||
if all([world.mapshuffle[player], world.compassshuffle[player], world.keyshuffle[player],
|
if all([world.mapshuffle[player], world.compassshuffle[player], world.keyshuffle[player],
|
||||||
|
|
|
@ -516,6 +516,11 @@ def roll_settings(weights):
|
||||||
ret.heartbeep = convert_to_on_off(get_choice('heartbeep', romweights, "normal"))
|
ret.heartbeep = convert_to_on_off(get_choice('heartbeep', romweights, "normal"))
|
||||||
ret.ow_palettes = get_choice('ow_palettes', romweights, "default")
|
ret.ow_palettes = get_choice('ow_palettes', romweights, "default")
|
||||||
ret.uw_palettes = get_choice('uw_palettes', romweights, "default")
|
ret.uw_palettes = get_choice('uw_palettes', romweights, "default")
|
||||||
|
ret.hud_palettes = get_choice('hud_palettes', romweights, "default")
|
||||||
|
ret.sword_palettes = get_choice('sword_palettes', romweights, "default")
|
||||||
|
ret.shield_palettes = get_choice('shield_palettes', romweights, "default")
|
||||||
|
ret.link_palettes = get_choice('link_palettes', romweights, "default")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
ret.quickswap = True
|
ret.quickswap = True
|
||||||
ret.sprite = "Link"
|
ret.sprite = "Link"
|
||||||
|
|
72
Rom.py
72
Rom.py
|
@ -37,15 +37,19 @@ except:
|
||||||
|
|
||||||
class LocalRom(object):
|
class LocalRom(object):
|
||||||
|
|
||||||
def __init__(self, file, patch=True, name=None, hash=None):
|
def __init__(self, file, patch=True, vanillaRom=None, name=None, hash=None):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.hash = hash
|
self.hash = hash
|
||||||
self.orig_buffer = None
|
self.orig_buffer = None
|
||||||
|
|
||||||
with open(file, 'rb') as stream:
|
with open(file, 'rb') as stream:
|
||||||
self.buffer = read_rom(stream)
|
self.buffer = read_rom(stream)
|
||||||
if patch:
|
if patch:
|
||||||
self.patch_base_rom()
|
self.patch_base_rom()
|
||||||
self.orig_buffer = self.buffer.copy()
|
self.orig_buffer = self.buffer.copy()
|
||||||
|
if vanillaRom:
|
||||||
|
with open(vanillaRom, 'rb') as vanillaStream:
|
||||||
|
self.orig_buffer = read_rom(vanillaStream)
|
||||||
|
|
||||||
def read_byte(self, address: int) -> int:
|
def read_byte(self, address: int) -> int:
|
||||||
return self.buffer[address]
|
return self.buffer[address]
|
||||||
|
@ -1045,7 +1049,7 @@ def patch_rom(world, rom, player, team, enemized):
|
||||||
rom.write_byte(0x180211, gametype) # Game type
|
rom.write_byte(0x180211, gametype) # Game type
|
||||||
|
|
||||||
# assorted fixes
|
# assorted fixes
|
||||||
rom.write_byte(0x1800A2, 0x01 if world.fix_fake_world[player] else 0x00) # Toggle whether to be in real/fake dark world when dying in a DW dungeon before killing aga1
|
rom.write_byte(0x1800A2, 0x01 if world.fix_fake_world[player] else 0x00) # Toggle whether to be in real/fake dark world when dying in a DW dungeon before killing aga1
|
||||||
rom.write_byte(0x180169, 0x01 if world.lock_aga_door_in_escape else 0x00) # Lock or unlock aga tower door during escape sequence.
|
rom.write_byte(0x180169, 0x01 if world.lock_aga_door_in_escape else 0x00) # Lock or unlock aga tower door during escape sequence.
|
||||||
if world.mode[player] == 'inverted':
|
if world.mode[player] == 'inverted':
|
||||||
rom.write_byte(0x180169, 0x02) # lock aga/ganon tower door with crystals in inverted
|
rom.write_byte(0x180169, 0x02) # lock aga/ganon tower door with crystals in inverted
|
||||||
|
@ -1507,7 +1511,9 @@ def hud_format_text(text):
|
||||||
return output[:32]
|
return output[:32]
|
||||||
|
|
||||||
|
|
||||||
def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, sprite, ow_palettes, uw_palettes, world=None, player=1, allow_random_on_event=False):
|
|
||||||
|
def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, sprite, palettes_options, world=None, player=1, allow_random_on_event=False):
|
||||||
|
|
||||||
local_random = random if not world else world.rom_seeds[player]
|
local_random = random if not world else world.rom_seeds[player]
|
||||||
apply_random_sprite_on_event(rom, sprite, local_random, allow_random_on_event, world.sprite_pool[player] if world else [])
|
apply_random_sprite_on_event(rom, sprite, local_random, allow_random_on_event, world.sprite_pool[player] if world else [])
|
||||||
|
|
||||||
|
@ -1560,27 +1566,51 @@ def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, spr
|
||||||
rom.write_byte(0x6FA30, {'red': 0x24, 'blue': 0x2C, 'green': 0x3C, 'yellow': 0x28}[color])
|
rom.write_byte(0x6FA30, {'red': 0x24, 'blue': 0x2C, 'green': 0x3C, 'yellow': 0x28}[color])
|
||||||
rom.write_byte(0x65561, {'red': 0x05, 'blue': 0x0D, 'green': 0x19, 'yellow': 0x09}[color])
|
rom.write_byte(0x65561, {'red': 0x05, 'blue': 0x0D, 'green': 0x19, 'yellow': 0x09}[color])
|
||||||
|
|
||||||
# reset palette if it was adjusted already
|
|
||||||
default_ow_palettes(rom)
|
# write link sprite if required
|
||||||
default_uw_palettes(rom)
|
if sprite:
|
||||||
|
sprite.write_to_rom(rom)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if z3pr:
|
if z3pr:
|
||||||
options = {
|
def buildAndRandomize(option_name,mode):
|
||||||
"randomize_dungeon": uw_palettes == 'random',
|
options = {
|
||||||
"randomize_overworld": ow_palettes == 'random'
|
option_name : True
|
||||||
}
|
}
|
||||||
if any(options.values()):
|
|
||||||
data_dir = local_path("data") if is_bundled() else None
|
data_dir = local_path("data") if is_bundled() else None
|
||||||
offsets_array = build_offset_collections(options, data_dir)
|
offsets_array = build_offset_collections(options, data_dir)
|
||||||
|
restore_maseya_colors(rom,offsets_array)
|
||||||
|
if mode == 'default':
|
||||||
|
return
|
||||||
ColorF = z3pr.ColorF
|
ColorF = z3pr.ColorF
|
||||||
|
|
||||||
def next_color_generator():
|
def next_color_generator():
|
||||||
while True:
|
while True:
|
||||||
yield ColorF(local_random.random(), local_random.random(), local_random.random())
|
yield ColorF(local_random.random(), local_random.random(), local_random.random())
|
||||||
|
if mode == 'random':
|
||||||
|
mode = 'maseya'
|
||||||
|
z3pr.randomize(rom.buffer, mode, offset_collections=offsets_array, random_colors=next_color_generator())
|
||||||
|
|
||||||
|
uw_palettes=palettes_options['dungeon']
|
||||||
|
ow_palettes=palettes_options['overworld']
|
||||||
|
hud_palettes=palettes_options['hud']
|
||||||
|
sword_palettes=palettes_options['sword']
|
||||||
|
shield_palettes=palettes_options['shield']
|
||||||
|
link_palettes=palettes_options['link']
|
||||||
|
buildAndRandomize("randomize_dungeon", uw_palettes)
|
||||||
|
buildAndRandomize("randomize_overworld", ow_palettes)
|
||||||
|
buildAndRandomize("randomize_hud", hud_palettes)
|
||||||
|
buildAndRandomize("randomize_sword", sword_palettes)
|
||||||
|
buildAndRandomize("randomize_shield", shield_palettes)
|
||||||
|
#link palette shuffle does not work very well and it's incompatible with random sprite on event
|
||||||
|
#buildAndRandomize("randomize_link_sprite", link_palettes)
|
||||||
|
|
||||||
z3pr.randomize(rom.buffer, "maseya", offset_collections=offsets_array, random_colors=next_color_generator())
|
|
||||||
else:
|
else:
|
||||||
|
# reset palette if it was adjusted already
|
||||||
|
default_ow_palettes(rom)
|
||||||
|
default_uw_palettes(rom)
|
||||||
logging.warning("Could not find z3pr palette shuffle. "
|
logging.warning("Could not find z3pr palette shuffle. "
|
||||||
"If you want improved palette shuffling please install the maseya-z3pr package.")
|
"If you want improved palette shuffling please install the maseya-z3pr package.")
|
||||||
if ow_palettes == 'random':
|
if ow_palettes == 'random':
|
||||||
|
@ -1588,14 +1618,20 @@ def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, spr
|
||||||
if uw_palettes == 'random':
|
if uw_palettes == 'random':
|
||||||
randomize_uw_palettes(rom, local_random)
|
randomize_uw_palettes(rom, local_random)
|
||||||
|
|
||||||
if ow_palettes == 'blackout':
|
if ow_palettes == 'blackout':
|
||||||
blackout_ow_palettes(rom)
|
blackout_ow_palettes(rom)
|
||||||
if uw_palettes == 'blackout':
|
if uw_palettes == 'blackout':
|
||||||
blackout_uw_palettes(rom)
|
blackout_uw_palettes(rom)
|
||||||
|
|
||||||
if isinstance(rom, LocalRom):
|
if isinstance(rom, LocalRom):
|
||||||
rom.write_crc()
|
rom.write_crc()
|
||||||
|
|
||||||
|
def restore_maseya_colors(rom,offsets_array):
|
||||||
|
if not rom.orig_buffer:
|
||||||
|
return
|
||||||
|
for offsetC in offsets_array:
|
||||||
|
for address in offsetC:
|
||||||
|
rom.write_bytes(address, rom.orig_buffer[address:address+2])
|
||||||
|
|
||||||
def set_color(rom, address, color, shade):
|
def set_color(rom, address, color, shade):
|
||||||
r = round(min(color[0], 0xFF) * pow(0.8, shade) * 0x1F / 0xFF)
|
r = round(min(color[0], 0xFF) * pow(0.8, shade) * 0x1F / 0xFF)
|
||||||
|
|
|
@ -1469,6 +1469,42 @@
|
||||||
"friendlyName": "Blackout",
|
"friendlyName": "Blackout",
|
||||||
"description": "Never use this. Makes all overworld palette colors black.",
|
"description": "Never use this. Makes all overworld palette colors black.",
|
||||||
"defaultValue": 0
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"grayscale": {
|
||||||
|
"keyString": "rom.ow_palettes.grayscale",
|
||||||
|
"friendlyName": "Grayscale",
|
||||||
|
"description": "Removes all saturation of colors.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"keyString": "rom.ow_palettes.negative",
|
||||||
|
"friendlyName": "Negative",
|
||||||
|
"description": "Invert all colors",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"classic": {
|
||||||
|
"keyString": "rom.ow_palettes.classic",
|
||||||
|
"friendlyName": "Classic",
|
||||||
|
"description": "Produces results similar to the website.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"dizzy": {
|
||||||
|
"keyString": "rom.ow_palettes.dizzy",
|
||||||
|
"friendlyName": "Dizzy",
|
||||||
|
"description": "No logic in colors but saturation and lightness are conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"sick": {
|
||||||
|
"keyString": "rom.ow_palettes.sick",
|
||||||
|
"friendlyName": "Sick",
|
||||||
|
"description": "No logic in colors but lightness is conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"puke": {
|
||||||
|
"keyString": "rom.ow_palettes.Puke",
|
||||||
|
"friendlyName": "Puke",
|
||||||
|
"description": "No logic at all.",
|
||||||
|
"defaultValue": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1495,6 +1531,228 @@
|
||||||
"friendlyName": "Blackout",
|
"friendlyName": "Blackout",
|
||||||
"description": "Never use this. Makes all underworld palette colors black.",
|
"description": "Never use this. Makes all underworld palette colors black.",
|
||||||
"defaultValue": 0
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"grayscale": {
|
||||||
|
"keyString": "rom.uw_palettes.grayscale",
|
||||||
|
"friendlyName": "Grayscale",
|
||||||
|
"description": "Removes all saturation of colors.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"keyString": "rom.uw_palettes.negative",
|
||||||
|
"friendlyName": "Negative",
|
||||||
|
"description": "Invert all colors",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"classic": {
|
||||||
|
"keyString": "rom.uw_palettes.classic",
|
||||||
|
"friendlyName": "Classic",
|
||||||
|
"description": "Produces results similar to the website.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"dizzy": {
|
||||||
|
"keyString": "rom.uw_palettes.dizzy",
|
||||||
|
"friendlyName": "Dizzy",
|
||||||
|
"description": "No logic in colors but saturation and lightness are conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"sick": {
|
||||||
|
"keyString": "rom.uw_palettes.sick",
|
||||||
|
"friendlyName": "Sick",
|
||||||
|
"description": "No logic in colors but lightness is conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"puke": {
|
||||||
|
"keyString": "rom.uw_palettes.Puke",
|
||||||
|
"friendlyName": "Puke",
|
||||||
|
"description": "No logic at all.",
|
||||||
|
"defaultValue": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hud_palettes": {
|
||||||
|
"keyString": "rom.hud_palettes",
|
||||||
|
"friendlyName": "Underworld Palettes",
|
||||||
|
"description": "Randomize the colors of the underworld (caves, dungeons, etc.), within reason.",
|
||||||
|
"inputType": "range",
|
||||||
|
"subOptions": {
|
||||||
|
"default": {
|
||||||
|
"keyString": "rom.hud_palettes.default",
|
||||||
|
"friendlyName": "Vanilla",
|
||||||
|
"description": "Overworld colors will remain unchanged.",
|
||||||
|
"defaultValue": 50
|
||||||
|
},
|
||||||
|
"random": {
|
||||||
|
"keyString": "rom.hud_palettes.random",
|
||||||
|
"friendlyName": "Random",
|
||||||
|
"description": "Shuffles the colors of the overworld palette.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"blackout": {
|
||||||
|
"keyString": "rom.hud_palettes.blackout",
|
||||||
|
"friendlyName": "Blackout",
|
||||||
|
"description": "Never use this. Makes all overworld palette colors black.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"grayscale": {
|
||||||
|
"keyString": "rom.hud_palettes.grayscale",
|
||||||
|
"friendlyName": "Grayscale",
|
||||||
|
"description": "Removes all saturation of colors.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"keyString": "rom.hud_palettes.negative",
|
||||||
|
"friendlyName": "Negative",
|
||||||
|
"description": "Invert all colors",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"classic": {
|
||||||
|
"keyString": "rom.hud_palettes.classic",
|
||||||
|
"friendlyName": "Classic",
|
||||||
|
"description": "Produces results similar to the website.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"dizzy": {
|
||||||
|
"keyString": "rom.hud_palettes.dizzy",
|
||||||
|
"friendlyName": "Dizzy",
|
||||||
|
"description": "No logic in colors but saturation and lightness are conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"sick": {
|
||||||
|
"keyString": "rom.hud_palettes.sick",
|
||||||
|
"friendlyName": "Sick",
|
||||||
|
"description": "No logic in colors but lightness is conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"puke": {
|
||||||
|
"keyString": "rom.hud_palettes.Puke",
|
||||||
|
"friendlyName": "Puke",
|
||||||
|
"description": "No logic at all.",
|
||||||
|
"defaultValue": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shield_palettes": {
|
||||||
|
"keyString": "rom.shield_palettes",
|
||||||
|
"friendlyName": "Underworld Palettes",
|
||||||
|
"description": "Randomize the colors of the underworld (caves, dungeons, etc.), within reason.",
|
||||||
|
"inputType": "range",
|
||||||
|
"subOptions": {
|
||||||
|
"default": {
|
||||||
|
"keyString": "rom.shield_palettes.default",
|
||||||
|
"friendlyName": "Vanilla",
|
||||||
|
"description": "Overworld colors will remain unchanged.",
|
||||||
|
"defaultValue": 50
|
||||||
|
},
|
||||||
|
"random": {
|
||||||
|
"keyString": "rom.shield_palettes.random",
|
||||||
|
"friendlyName": "Random",
|
||||||
|
"description": "Shuffles the colors of the overworld palette.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"blackout": {
|
||||||
|
"keyString": "rom.shield_palettes.blackout",
|
||||||
|
"friendlyName": "Blackout",
|
||||||
|
"description": "Never use this. Makes all overworld palette colors black.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"grayscale": {
|
||||||
|
"keyString": "rom.shield_palettes.grayscale",
|
||||||
|
"friendlyName": "Grayscale",
|
||||||
|
"description": "Removes all saturation of colors.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"keyString": "rom.shield_palettes.negative",
|
||||||
|
"friendlyName": "Negative",
|
||||||
|
"description": "Invert all colors",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"classic": {
|
||||||
|
"keyString": "rom.shield_palettes.classic",
|
||||||
|
"friendlyName": "Classic",
|
||||||
|
"description": "Produces results similar to the website.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"dizzy": {
|
||||||
|
"keyString": "rom.shield_palettes.dizzy",
|
||||||
|
"friendlyName": "Dizzy",
|
||||||
|
"description": "No logic in colors but saturation and lightness are conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"sick": {
|
||||||
|
"keyString": "rom.shield_palettes.sick",
|
||||||
|
"friendlyName": "Sick",
|
||||||
|
"description": "No logic in colors but lightness is conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"puke": {
|
||||||
|
"keyString": "rom.shield_palettes.Puke",
|
||||||
|
"friendlyName": "Puke",
|
||||||
|
"description": "No logic at all.",
|
||||||
|
"defaultValue": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sword_palettes": {
|
||||||
|
"keyString": "rom.sword_palettes",
|
||||||
|
"friendlyName": "Underworld Palettes",
|
||||||
|
"description": "Randomize the colors of the underworld (caves, dungeons, etc.), within reason.",
|
||||||
|
"inputType": "range",
|
||||||
|
"subOptions": {
|
||||||
|
"default": {
|
||||||
|
"keyString": "rom.sword_palettes.default",
|
||||||
|
"friendlyName": "Vanilla",
|
||||||
|
"description": "Overworld colors will remain unchanged.",
|
||||||
|
"defaultValue": 50
|
||||||
|
},
|
||||||
|
"random": {
|
||||||
|
"keyString": "rom.sword_palettes.random",
|
||||||
|
"friendlyName": "Random",
|
||||||
|
"description": "Shuffles the colors of the overworld palette.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"blackout": {
|
||||||
|
"keyString": "rom.sword_palettes.blackout",
|
||||||
|
"friendlyName": "Blackout",
|
||||||
|
"description": "Never use this. Makes all overworld palette colors black.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"grayscale": {
|
||||||
|
"keyString": "rom.sword_palettes.grayscale",
|
||||||
|
"friendlyName": "Grayscale",
|
||||||
|
"description": "Removes all saturation of colors.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"keyString": "rom.sword_palettes.negative",
|
||||||
|
"friendlyName": "Negative",
|
||||||
|
"description": "Invert all colors",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"classic": {
|
||||||
|
"keyString": "rom.sword_palettes.classic",
|
||||||
|
"friendlyName": "Classic",
|
||||||
|
"description": "Produces results similar to the website.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"dizzy": {
|
||||||
|
"keyString": "rom.sword_palettes.dizzy",
|
||||||
|
"friendlyName": "Dizzy",
|
||||||
|
"description": "No logic in colors but saturation and lightness are conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"sick": {
|
||||||
|
"keyString": "rom.sword_palettes.sick",
|
||||||
|
"friendlyName": "Sick",
|
||||||
|
"description": "No logic in colors but lightness is conserved.",
|
||||||
|
"defaultValue": 0
|
||||||
|
},
|
||||||
|
"puke": {
|
||||||
|
"keyString": "rom.sword_palettes.Puke",
|
||||||
|
"friendlyName": "Puke",
|
||||||
|
"description": "No logic at all.",
|
||||||
|
"defaultValue": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,7 +355,49 @@ rom:
|
||||||
default: 50 # No changes
|
default: 50 # No changes
|
||||||
random: 0 # Shuffle the colors
|
random: 0 # Shuffle the colors
|
||||||
blackout: 0 # Never use this
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
||||||
uw_palettes: # Change the colors of caves and dungeons
|
uw_palettes: # Change the colors of caves and dungeons
|
||||||
default: 50 # No changes
|
default: 50 # No changes
|
||||||
random: 0 # Shuffle the colors
|
random: 0 # Shuffle the colors
|
||||||
blackout: 0 # Never use this
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
||||||
|
hud_palettes: # Change the colors of the hud
|
||||||
|
default: 50 # No changes
|
||||||
|
random: 0 # Shuffle the colors
|
||||||
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
||||||
|
sword_palettes: # Change the colors of swords
|
||||||
|
default: 50 # No changes
|
||||||
|
random: 0 # Shuffle the colors
|
||||||
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
||||||
|
uw_palettes: # Change the colors of shields
|
||||||
|
default: 50 # No changes
|
||||||
|
random: 0 # Shuffle the colors
|
||||||
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
|
@ -369,7 +369,49 @@ rom:
|
||||||
default: 50 # No changes
|
default: 50 # No changes
|
||||||
random: 0 # Shuffle the colors
|
random: 0 # Shuffle the colors
|
||||||
blackout: 0 # Never use this
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
||||||
uw_palettes: # Change the colors of caves and dungeons
|
uw_palettes: # Change the colors of caves and dungeons
|
||||||
default: 50 # No changes
|
default: 50 # No changes
|
||||||
random: 0 # Shuffle the colors
|
random: 0 # Shuffle the colors
|
||||||
blackout: 0 # Never use this
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
||||||
|
hud_palettes: # Change the colors of the hud
|
||||||
|
default: 50 # No changes
|
||||||
|
random: 0 # Shuffle the colors
|
||||||
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
||||||
|
sword_palettes: # Change the colors of swords
|
||||||
|
default: 50 # No changes
|
||||||
|
random: 0 # Shuffle the colors
|
||||||
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
||||||
|
uw_palettes: # Change the colors of shields
|
||||||
|
default: 50 # No changes
|
||||||
|
random: 0 # Shuffle the colors
|
||||||
|
blackout: 0 # Never use this
|
||||||
|
grayscale: 0
|
||||||
|
negative: 0
|
||||||
|
classic: 0
|
||||||
|
dizzy: 0
|
||||||
|
sick: 0
|
||||||
|
puke: 0
|
Loading…
Reference in New Issue