TUNIC: The Big Refactor (#5195)
* Make it actually return false if it gets to the backup lists and fails them
* Fix stuff after merge
* Add outlet regions, create new regions as needed for them
* Put together part of decoupled and direction pairs
* make direction pairs work
* Make decoupled work
* Make fixed shop work again
* Fix a few minor bugs
* Fix a few minor bugs
* Fix plando
* god i love programming
* Reorder portal list
* Update portal sorter for variable shops
* Add missing parameter
* Some cleanup of prints and functions
* Fix typo
* it's aliiiiiive
* Make seed groups not sync decoupled
* Add test with full-shop plando
* Fix bug with vanilla portals
* Handle plando connections and direction pair errors
* Update plando checking for decoupled
* Fix typo
* Fix exception text to be shorter
* Add some more comments
* Add todo note
* Remove unused safety thing
* Remove extra plando connections definition in options
* Make seed groups in decoupled with overlapping but not fully overlapped plando connections interact nicely without messing with what the entrances look like in the spoiler log
* Fix weird edge case that is technically user error
* Add note to fixed shop
* Fix parsing shop names in UT
* Remove debug print
* Actually make UT work
* multiworld. to world.
* Fix typo from merge
* Make it so the shops show up in the entrance hints
* Fix bug in ladder storage rules
* Remove blank line
* # Conflicts:
# worlds/tunic/__init__.py
# worlds/tunic/er_data.py
# worlds/tunic/er_rules.py
# worlds/tunic/er_scripts.py
# worlds/tunic/rules.py
# worlds/tunic/test/test_access.py
* Fix issues after merge
* Update plando connections stuff in docs
* Make early bushes only contain grass
* Fix library mistake
* Backport changes to grass rando (#20)
* Backport changes to grass rando
* add_rule instead of set_rule for the special cases, add special cases for back of swamp laurels area cause I should've made a new region for the swamp upper entrance
* Remove item name group for grass
* Update grass rando option descriptions
- Also ignore grass fill for single player games
* Ignore grass fill option for solo rando
* Update er_rules.py
* Fix pre fill issue
* Remove duplicate option
* Add excluded grass locations back
* Hide grass fill option from simple ui options page
* Check for start with sword before setting grass rules
* Update worlds/tunic/options.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* has_stick -> has_melee
* has_stick -> has_melee
* Add a failsafe for direction pairing
* Fix playthrough crash bug
* Remove init from logicmixin
* Updates per code review (thanks hesto)
* has_stick to has_melee in newer update
* has_stick to has_melee in newer update
* Exclude grass from get_filler_item_name
- non-grass rando games were accidentally seeing grass items get shuffled in as filler, which is funny but probably shouldn't happen
* Update worlds/tunic/__init__.py
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* Apply suggestions from code review
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
* change the rest of grass_fill to local_fill
* Filter out grass from filler_items
* remove -> discard
* Update worlds/tunic/__init__.py
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
* Starting out
* Rules for breakable regions
* # Conflicts:
# worlds/tunic/__init__.py
# worlds/tunic/combat_logic.py
# worlds/tunic/er_data.py
# worlds/tunic/er_rules.py
# worlds/tunic/er_scripts.py
* Cleanup more stuff after merge
* Revert "Cleanup more stuff after merge"
This reverts commit a6ee9a93da8f2fcc4413de6df6927b246017889d.
* Revert "# Conflicts:"
This reverts commit c74ccd74a45b6ad6b9abe6e339d115a0c98baf30.
* Cleanup more stuff after merge
* change has_stick to has_melee
* Update grass list with combat logic regions
* More fixes from combat logic merge
* Fix some dumb stuff (#21)
* Reorganize pre fill for grass
* make the rest of it work, it's pr ready, boom
* Make it work in not pot shuffle
* Merge grass rando
* multiworld -> world get_location, use has_any
* Swap out region for West Garden Before Terry grass
* Adjust west garden rules to add west combat region
* Adjust grass regions for south checkpoint grass
* Adjust grass regions for after terry grass
* Adjust grass regions for west combat grass
* Adjust grass regions for dagger house grass
* Adjust grass regions for south checkpoint grass, adjust regions and rules for some related locations
* Finish the remainder of the west garden grass, reformat ruined atoll a little
* More hex quest updates
- Implement page ability shuffle for hex quest
- Fix keys behind bosses if hex goal is less than 3
- Added check to fix conflicting hex quest options
- Add option to slot data
* Change option comparison
* Change option checking and fix some stuff
- also keep prayer first on low hex counts
* Update option defaulting
* Update option checking
* Fix option assignment again
* Merge in hex hunt
* Merge in changes
* Clean up imports
* Add ability type to UT stuff
* merge it all
* Make local fill work across pot and grass (to be adjusted later)
* Make separate pools for the grass and non-grass fills
* Fix id overlap
* Update option description
* Fix default
* Reorder localfill option desc
* Load the purgatory ones in
* Adjustments after merge
* Fully remove logicrules
* Fix UT support with fixed shop option
* Add breakable shuffle to the ut stuff
* Make it load in a specific number of locations
* Add Silent's spoiler log ability thing
* Fix for groups
* Fix for groups
* Fix typo
* Fix hex quest UT support
* Use .get
* UT fixes, classification fixes
* Rename some locations
* Adjust guard house names
* Adjust guard house names
* Rework create_item
* Fix for plando connections
* Rename, add new breakables
* Rename more stuff
* Time to rename them again
* Fix issue with fixed shop + decoupled
* Put in an exception to catch that error in the future
* Update create_item to match main
* Update spoiler log lines for hex abilities
* Burn the signs down
* Bring over the combat logic fix
* Merge in combat logic fix
* Silly static method thing
* Move a few areas to before well instead of east forest
* Add an all_random hidden option for dev stuff
* Port over changes from main
* Fix west courtyard pot regions
* Remove debug prints
* Fix fortress courtyard and beneath the fortress loc groups again
* Add exception handling to deal with duplicate apworlds
* Fix typo
* More missing loc group conversions
* Initial fuse shuffle stuff
* Fix gun missing from combat_items, add new for combat logic cache, very slight refactor of check_combat_reqs to let it do the changeover in a less complicated fashion, fix area being a boss area rather than non-boss area for a check
* Add fuse shuffle logic
* reorder atoll statue rule
* Update traversal reqs
* Remove fuse shuffle from temple door
* Combine rules and option checking
* Add bell shuffle; fix fuse location groups
* Fix portal rules not requiring prayer
* Merge the grass laurels exit grass PR
* Merge in fortress bridge PR
* Do a little clean up
* Fix a regression
* Update after merge
* Some more stuff
* More Silent changes
* Update more info section in game info page
* Fix rules for atoll and swamp fuses
* Precollect cathedral fuse in ER
* actually just make the fuse useful instead of progression
* Add it to the swamp and cath rules too
* Fix cath fuse name
* Minor fixes and edits
* Some UT stuff
* Fix a couple more groups
* Move a bunch of UT stuff to its own file
* Fix up a couple UT things
* Couple minor ER fixes
* Formatting change
* UT poptracker stuff enabled since it's optional in one of the releases
* Add author string to world class
* Adjust local fill option name
* Update ut_stuff to match the PR
* Add exception handling for UT with old apworld
* Fix missing tracker_world
* Remove extra entrance from cath main -> elevator
Entry <-> Elev exists,
Entry <-> Main exists
So no connection is needed between Main and Elev
* Fix so that decoupled doesn't incorrectly use get_portal_info and get_paired_portal
* Fix so that decoupled doesn't incorrectly use get_portal_info and get_paired_portal
* Update for breakables poptracker
* Backup and warnings instead
* Update typing
* Delete old regions and rules, move stuff to logic_helpers and constants
* Delete now much less useful tests
* Fix breakables map tracking
* Add more comments to init
* Add todo to grass.py
* Fix up tests
* Pull out fuse and bell shuffle
* Pull out fuse and bell shuffle
* Update worlds/tunic/options.py
Co-authored-by: qwint <qwint.42@gmail.com>
* Update worlds/tunic/logic_helpers.py
Co-authored-by: qwint <qwint.42@gmail.com>
* {} -> () in state functions
* {} -> () in state functions
* Change {} -> () in state functions, use constant for gun
* Remove floating constants in er_data
* Finish hard deprecating FixedShop
* Finish hard deprecating FixedShop
* Fix zig skip showing up in decoupled fixed shop
---------
Co-authored-by: silent-destroyer <osilentdestroyer@gmail.com>
Co-authored-by: Silent <110704408+silent-destroyer@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: qwint <qwint.42@gmail.com>
2025-09-04 18:44:32 -04:00
|
|
|
base_id = 509342400
|
|
|
|
|
|
|
|
|
|
laurels = "Hero's Laurels"
|
|
|
|
|
grapple = "Magic Orb"
|
|
|
|
|
ice_dagger = "Magic Dagger"
|
|
|
|
|
fire_wand = "Magic Wand"
|
|
|
|
|
gun = "Gun"
|
|
|
|
|
lantern = "Lantern"
|
|
|
|
|
fairies = "Fairy"
|
|
|
|
|
coins = "Golden Coin"
|
|
|
|
|
prayer = "Pages 24-25 (Prayer)"
|
|
|
|
|
holy_cross = "Pages 42-43 (Holy Cross)"
|
|
|
|
|
icebolt = "Pages 52-53 (Icebolt)"
|
|
|
|
|
shield = "Shield"
|
|
|
|
|
key = "Key"
|
|
|
|
|
house_key = "Old House Key"
|
|
|
|
|
vault_key = "Fortress Vault Key"
|
|
|
|
|
mask = "Scavenger Mask"
|
|
|
|
|
red_hexagon = "Red Questagon"
|
|
|
|
|
green_hexagon = "Green Questagon"
|
|
|
|
|
blue_hexagon = "Blue Questagon"
|
|
|
|
|
gold_hexagon = "Gold Questagon"
|
|
|
|
|
|
|
|
|
|
swamp_fuse_1 = "Swamp Fuse 1"
|
|
|
|
|
swamp_fuse_2 = "Swamp Fuse 2"
|
|
|
|
|
swamp_fuse_3 = "Swamp Fuse 3"
|
|
|
|
|
cathedral_elevator_fuse = "Cathedral Elevator Fuse"
|
|
|
|
|
quarry_fuse_1 = "Quarry Fuse 1"
|
|
|
|
|
quarry_fuse_2 = "Quarry Fuse 2"
|
|
|
|
|
ziggurat_miniboss_fuse = "Ziggurat Miniboss Fuse"
|
|
|
|
|
ziggurat_teleporter_fuse = "Ziggurat Teleporter Fuse"
|
|
|
|
|
fortress_exterior_fuse_1 = "Fortress Exterior Fuse 1"
|
|
|
|
|
fortress_exterior_fuse_2 = "Fortress Exterior Fuse 2"
|
|
|
|
|
fortress_courtyard_upper_fuse = "Fortress Courtyard Upper Fuse"
|
|
|
|
|
fortress_courtyard_lower_fuse = "Fortress Courtyard Fuse"
|
|
|
|
|
beneath_the_vault_fuse = "Beneath the Vault Fuse" # event needs to be renamed probably
|
|
|
|
|
fortress_candles_fuse = "Fortress Candles Fuse"
|
|
|
|
|
fortress_door_left_fuse = "Fortress Door Left Fuse"
|
|
|
|
|
fortress_door_right_fuse = "Fortress Door Right Fuse"
|
|
|
|
|
west_furnace_fuse = "West Furnace Fuse"
|
|
|
|
|
west_garden_fuse = "West Garden Fuse"
|
|
|
|
|
atoll_northeast_fuse = "Atoll Northeast Fuse"
|
|
|
|
|
atoll_northwest_fuse = "Atoll Northwest Fuse"
|
|
|
|
|
atoll_southeast_fuse = "Atoll Southeast Fuse"
|
|
|
|
|
atoll_southwest_fuse = "Atoll Southwest Fuse"
|
|
|
|
|
library_lab_fuse = "Library Lab Fuse"
|
|
|
|
|
|
|
|
|
|
# "Quarry - [East] Bombable Wall" is excluded from this list since it has slightly different rules
|
|
|
|
|
bomb_walls = ["East Forest - Bombable Wall", "Eastern Vault Fortress - [East Wing] Bombable Wall",
|
|
|
|
|
"Overworld - [Central] Bombable Wall", "Overworld - [Southwest] Bombable Wall Near Fountain",
|
|
|
|
|
"Quarry - [West] Upper Area Bombable Wall", "Ruined Atoll - [Northwest] Bombable Wall"]
|