mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 12:11:33 -06:00

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: alchav <alchav@jalchavware.com>
132 lines
8.2 KiB
Python
132 lines
8.2 KiB
Python
# Based on SML2R enemy and platform randomizer
|
|
# # https://github.com/slashinfty/sml2r-node/blob/862128c73d336d6cbfbf6290c09f3eff103688e8/src/index.ts#L284
|
|
|
|
def randomize_enemies(sprite_data, random):
|
|
for level, level_sprite_data in sprite_data.items():
|
|
shuffle = ()
|
|
if level in ("Mushroom Zone", "Macro Zone 4"):
|
|
shuffle = ("Koopa Troopa", "Goomba", "Paragoomba (Vertical)", "Paragoomba (Diagonal)")
|
|
elif level in ("Scenic Course", "Pumpkin Zone Secret Course 1"):
|
|
shuffle = ("Goomba", "Paragoomba (Vertical)", "Paragoomba (Diagonal)")
|
|
elif level == "Tree Zone 1":
|
|
shuffle = ("Money Bag/Bopping Toady", "Ragumo/Aqua Kuribo", "Pencil/Spikey", "Kyotonbo")
|
|
elif level == "Tree Zone 2":
|
|
shuffle = ("Noko Bombette/Bear", "No 48/Mogyo")
|
|
elif level == "Tree Zone 3":
|
|
shuffle = ("Battle Beetle", "Be", "Ant")
|
|
elif level == "Tree Zone 5":
|
|
shuffle = ("Paragoomba (Diagonal)", "Dondon", "Paragoomba (Vertical)")
|
|
elif level == "Pumpkin Zone 2":
|
|
shuffle = ("Boo/Bomubomu", "Kyororo", "Honebon/F Boy", "Karakara", "Star (Vertical)/Blurp (Horizontal)",
|
|
"Star (Horizontal)/Blurp (Vertical)")
|
|
elif level == "Pumpkin Zone 3":
|
|
shuffle = ("Boo/Bomubomu", "Unibo/Terekuribo")
|
|
elif level == "Mario Zone 1":
|
|
shuffle = ("Koopa Troopa", "Neiji/Buichi", "Tatenoko")
|
|
elif level == "Mario Zone 2":
|
|
shuffle = ("Paragoomba (Diagonal)", "Goomba", "Paragoomba (Vertical)", "Noko Bombette/Bear",
|
|
"Boo/Bomubomu")
|
|
elif level == "Turtle Zone 1":
|
|
shuffle = ("Horizontal Blurp", "Shark", "Cheep Cheep (Vertical)", "Paragoomba (Diagonal)", "Goomba",
|
|
"Spiny Cheep Cheep", "Paragoomba (Vertical)",
|
|
"Owl Platform (Horizontal)/Cheep Cheep (Horizontal)")
|
|
elif level == "Hippo Zone":
|
|
shuffle = ("Horizontal Blurp", "Dondon", "Unibo/Terekuribo", "Toriuo")
|
|
elif level == "Space Zone 2":
|
|
shuffle = ("Tosenbo/Pikku", "Star (Vertical)/Blurp (Horizontal)", "Star (Horizontal)/Blurp (Vertical)")
|
|
elif level == "Macro Zone 1":
|
|
shuffle = ("Kyotonbo", "Goronto", "Dokanto", "Chikunto")
|
|
elif level == "Macro Zone 2":
|
|
shuffle = ("Cheep Cheep (Vertical)", "Battle Beetle", "Be",
|
|
"Owl Platform (Horizontal)/Cheep Cheep (Horizontal)", "Ant")
|
|
elif level == "Macro Zone 3":
|
|
shuffle = ("Koopa Troopa", "Paragoomba (Diagonal)", "Goomba", "Be", "Paragoomba (Vertical)",
|
|
"Honebon/F Boy")
|
|
elif level == "Pumpkin Zone Secret Course 2":
|
|
shuffle = ("Koopa Troopa", "Goomba")
|
|
for sprite in level_sprite_data:
|
|
if level == "Pumpkin Zone 1":
|
|
if sprite["sprite"] == "Falling Spike":
|
|
shuffle = ("Boo/Bomubomu", "Falling Spike", "Kurokyura/Jack-in-the-Box", "Masked Ghoul/Bullet Bill")
|
|
elif sprite["sprite"] == "Falling Spike on Chain":
|
|
shuffle = ("Boo/Bomubomu", "Falling Spike on Chain", "Kurokyura/Jack-in-the-Box",
|
|
"Masked Ghoul/Bullet Bill")
|
|
else:
|
|
shuffle = ("Boo/Bomubomu", "Kurokyura/Jack-in-the-Box", "Masked Ghoul/Bullet Bill")
|
|
elif level == "Pumpkin Zone 4":
|
|
if sprite["sprite"] == "Falling Spike on Chain":
|
|
shuffle = ("Boo/Bomubomu", "Falling Spike on Chain", "Masked Ghoul/Bullet Bill", "Rerere/Poro",
|
|
"Tosenbo/Pikku")
|
|
else:
|
|
shuffle = ("Boo/Bomubomu", "Masked Ghoul/Bullet Bill", "Rerere/Poro", "Tosenbo/Pikku")
|
|
elif level == "Mario Zone 3":
|
|
if sprite["sprite"] == "Claw Grabber":
|
|
shuffle = ("Koopa Troopa", "Diagonal Ball on Chain", "Kiddokatto", "Claw Grabber",
|
|
"Masked Ghoul/Bullet Bill")
|
|
elif sprite["sprite"] in ("Koopa Troopa", "Diagonal Ball on Chain", "Kiddokatto"):
|
|
shuffle = ("Koopa Troopa", "Diagonal Ball on Chain", "Kiddokatto", "Masked Ghoul/Bullet Bill")
|
|
else:
|
|
shuffle = ()
|
|
elif level == "Mario Zone 4":
|
|
if sprite["sprite"] == "Spinning Spike/Tamara":
|
|
shuffle = ("Goomba", "Spinning Spike/Tamara", "Boo/Bomubomu", "Masked Ghoul/Bullet Bill")
|
|
elif sprite["sprite"] == "Moving Saw (Floor)":
|
|
shuffle = ("Goomba", "Moving Saw (Floor)", "Boo/Bomubomu", "Masked Ghoul/Bullet Bill")
|
|
else:
|
|
shuffle = ("Goomba", "Boo/Bomubomu", "Masked Ghoul/Bullet Bill")
|
|
elif level == "Turtle Zone 3":
|
|
if sprite["sprite"] == "Pencil/Spikey":
|
|
shuffle = ("Koopa Troopa", "Paragoomba (Diagonal)", "Ragumo/Aqua Kuribo", "Pencil/Spikey",
|
|
"Paragoomba (Vertical)", "Honebon/F Boy")
|
|
else:
|
|
shuffle = ("Koopa Troopa", "Paragoomba (Diagonal)", "Ragumo/Aqua Kuribo",
|
|
"Paragoomba (Vertical)", "Honebon/F Boy")
|
|
elif level == "Space Zone 1":
|
|
if sprite["sprite"] == "Boo/Bomubomu":
|
|
shuffle = ("Boo/Bomubomu", "No 48/Mogyo")
|
|
else:
|
|
shuffle = ("Boo/Bomubomu", "No 48/Mogyo", "Rerere/Poro")
|
|
elif level == "Mario's Castle":
|
|
if sprite["sprite"] in ("Fire Pakkun Zo (Large)", "Fire Pakkun Zo (Left)"):
|
|
shuffle = ("Fire Pakkun Zo (Large)", "Fire Pakkun Zo (Left)")
|
|
else:
|
|
shuffle = ("Spike Ball (Large)", "Spike Ball (Small)")
|
|
elif level == "Tree Zone 4":
|
|
# Deviation from SML2R: No Buichis placed into non-Buichi locations, as they can place under the
|
|
# underground question mark blocks. Potentially could make a list of which ones are allowed to become
|
|
# Buichis?
|
|
if sprite["sprite"] in ("Runaway Heart Block/Bibi", "Piranha Plant (Downward)/Grubby",
|
|
"Spinning Platform (Horizontal)/Skeleton Bee",
|
|
"Spinning Spike (Horizontal)/Unera"):
|
|
shuffle = ("Runaway Heart Block/Bibi", "Piranha Plant (Downward)/Grubby",
|
|
"Spinning Platform (Horizontal)/Skeleton Bee", "Spinning Spike (Horizontal)/Unera")
|
|
elif sprite["sprite"] == "Neiji/Buichi":
|
|
shuffle = ("Runaway Heart Block/Bibi", "Neiji/Buichi", "Piranha Plant (Downward)/Grubby",
|
|
"Spinning Platform (Horizontal)/Skeleton Bee", "Spinning Spike (Horizontal)/Unera")
|
|
else:
|
|
shuffle = ()
|
|
if sprite["sprite"] in ("Piranha Plant", "Fire Piranha Plant"):
|
|
if level not in ("Pumpkin Zone 2", "Pumpkin Zone 4", "Macro Zone 3"):
|
|
shuffle = ("Piranha Plant", "Fire Piranha Plant")
|
|
if sprite["sprite"] in shuffle:
|
|
sprite["sprite"] = random.choice(shuffle)
|
|
elif level == "Mario's Castle" and sprite["sprite"] == "Karamenbo" and not random.randint(0, 9):
|
|
sprite["y"] += 1
|
|
|
|
|
|
def randomize_platforms(sprite_data, random):
|
|
shuffle = ("Moving Platform (Small, Vertical)", "Moving Platform (Large, Vertical)",
|
|
"Moving Platform (Small, Horizontal)", "Moving Platform (Large, Horizontal)",
|
|
"Moving Platform (Large, Diagonal)", "Falling Platform")
|
|
for sprite in sprite_data["Tree Zone 3"]:
|
|
if sprite["sprite"] in shuffle:
|
|
sprite["sprite"] = random.choice(shuffle)
|
|
shuffle = ("Cloud Platform (Horizontal)", "Owl Platform (Horizontal)/Cheep Cheep (Horizontal)")
|
|
for sprite in sprite_data["Tree Zone 5"]:
|
|
if sprite["sprite"] in shuffle:
|
|
sprite["sprite"] = random.choice(shuffle)
|
|
shuffle = ("Falling Bone Platform", "Rising Bone Platform", "Skull Platform")
|
|
for sprite in sprite_data["Mario's Castle"]:
|
|
if sprite["sprite"] in shuffle:
|
|
sprite["sprite"] = random.choice(shuffle)
|