Files
Grinch-AP/worlds/kdl3/names/animal_friend_spawns.py
Silvris 920cffda2d KDL3: Version 2.0.0 (#3323)
* 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>
2024-08-31 13:15:00 +02:00

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]
]