Skip to content

Commit a23a6f1

Browse files
committed
Colored pads and barrels
1 parent 203e021 commit a23a6f1

File tree

14 files changed

+196
-36
lines changed

14 files changed

+196
-36
lines changed

base-hack/Build/BuildEnums.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -922,7 +922,14 @@ class ExtraTextures(IntEnum):
922922
SpecialAPPearlSilver = auto()
923923
FoolsAPPearlBlack = auto()
924924
FoolsAPPearlSilver = auto()
925-
925+
DonkeyPadLeft = auto()
926+
DonkeyPadRight = auto()
927+
DiddyPadLeft = auto()
928+
DiddyPadRight = auto()
929+
LankyPadLeft = auto()
930+
LankyPadRight = auto()
931+
ChunkyPadLeft = auto()
932+
ChunkyPadRight = auto()
926933

927934
class MoveTypes(IntEnum):
928935
"""Move Types Enum."""

base-hack/Build/build.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1916,6 +1916,30 @@
19161916
)
19171917
)
19181918

1919+
# Pads
1920+
pad_data = {
1921+
"donkey_pad_left": ExtraTextures.DonkeyPadLeft,
1922+
"donkey_pad_right": ExtraTextures.DonkeyPadRight,
1923+
"diddy_pad_left": ExtraTextures.DiddyPadLeft,
1924+
"diddy_pad_right": ExtraTextures.DiddyPadRight,
1925+
"lanky_pad_left": ExtraTextures.LankyPadLeft,
1926+
"lanky_pad_right": ExtraTextures.LankyPadRight,
1927+
"chunky_pad_left": ExtraTextures.ChunkyPadLeft,
1928+
"chunky_pad_right": ExtraTextures.ChunkyPadRight,
1929+
}
1930+
1931+
for tex, index in pad_data.items():
1932+
file_dict.append(
1933+
File(
1934+
name=f"Pad ({int(index)})",
1935+
pointer_table_index=TableNames.TexturesGeometry,
1936+
file_index=getBonusSkinOffset(index),
1937+
source_file=f"assets/displays/{tex}.png",
1938+
texture_format=TextureFormat.RGBA5551,
1939+
do_not_extract=True,
1940+
)
1941+
)
1942+
19191943
# Force all geo files to not be compressed
19201944
expanded_tables = {
19211945
TableNames.MapGeometry: list(range(216)),
@@ -2484,6 +2508,14 @@
24842508
"white_special_chars",
24852509
"blank",
24862510
"fakefairy",
2511+
"donkey_pad_left",
2512+
"donkey_pad_right",
2513+
"diddy_pad_left",
2514+
"diddy_pad_right",
2515+
"lanky_pad_left",
2516+
"lanky_pad_right",
2517+
"chunky_pad_left",
2518+
"chunky_pad_right",
24872519
]
24882520
for b in barrel_skins:
24892521
displays.extend([f"barrel_{b}_0", f"barrel_{b}_1", f"dirt_reward_{b}", f"shop_{b}"])

base-hack/Build/createComplexImages.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,54 @@ def bump_saturation(image: Image, factor: float) -> Image:
656656
px[x, y] = (0, 0, 0, 0) # fully transparent
657657
font_im.save(f"{disp_dir}white_special_chars.png")
658658

659+
pad_warp_eq = {
660+
"donkey": 5,
661+
"diddy": 4,
662+
"lanky": 1,
663+
"chunky": 2,
664+
}
665+
def pointInPolygon(x, y, polygon):
666+
"""Define whether an xy point is within a concave or concave polygon."""
667+
inside = False
668+
n = len(polygon)
669+
670+
j = n - 1
671+
for i in range(n):
672+
xi, yi = polygon[i]
673+
xj, yj = polygon[j]
674+
675+
intersect = ((yi > y) != (yj > y)) and \
676+
(x < (xj - xi) * (y - yi) / (yj - yi) + xi)
677+
678+
if intersect:
679+
inside = not inside
680+
681+
j = i
682+
683+
return inside
684+
685+
for kong, eq_warp in pad_warp_eq.items():
686+
for seg in ("left", "right"):
687+
pad_im = Image.open(f"{hash_dir}ins_pad_{seg}.png")
688+
color_im = Image.open(f"{hash_dir}w{eq_warp}_pad_{seg}.png")
689+
apexes = [
690+
[32, 6],
691+
[12, 14],
692+
[6, 32],
693+
[13, 50],
694+
[32, 58],
695+
]
696+
if seg == "right":
697+
for i, a in enumerate(apexes):
698+
apexes[i][0] = 32 - apexes[i][0]
699+
px = pad_im.load()
700+
c_px = color_im.load()
701+
for y in range(64):
702+
for x in range(32):
703+
if pointInPolygon(x, y, apexes):
704+
px[x, y] = c_px[x, y]
705+
pad_im.save(f"{disp_dir}{kong}_pad_{seg}.png")
706+
659707
# AP Pearls
660708
ap_colors = [
661709
"#FB9152", # ORANGE
@@ -932,6 +980,16 @@ def alterWood(image):
932980
"funky_face_3.png",
933981
"snide_face.png",
934982
"white_special_chars.png",
983+
"ins_pad_left.png",
984+
"ins_pad_right.png",
985+
"w5_pad_left.png",
986+
"w5_pad_right.png",
987+
"w4_pad_left.png",
988+
"w4_pad_right.png",
989+
"w1_pad_left.png",
990+
"w1_pad_right.png",
991+
"w2_pad_left.png",
992+
"w2_pad_right.png",
935993
]
936994
for kong in kongs:
937995
for x in range(2):

base-hack/Build/getModelSkeleton.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,7 @@ def getSkeleton(model_index: int, model_file: str = None):
101101
file_name = f"./skeleton/model_{model_file.replace('.bin','').replace('../','')}.png"
102102
image.save(file_name)
103103

104-
105-
getSkeleton(3)
106-
getSkeleton(0x10)
107-
getSkeleton(0x48)
108-
getSkeleton(0x67)
109-
getSkeleton(0xDA)
110-
getSkeleton(8)
111-
getSkeleton(0x12)
112-
getSkeleton(0x11)
104+
for x in range(0xEC):
105+
if x in (68,132,151,213):
106+
continue
107+
getSkeleton(x)

base-hack/Build/pull_images_from_rom.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@ def __init__(self, name: str, format: str, table: int, index: int, width: int, h
120120
ImageData("bandit_coconut", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0x12E3, 40, 51, False, False),
121121
ImageData("bandit_melon", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0x12E4, 48, 42, False, False),
122122
ImageData("bandit_pineapple", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0x12E5, 32, 48, False, False),
123+
ImageData("ins_pad_left", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xBC5, 32, 64, False, False),
124+
ImageData("ins_pad_right", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xBC4, 32, 64, False, False),
125+
ImageData("w5_pad_left", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xDEE, 32, 64, False, False),
126+
ImageData("w5_pad_right", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xDEF, 32, 64, False, False),
127+
ImageData("w4_pad_left", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xDF4, 32, 64, False, False),
128+
ImageData("w4_pad_right", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xDF5, 32, 64, False, False),
129+
ImageData("w1_pad_left", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xDF9, 32, 64, False, False),
130+
ImageData("w1_pad_right", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xDFA, 32, 64, False, False),
131+
ImageData("w2_pad_left", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xDF6, 32, 64, False, False),
132+
ImageData("w2_pad_right", TextureFormat.RGBA5551, TableNames.TexturesGeometry, 0xDF7, 32, 64, False, False),
123133
]
124134

125135
shop_owners = {

randomizer/Patching/ASMPatcher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1924,7 +1924,7 @@ def patchAssembly(ROM_COPY, spoiler):
19241924
writeFunction(ROM_COPY, 0x8002B6F8, Overlay.Bonus, "playBonusSong", offset_dict)
19251925
writeFunction(ROM_COPY, 0x8002C6D8, Overlay.Bonus, "playBonusSong", offset_dict)
19261926
writeFunction(ROM_COPY, 0x80025300, Overlay.Minecart, "playBonusSong", offset_dict)
1927-
writeFunction(ROM_COPY, 0x8002936C, Overlay.Menu, "playBonusSong", offset_dict)
1927+
writeFunction(ROM_COPY, 0x8002936C, Overlay.Critter, "playBonusSong", offset_dict)
19281928
writeFunction(ROM_COPY, 0x806BBAC8, Overlay.Static, "playBossSong", offset_dict)
19291929
writeFunction(ROM_COPY, 0x805FED60, Overlay.Static, "playSongWCheck", offset_dict)
19301930
writeFunction(ROM_COPY, 0x8061E280, Overlay.Static, "playSongWCheck", offset_dict)

randomizer/Patching/Cosmetics/Holiday.py

Lines changed: 70 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,40 @@
1414
hueShift,
1515
hueShiftImageContainer,
1616
)
17-
from randomizer.Patching.Library.Assets import getPointerLocation, TableNames
17+
from randomizer.Patching.Library.Assets import getPointerLocation, TableNames, getRawFile, writeRawFile
1818
from randomizer.Settings import CharacterColors, KongModels, ColorOptions
1919

2020

21-
def changeBarrelColor(settings, ROM_COPY: ROM, barrel_color: tuple = None, metal_color: tuple = None, brighten_barrel: bool = False):
21+
def changeBarrelColor(settings, ROM_COPY: ROM, barrel_color: list[tuple] = [None] * 6, metal_color: tuple = None, brighten_barrel: bool = False):
2222
"""Change the colors of the various barrels."""
23+
if settings.color_coded_powerups:
24+
barrel_color = [
25+
(0xFF, 0xD7, 0x00),
26+
(0xFF, 0x00, 0x00),
27+
(0x16, 0x99, 0xFF),
28+
(0xB0, 0x45, 0xFF),
29+
(0x41, 0xFF, 0x25),
30+
barrel_color[5],
31+
]
2332
wood_img = getImageFile(ROM_COPY, 25, getBonusSkinOffset(ExtraTextures.ShellWood), True, 32, 64, TextureFormat.RGBA5551)
2433
metal_img = getImageFile(ROM_COPY, 25, getBonusSkinOffset(ExtraTextures.ShellMetal), True, 32, 64, TextureFormat.RGBA5551)
2534
qmark_img = getImageFile(ROM_COPY, 25, getBonusSkinOffset(ExtraTextures.ShellQMark), True, 32, 64, TextureFormat.RGBA5551)
26-
if barrel_color is not None:
27-
if brighten_barrel:
28-
enhancer = ImageEnhance.Brightness(wood_img)
29-
wood_img = enhancer.enhance(2)
30-
wood_img = maskImageWithColor(wood_img, barrel_color)
35+
wood_imgs = []
36+
for x in range(6):
37+
wood_tmp = wood_img
38+
if barrel_color[x] is not None:
39+
if brighten_barrel:
40+
enhancer = ImageEnhance.Brightness(wood_tmp)
41+
wood_tmp = enhancer.enhance(2)
42+
wood_tmp = maskImageWithColor(wood_tmp, barrel_color[x])
43+
wood_imgs.append(wood_tmp)
3144
if metal_color is not None:
3245
metal_img = maskImageWithColor(metal_img, metal_color)
33-
wood_img.paste(metal_img, (0, 0), metal_img)
34-
writeColorImageToROM(wood_img, 25, getBonusSkinOffset(ExtraTextures.BonusShell), 32, 64, False, TextureFormat.RGBA5551, ROM_COPY) # Bonus Barrel
46+
for x in range(6):
47+
wood_imgs[x].paste(metal_img, (0, 0), metal_img)
48+
writeColorImageToROM(wood_imgs[5], 25, getBonusSkinOffset(ExtraTextures.BonusShell), 32, 64, False, TextureFormat.RGBA5551, ROM_COPY) # Bonus Barrel
3549
tag_img = Image.new(mode="RGBA", size=(32, 64))
36-
tag_img.paste(wood_img, (0, 0), wood_img)
50+
tag_img.paste(wood_imgs[5], (0, 0), wood_imgs[5])
3751
tag_img.paste(qmark_img, (0, 0), qmark_img)
3852
writeColorImageToROM(tag_img, 25, 4938, 32, 64, False, TextureFormat.RGBA5551, ROM_COPY) # Tag Barrel
3953
# Compose Transform Barrels
@@ -44,7 +58,7 @@ def changeBarrelColor(settings, ROM_COPY: ROM, barrel_color: tuple = None, metal
4458
{"face_left": 0x276, "face_right": 0x275, "barrel_tex_start": 4769, "targ_width": 24}, # Tiny
4559
{"face_left": 0x273, "face_right": 0x274, "barrel_tex_start": 4747, "targ_width": 24}, # Chunky
4660
]
47-
for kong in kongs:
61+
for kong_index, kong in enumerate(kongs):
4862
bar_left = Image.new(mode="RGBA", size=(32, 64))
4963
bar_right = Image.new(mode="RGBA", size=(32, 64))
5064
face_left = getImageFile(ROM_COPY, 25, kong["face_left"], True, 32, 64, TextureFormat.RGBA5551)
@@ -55,22 +69,22 @@ def changeBarrelColor(settings, ROM_COPY: ROM, barrel_color: tuple = None, metal
5569
face_right = face_right.resize((width, height))
5670
right_w_offset = 32 - width
5771
top_h_offset = (64 - height) >> 1
58-
bar_left.paste(wood_img, (0, 0), wood_img)
59-
bar_right.paste(wood_img, (0, 0), wood_img)
72+
bar_left.paste(wood_imgs[kong_index], (0, 0), wood_imgs[kong_index])
73+
bar_right.paste(wood_imgs[kong_index], (0, 0), wood_imgs[kong_index])
6074
bar_left.paste(face_left, (right_w_offset, top_h_offset), face_left)
6175
bar_right.paste(face_right, (0, top_h_offset), face_right)
6276
writeColorImageToROM(bar_left, 25, kong["barrel_tex_start"], 32, 64, False, TextureFormat.RGBA5551, ROM_COPY)
6377
writeColorImageToROM(bar_right, 25, kong["barrel_tex_start"] + 1, 32, 64, False, TextureFormat.RGBA5551, ROM_COPY)
6478
# Cannons
6579
barrel_left = Image.new(mode="RGBA", size=(32, 64))
6680
barrel_right = Image.new(mode="RGBA", size=(32, 64))
67-
barrel_left.paste(wood_img, (0, 0), wood_img)
68-
barrel_right.paste(wood_img, (0, 0), wood_img)
81+
barrel_left.paste(wood_imgs[5], (0, 0), wood_imgs[5])
82+
barrel_right.paste(wood_imgs[5], (0, 0), wood_imgs[5])
6983
barrel_left = barrel_left.crop((0, 0, 16, 64))
7084
barrel_right = barrel_right.crop((16, 0, 32, 64))
7185
writeColorImageToROM(barrel_left, 25, 0x12B3, 16, 64, False, TextureFormat.RGBA5551, ROM_COPY)
7286
writeColorImageToROM(barrel_right, 25, 0x12B4, 16, 64, False, TextureFormat.RGBA5551, ROM_COPY)
73-
if barrel_color is not None:
87+
if barrel_color[5] is not None:
7488
tex_data = {
7589
getBonusSkinOffset(ExtraTextures.RocketTop): (1, 1372),
7690
0x12B5: (48, 32),
@@ -80,10 +94,10 @@ def changeBarrelColor(settings, ROM_COPY: ROM, barrel_color: tuple = None, metal
8094
dim_x = tex_data[img][0]
8195
dim_y = tex_data[img][1]
8296
img_output = getImageFile(ROM_COPY, 25, img, True, dim_x, dim_y, TextureFormat.RGBA5551)
83-
img_output = maskImageWithColor(img_output, barrel_color)
97+
img_output = maskImageWithColor(img_output, barrel_color[5])
8498
writeColorImageToROM(img_output, 25, img, dim_x, dim_y, False, TextureFormat.RGBA5551, ROM_COPY)
8599
# Barrel Palette
86-
if barrel_color is not None:
100+
if barrel_color[5] is not None:
87101
palette_files = {
88102
0x145: [],
89103
0x147: [1, 3, 4, 6, 9, 10, 12, 15],
@@ -95,7 +109,7 @@ def changeBarrelColor(settings, ROM_COPY: ROM, barrel_color: tuple = None, metal
95109
}
96110
for img in palette_files:
97111
initial_img = getImageFile(ROM_COPY, 25, img, True, 16, 1, TextureFormat.RGBA5551)
98-
img_output = maskImageWithColor(initial_img, barrel_color).convert("RGB")
112+
img_output = maskImageWithColor(initial_img, barrel_color[5]).convert("RGB")
99113
pixels = palette_files[img]
100114
for px in pixels:
101115
img_output.putpixel((px, 0), initial_img.getpixel((px, 0)))
@@ -152,6 +166,39 @@ def applyCelebrationRims(ROM_COPY: ROM, hue_shift: int, enabled_bananas: list[bo
152166
def applyHolidayMode(settings, ROM_COPY: ROM):
153167
"""Change grass texture to snow."""
154168
HOLIDAY = getHoliday(settings)
169+
if settings.color_coded_powerups:
170+
pad_data = [
171+
{"move_pad": 0x0097, "ins_pad": 0x00A8, "move_tex": [0xDEE, 0xDEF], "ins_tex": [getBonusSkinOffset(ExtraTextures.DonkeyPadLeft), getBonusSkinOffset(ExtraTextures.DonkeyPadRight)]},
172+
{"move_pad": 0x00D4, "ins_pad": 0x00A9, "move_tex": [0xDF4, 0xDF5], "ins_tex": [getBonusSkinOffset(ExtraTextures.DiddyPadLeft), getBonusSkinOffset(ExtraTextures.DiddyPadRight)]},
173+
{"move_pad": 0x010C, "ins_pad": 0x00AC, "move_tex": [0xBB0, 0xBB1], "ins_tex": [getBonusSkinOffset(ExtraTextures.LankyPadLeft), getBonusSkinOffset(ExtraTextures.LankyPadRight)]},
174+
{"move_pad": 0x010B, "ins_pad": 0x00AA, "move_tex": [0xDF1, 0xDF2], "ins_tex": [0xBC5, 0xBC4]},
175+
{"move_pad": 0x010A, "ins_pad": 0x00AB, "move_tex": [0xDF6, 0xDF7], "ins_tex": [getBonusSkinOffset(ExtraTextures.ChunkyPadLeft), getBonusSkinOffset(ExtraTextures.ChunkyPadRight)]},
176+
]
177+
for kong in pad_data:
178+
# Move pads: 0xEC (0), 0x164 (1)
179+
# Instrument pads: 0xDC (1), 0x14C (0)
180+
# Move Pads
181+
data = getRawFile(ROM_COPY, TableNames.ModelTwoGeometry, kong["move_pad"], True)
182+
num_data = [] # data, but represented as nums rather than b strings
183+
for d in data:
184+
num_data.append(d)
185+
num_data[0x0EE] = (kong["move_tex"][0] >> 8) & 0xFF
186+
num_data[0x0EF] = (kong["move_tex"][0] >> 0) & 0xFF
187+
num_data[0x166] = (kong["move_tex"][1] >> 8) & 0xFF
188+
num_data[0x167] = (kong["move_tex"][1] >> 0) & 0xFF
189+
data = bytearray(num_data) # convert num_data back to binary string
190+
writeRawFile(TableNames.ModelTwoGeometry, kong["move_pad"], True, data, ROM_COPY)
191+
# Instrument Pads
192+
data = getRawFile(ROM_COPY, TableNames.ModelTwoGeometry, kong["ins_pad"], True)
193+
num_data = [] # data, but represented as nums rather than b strings
194+
for d in data:
195+
num_data.append(d)
196+
num_data[0x14E] = (kong["ins_tex"][0] >> 8) & 0xFF
197+
num_data[0x14F] = (kong["ins_tex"][0] >> 0) & 0xFF
198+
num_data[0x0DE] = (kong["ins_tex"][1] >> 8) & 0xFF
199+
num_data[0x0DF] = (kong["ins_tex"][1] >> 0) & 0xFF
200+
data = bytearray(num_data) # convert num_data back to binary string
201+
writeRawFile(TableNames.ModelTwoGeometry, kong["ins_pad"], True, data, ROM_COPY)
155202
if HOLIDAY == Holidays.no_holiday:
156203
barrel_color = None
157204
change_barrel_color = IsColorOptionSelected(settings, ColorOptions.barrels_and_boulders)
@@ -160,7 +207,7 @@ def applyHolidayMode(settings, ROM_COPY: ROM):
160207
for _ in range(3):
161208
col_array.append(settings.random.randint(0, 0xFF))
162209
barrel_color = tuple(col_array)
163-
changeBarrelColor(settings, ROM_COPY, barrel_color, None, change_barrel_color) # Fixes some Krusha stuff
210+
changeBarrelColor(settings, ROM_COPY, [barrel_color] * 6, None, change_barrel_color) # Fixes some Krusha stuff
164211
return
165212
if HOLIDAY == Holidays.Christmas:
166213
# Set season to Christmas
@@ -258,14 +305,14 @@ def applyHolidayMode(settings, ROM_COPY: ROM):
258305
ROM_COPY.seek(getPointerLocation(TableNames.TexturesGeometry, 0xE68))
259306
ROM_COPY.writeBytes(tiny_hair_data)
260307
# Tag Barrel, Bonus Barrel & Transform Barrels
261-
changeBarrelColor(settings, ROM_COPY, None, (0x00, 0xC0, 0x00))
308+
changeBarrelColor(settings, ROM_COPY, [None] * 6, (0x00, 0xC0, 0x00))
262309
elif HOLIDAY == Holidays.Halloween:
263310
ROM_COPY.seek(settings.rom_data + 0xDB)
264311
ROM_COPY.writeMultipleBytes(1, 1)
265312
# Pad Rim
266313
applyCelebrationRims(ROM_COPY, -12)
267314
# Tag Barrel, Bonus Barrel & Transform Barrels
268-
changeBarrelColor(settings, ROM_COPY, (0x8D, 0xB3, 0x93))
315+
changeBarrelColor(settings, ROM_COPY, [(0x8D, 0xB3, 0x93)] * 6)
269316
# Turn Ice Tomato Orange
270317
sizes = {
271318
0x1237: 700,
@@ -283,7 +330,7 @@ def applyHolidayMode(settings, ROM_COPY: ROM):
283330
for img in range(0x1237, 0x1241 + 1):
284331
hueShiftImageContainer(25, img, 1, sizes[img], TextureFormat.RGBA5551, 171, ROM_COPY)
285332
elif HOLIDAY == Holidays.Anniv25:
286-
changeBarrelColor(settings, ROM_COPY, (0xFF, 0xFF, 0x00), None, True)
333+
changeBarrelColor(settings, ROM_COPY, [(0xFF, 0xFF, 0x00)] * 6, None, True)
287334
sticker_im = getImageFile(ROM_COPY, 25, getBonusSkinOffset(ExtraTextures.Anniv25Sticker), True, 1, 1372, TextureFormat.RGBA5551)
288335
vanilla_sticker_im = getImageFile(ROM_COPY, 25, 0xB7D, True, 1, 1372, TextureFormat.RGBA5551)
289336
sticker_im_snipped = sticker_im.crop((0, 0, 1, 1360))

randomizer/Patching/Library/Image.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,14 @@ class ExtraTextures(IntEnum):
134134
SpecialAPPearlSilver = auto()
135135
FoolsAPPearlBlack = auto()
136136
FoolsAPPearlSilver = auto()
137+
DonkeyPadLeft = auto()
138+
DonkeyPadRight = auto()
139+
DiddyPadLeft = auto()
140+
DiddyPadRight = auto()
141+
LankyPadLeft = auto()
142+
LankyPadRight = auto()
143+
ChunkyPadLeft = auto()
144+
ChunkyPadRight = auto()
137145

138146

139147
barrel_skins = (

randomizer/SettingStrings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ def encrypt_settings_string_enum(dict_data: dict):
237237
"custom_music_proportion",
238238
"fill_with_custom_music",
239239
"pool_tracks",
240+
"color_coded_powerups",
240241
"show_song_name",
241242
"delayed_spoilerlog_release",
242243
"shockwave_status", # Deprecated with starting move selector rework - this is now derived in the settings constructor

randomizer/Settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,7 @@ def generate_misc(self):
743743
self.smoother_camera = False
744744
self.fill_with_custom_music = False
745745
self.pool_tracks = False
746+
self.color_coded_powerups = True
746747
self.show_song_name = False
747748

748749
# Custom Textures

0 commit comments

Comments
 (0)