mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
* initial work on procedure patch * more flexibility load default procedure for version 5 patches add args for procedure add default extension for tokens and bsdiff allow specifying additional required extensions for generation * pushing current changes to go fix tloz bug * move tokens into a separate inheritable class * forgot the commit to remove token from ProcedurePatch * further cleaning from bad commit * start on docstrings * further work on docstrings and typing * improve docstrings * fix incorrect docstring * cleanup * clean defaults and docstring * define interface that has only the bare minimum required for `Patch.create_rom_file` * change to dictionary.get * remove unnecessary if statement * update to explicitly check for procedure, restore compatible version and manual override * Update Files.py * remove struct uses * Update Rom.py * convert KDL3 to APPP * change class variables to instance variables * Update worlds/Files.py Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> * Update worlds/Files.py Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> * move required_extensions to tuple * fix missing tuple ellipsis * fix classvar mixup * rename tokens to _tokens. use hasattr * type hint cleanup * Update Files.py * initial base for local items, need to finish * coo not clean * handle local items for real, appp cleanup * actually make bosses send their locations * fix cloudy park 4 rule, zero deathlink message * remove redundant door_shuffle bool when generic ER gets in, this whole function gets rewritten. So just clean it a little now. * properly fix deathlink messages, fix fill error * update docs * add prefill items * fix kine fill error * Update Rom.py * Update Files.py * mypy and softlock fix * Update Gifting.py * mypy phase 1 * fix rare async client bug * Update __init__.py * typing cleanup * fix stone softlock because of the way Kine's Stone works, you can't clear the stone blocks before clearing the burning blocks, so we have to bring Burning from outside * Update Rom.py * Add option groups * Rename to lowercase * finish rename * whoops broke the world * fix animal duplication bug * overhaul filler generation * add Miku flavor * Update gifting.py * fix issues related to max_hs increase * Update test_locations.py * fix boss shuffle not working if level shuffle is disabled * fix bleeding default levels * Update options.py * thought this would print seed * yay bad merges * forgot options too * yeah lets just break generation while at it * this is probably a problem * cap required heart stars * Revert "cap required heart stars" This reverts commit 759efd3e2b14ec2855082de041ac989cb9c5d500. * fix duplication removal placement, deprecated test option * forgot that we need to account for what we place * move location ids * rewrite trap handling * further stage renumber fixes * forgot one more * basic UT support * fix local heart star checks * fix pattern --------- Co-authored-by: beauxq <beauxq@yahoo.com> Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
211 lines
8.8 KiB
Python
211 lines
8.8 KiB
Python
from typing import List
|
|
|
|
grass_land_1_a1 = "Grass Land 1 - Animal 1" # Nago
|
|
grass_land_1_a2 = "Grass Land 1 - Animal 2" # Rick
|
|
grass_land_2_a1 = "Grass Land 2 - Animal 1" # ChuChu
|
|
grass_land_2_a2 = "Grass Land 2 - Animal 2" # Pitch
|
|
grass_land_3_a1 = "Grass Land 3 - Animal 1" # Kine
|
|
grass_land_3_a2 = "Grass Land 3 - Animal 2" # Coo
|
|
grass_land_4_a1 = "Grass Land 4 - Animal 1" # ChuChu
|
|
grass_land_4_a2 = "Grass Land 4 - Animal 2" # Nago
|
|
grass_land_5_a1 = "Grass Land 5 - Animal 1" # Coo
|
|
grass_land_5_a2 = "Grass Land 5 - Animal 2" # Kine
|
|
grass_land_5_a3 = "Grass Land 5 - Animal 3" # Nago
|
|
grass_land_5_a4 = "Grass Land 5 - Animal 4" # Rick
|
|
grass_land_6_a1 = "Grass Land 6 - Animal 1" # Rick
|
|
grass_land_6_a2 = "Grass Land 6 - Animal 2" # ChuChu
|
|
grass_land_6_a3 = "Grass Land 6 - Animal 3" # Nago
|
|
grass_land_6_a4 = "Grass Land 6 - Animal 4" # Coo
|
|
ripple_field_1_a1 = "Ripple Field 1 - Animal 1" # Pitch
|
|
ripple_field_1_a2 = "Ripple Field 1 - Animal 2" # Nago
|
|
ripple_field_2_a1 = "Ripple Field 2 - Animal 1" # Kine
|
|
ripple_field_2_a2 = "Ripple Field 2 - Animal 2" # ChuChu
|
|
ripple_field_2_a3 = "Ripple Field 2 - Animal 3" # Rick
|
|
ripple_field_2_a4 = "Ripple Field 2 - Animal 4" # Coo
|
|
ripple_field_3_a1 = "Ripple Field 3 - Animal 1" # Kine
|
|
ripple_field_3_a2 = "Ripple Field 3 - Animal 2" # Rick
|
|
ripple_field_4_a1 = "Ripple Field 4 - Animal 1" # ChuChu
|
|
ripple_field_4_a2 = "Ripple Field 4 - Animal 2" # Kine
|
|
ripple_field_4_a3 = "Ripple Field 4 - Animal 3" # Nago
|
|
ripple_field_5_a1 = "Ripple Field 5 - Animal 1" # Kine
|
|
ripple_field_5_a2 = "Ripple Field 5 - Animal 2" # Pitch
|
|
ripple_field_6_a1 = "Ripple Field 6 - Animal 1" # Nago
|
|
ripple_field_6_a2 = "Ripple Field 6 - Animal 2" # Pitch
|
|
ripple_field_6_a3 = "Ripple Field 6 - Animal 3" # Rick
|
|
ripple_field_6_a4 = "Ripple Field 6 - Animal 4" # Coo
|
|
sand_canyon_1_a1 = "Sand Canyon 1 - Animal 1" # Rick
|
|
sand_canyon_1_a2 = "Sand Canyon 1 - Animal 2" # Pitch
|
|
sand_canyon_2_a1 = "Sand Canyon 2 - Animal 1" # ChuChu
|
|
sand_canyon_2_a2 = "Sand Canyon 2 - Animal 2" # Coo
|
|
sand_canyon_3_a1 = "Sand Canyon 3 - Animal 1" # Pitch
|
|
sand_canyon_3_a2 = "Sand Canyon 3 - Animal 2" # Coo
|
|
sand_canyon_3_a3 = "Sand Canyon 3 - Animal 3" # ChuChu
|
|
sand_canyon_4_a1 = "Sand Canyon 4 - Animal 1" # Rick
|
|
sand_canyon_4_a2 = "Sand Canyon 4 - Animal 2" # Pitch
|
|
sand_canyon_4_a3 = "Sand Canyon 4 - Animal 3" # Nago
|
|
sand_canyon_5_a1 = "Sand Canyon 5 - Animal 1" # Rick
|
|
sand_canyon_5_a2 = "Sand Canyon 5 - Animal 2" # ChuChu
|
|
sand_canyon_6_a1 = "Sand Canyon 6 - Animal 1" # Coo
|
|
sand_canyon_6_a2 = "Sand Canyon 6 - Animal 2" # Kine
|
|
sand_canyon_6_a3 = "Sand Canyon 6 - Animal 3" # Rick
|
|
sand_canyon_6_a4 = "Sand Canyon 6 - Animal 4" # ChuChu
|
|
sand_canyon_6_a5 = "Sand Canyon 6 - Animal 5" # Nago
|
|
sand_canyon_6_a6 = "Sand Canyon 6 - Animal 6" # Pitch
|
|
cloudy_park_1_a1 = "Cloudy Park 1 - Animal 1" # Rick
|
|
cloudy_park_1_a2 = "Cloudy Park 1 - Animal 2" # Nago
|
|
cloudy_park_1_a3 = "Cloudy Park 1 - Animal 3" # Coo
|
|
cloudy_park_1_a4 = "Cloudy Park 1 - Animal 4" # Kine
|
|
cloudy_park_1_a5 = "Cloudy Park 1 - Animal 5" # ChuChu
|
|
cloudy_park_1_a6 = "Cloudy Park 1 - Animal 6" # Pitch
|
|
cloudy_park_2_a1 = "Cloudy Park 2 - Animal 1" # Nago
|
|
cloudy_park_2_a2 = "Cloudy Park 2 - Animal 2" # Pitch
|
|
cloudy_park_2_a3 = "Cloudy Park 2 - Animal 3" # ChuChu
|
|
cloudy_park_3_a1 = "Cloudy Park 3 - Animal 1" # Kine
|
|
cloudy_park_3_a2 = "Cloudy Park 3 - Animal 2" # Rick
|
|
cloudy_park_3_a3 = "Cloudy Park 3 - Animal 3" # ChuChu
|
|
cloudy_park_4_a1 = "Cloudy Park 4 - Animal 1" # Coo
|
|
cloudy_park_4_a2 = "Cloudy Park 4 - Animal 2" # ChuChu
|
|
cloudy_park_5_a1 = "Cloudy Park 5 - Animal 1" # Rick
|
|
cloudy_park_5_a2 = "Cloudy Park 5 - Animal 2" # Coo
|
|
cloudy_park_6_a1 = "Cloudy Park 6 - Animal 1" # Nago
|
|
cloudy_park_6_a2 = "Cloudy Park 6 - Animal 2" # Coo
|
|
cloudy_park_6_a3 = "Cloudy Park 6 - Animal 3" # Rick
|
|
iceberg_1_a1 = "Iceberg 1 - Animal 1" # Pitch
|
|
iceberg_1_a2 = "Iceberg 1 - Animal 2" # Rick
|
|
iceberg_2_a1 = "Iceberg 2 - Animal 1" # Nago
|
|
iceberg_2_a2 = "Iceberg 2 - Animal 2" # Pitch
|
|
iceberg_3_a1 = "Iceberg 3 - Animal 1" # Pitch
|
|
iceberg_3_a2 = "Iceberg 3 - Animal 2" # Coo
|
|
iceberg_3_a3 = "Iceberg 3 - Animal 3" # Nago
|
|
iceberg_3_a4 = "Iceberg 3 - Animal 4" # Rick
|
|
iceberg_3_a5 = "Iceberg 3 - Animal 5" # Kine
|
|
iceberg_4_a1 = "Iceberg 4 - Animal 1" # ChuChu
|
|
iceberg_4_a2 = "Iceberg 4 - Animal 2" # Coo
|
|
iceberg_4_a3 = "Iceberg 4 - Animal 3" # Pitch
|
|
iceberg_4_a4 = "Iceberg 4 - Animal 4" # Coo
|
|
iceberg_4_a5 = "Iceberg 4 - Animal 5" # Rick
|
|
iceberg_5_a1 = "Iceberg 5 - Animal 1" # Kine
|
|
iceberg_5_a2 = "Iceberg 5 - Animal 2" # Rick
|
|
iceberg_5_a3 = "Iceberg 5 - Animal 3" # Pitch
|
|
iceberg_5_a4 = "Iceberg 5 - Animal 4" # ChuChu
|
|
iceberg_5_a5 = "Iceberg 5 - Animal 5" # Kine
|
|
iceberg_5_a6 = "Iceberg 5 - Animal 6" # Coo
|
|
iceberg_5_a7 = "Iceberg 5 - Animal 7" # Rick
|
|
iceberg_5_a8 = "Iceberg 5 - Animal 8" # ChuChu
|
|
iceberg_6_a1 = "Iceberg 6 - Animal 1" # Rick
|
|
iceberg_6_a2 = "Iceberg 6 - Animal 2" # Coo
|
|
iceberg_6_a3 = "Iceberg 6 - Animal 3" # Nago
|
|
iceberg_6_a4 = "Iceberg 6 - Animal 4" # Kine
|
|
iceberg_6_a5 = "Iceberg 6 - Animal 5" # ChuChu
|
|
iceberg_6_a6 = "Iceberg 6 - Animal 6" # Nago
|
|
|
|
animal_friend_spawns = {
|
|
grass_land_1_a1: "Nago Spawn",
|
|
grass_land_1_a2: "Rick Spawn",
|
|
grass_land_2_a1: "ChuChu Spawn",
|
|
grass_land_2_a2: "Pitch Spawn",
|
|
grass_land_3_a1: "Kine Spawn",
|
|
grass_land_3_a2: "Coo Spawn",
|
|
grass_land_4_a1: "ChuChu Spawn",
|
|
grass_land_4_a2: "Nago Spawn",
|
|
grass_land_5_a1: "Coo Spawn",
|
|
grass_land_5_a2: "Kine Spawn",
|
|
grass_land_5_a3: "Nago Spawn",
|
|
grass_land_5_a4: "Rick Spawn",
|
|
grass_land_6_a1: "Rick Spawn",
|
|
grass_land_6_a2: "ChuChu Spawn",
|
|
grass_land_6_a3: "Nago Spawn",
|
|
grass_land_6_a4: "Coo Spawn",
|
|
ripple_field_1_a1: "Pitch Spawn",
|
|
ripple_field_1_a2: "Nago Spawn",
|
|
ripple_field_2_a1: "Kine Spawn",
|
|
ripple_field_2_a2: "ChuChu Spawn",
|
|
ripple_field_2_a3: "Rick Spawn",
|
|
ripple_field_2_a4: "Coo Spawn",
|
|
ripple_field_3_a1: "Kine Spawn",
|
|
ripple_field_3_a2: "Rick Spawn",
|
|
ripple_field_4_a1: "ChuChu Spawn",
|
|
ripple_field_4_a2: "Kine Spawn",
|
|
ripple_field_4_a3: "Nago Spawn",
|
|
ripple_field_5_a1: "Kine Spawn",
|
|
ripple_field_5_a2: "Pitch Spawn",
|
|
ripple_field_6_a1: "Nago Spawn",
|
|
ripple_field_6_a2: "Pitch Spawn",
|
|
ripple_field_6_a3: "Rick Spawn",
|
|
ripple_field_6_a4: "Coo Spawn",
|
|
sand_canyon_1_a1: "Rick Spawn",
|
|
sand_canyon_1_a2: "Pitch Spawn",
|
|
sand_canyon_2_a1: "ChuChu Spawn",
|
|
sand_canyon_2_a2: "Coo Spawn",
|
|
sand_canyon_3_a1: "Pitch Spawn",
|
|
sand_canyon_3_a2: "Coo Spawn",
|
|
sand_canyon_3_a3: "ChuChu Spawn",
|
|
sand_canyon_4_a1: "Rick Spawn",
|
|
sand_canyon_4_a2: "Pitch Spawn",
|
|
sand_canyon_4_a3: "Nago Spawn",
|
|
sand_canyon_5_a1: "Rick Spawn",
|
|
sand_canyon_5_a2: "ChuChu Spawn",
|
|
sand_canyon_6_a1: "Coo Spawn",
|
|
sand_canyon_6_a2: "Kine Spawn",
|
|
sand_canyon_6_a3: "Rick Spawn",
|
|
sand_canyon_6_a4: "ChuChu Spawn",
|
|
sand_canyon_6_a5: "Nago Spawn",
|
|
sand_canyon_6_a6: "Pitch Spawn",
|
|
cloudy_park_1_a1: "Rick Spawn",
|
|
cloudy_park_1_a2: "Nago Spawn",
|
|
cloudy_park_1_a3: "Coo Spawn",
|
|
cloudy_park_1_a4: "Kine Spawn",
|
|
cloudy_park_1_a5: "ChuChu Spawn",
|
|
cloudy_park_1_a6: "Pitch Spawn",
|
|
cloudy_park_2_a1: "Nago Spawn",
|
|
cloudy_park_2_a2: "Pitch Spawn",
|
|
cloudy_park_2_a3: "ChuChu Spawn",
|
|
cloudy_park_3_a1: "Kine Spawn",
|
|
cloudy_park_3_a2: "Rick Spawn",
|
|
cloudy_park_3_a3: "ChuChu Spawn",
|
|
cloudy_park_4_a1: "Coo Spawn",
|
|
cloudy_park_4_a2: "ChuChu Spawn",
|
|
cloudy_park_5_a1: "Rick Spawn",
|
|
cloudy_park_5_a2: "Coo Spawn",
|
|
cloudy_park_6_a1: "Nago Spawn",
|
|
cloudy_park_6_a2: "Coo Spawn",
|
|
cloudy_park_6_a3: "Rick Spawn",
|
|
iceberg_1_a1: "Pitch Spawn",
|
|
iceberg_1_a2: "Rick Spawn",
|
|
iceberg_2_a1: "Nago Spawn",
|
|
iceberg_2_a2: "Pitch Spawn",
|
|
iceberg_3_a1: "Pitch Spawn",
|
|
iceberg_3_a2: "Coo Spawn",
|
|
iceberg_3_a3: "Nago Spawn",
|
|
iceberg_3_a4: "Rick Spawn",
|
|
iceberg_3_a5: "Kine Spawn",
|
|
iceberg_4_a1: "ChuChu Spawn",
|
|
iceberg_4_a2: "Coo Spawn",
|
|
iceberg_4_a3: "Pitch Spawn",
|
|
iceberg_4_a4: "Coo Spawn",
|
|
iceberg_4_a5: "Rick Spawn",
|
|
iceberg_5_a1: "Kine Spawn",
|
|
iceberg_5_a2: "Rick Spawn",
|
|
iceberg_5_a3: "Pitch Spawn",
|
|
iceberg_5_a4: "ChuChu Spawn",
|
|
iceberg_5_a5: "Kine Spawn",
|
|
iceberg_5_a6: "Coo Spawn",
|
|
iceberg_5_a7: "Rick Spawn",
|
|
iceberg_5_a8: "ChuChu Spawn",
|
|
iceberg_6_a1: "Rick Spawn",
|
|
iceberg_6_a2: "Coo Spawn",
|
|
iceberg_6_a3: "Nago Spawn",
|
|
iceberg_6_a4: "Kine Spawn",
|
|
iceberg_6_a5: "ChuChu Spawn",
|
|
iceberg_6_a6: "Nago Spawn",
|
|
}
|
|
|
|
problematic_sets: List[List[str]] = [
|
|
# Animal groups that must be guaranteed unique. Potential for softlocks on future-ER if not.
|
|
[ripple_field_4_a1, ripple_field_4_a2, ripple_field_4_a3],
|
|
[sand_canyon_3_a1, sand_canyon_3_a2, sand_canyon_3_a3],
|
|
[cloudy_park_6_a1, cloudy_park_6_a2, cloudy_park_6_a3],
|
|
[iceberg_6_a1, iceberg_6_a2, iceberg_6_a3],
|
|
[iceberg_6_a4, iceberg_6_a5, iceberg_6_a6]
|
|
]
|