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
|
|
|
from enum import IntEnum
|
2025-03-08 11:25:47 -05:00
|
|
|
from typing import TYPE_CHECKING, NamedTuple
|
|
|
|
|
|
|
|
|
|
from BaseClasses import CollectionState, Region
|
|
|
|
|
from worlds.generic.Rules import set_rule
|
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
|
|
|
|
|
|
|
|
from .constants import base_id
|
2025-03-08 11:25:47 -05:00
|
|
|
from .er_rules import can_shop
|
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
|
|
|
from .logic_helpers import has_sword, has_melee
|
2025-03-08 11:25:47 -05:00
|
|
|
|
|
|
|
|
|
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
|
|
|
if TYPE_CHECKING:
|
|
|
|
|
from . import TunicWorld
|
2025-03-08 11:25:47 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class BreakableType(IntEnum):
|
|
|
|
|
pot = 1
|
|
|
|
|
fire_pot = 2
|
|
|
|
|
explosive_pot = 3
|
|
|
|
|
sign = 4
|
|
|
|
|
barrel = 5
|
|
|
|
|
crate = 6
|
|
|
|
|
table = 7
|
|
|
|
|
glass = 8
|
|
|
|
|
leaves = 9
|
|
|
|
|
wall = 10
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TunicLocationData(NamedTuple):
|
|
|
|
|
er_region: str
|
|
|
|
|
breakable: BreakableType
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
breakable_location_table: dict[str, TunicLocationData] = {
|
|
|
|
|
"Overworld - [Northwest] Sign by Quarry Gate": TunicLocationData("Overworld", BreakableType.sign),
|
|
|
|
|
"Overworld - [Central] Sign South of Checkpoint": TunicLocationData("Overworld", BreakableType.sign),
|
|
|
|
|
"Overworld - [Central] Sign by Ruined Passage": TunicLocationData("Overworld", BreakableType.sign),
|
|
|
|
|
"Overworld - [East] Pot near Slimes 1": TunicLocationData("East Overworld", BreakableType.pot),
|
|
|
|
|
"Overworld - [East] Pot near Slimes 2": TunicLocationData("East Overworld", BreakableType.pot),
|
|
|
|
|
"Overworld - [East] Pot near Slimes 3": TunicLocationData("East Overworld", BreakableType.pot),
|
|
|
|
|
"Overworld - [East] Pot near Slimes 4": TunicLocationData("East Overworld", BreakableType.pot),
|
|
|
|
|
"Overworld - [East] Pot near Slimes 5": TunicLocationData("East Overworld", BreakableType.pot),
|
|
|
|
|
"Overworld - [East] Forest Sign": TunicLocationData("East Overworld", BreakableType.sign),
|
|
|
|
|
"Overworld - [East] Fortress Sign": TunicLocationData("East Overworld", BreakableType.sign),
|
|
|
|
|
"Overworld - [North] Pot 1": TunicLocationData("Upper Overworld", BreakableType.pot),
|
|
|
|
|
"Overworld - [North] Pot 2": TunicLocationData("Upper Overworld", BreakableType.pot),
|
|
|
|
|
"Overworld - [North] Pot 3": TunicLocationData("Upper Overworld", BreakableType.pot),
|
|
|
|
|
"Overworld - [North] Pot 4": TunicLocationData("Upper Overworld", BreakableType.pot),
|
|
|
|
|
"Overworld - [West] Sign Near West Garden Entrance": TunicLocationData("Overworld to West Garden from Furnace", BreakableType.sign),
|
|
|
|
|
"Stick House - Pot 1": TunicLocationData("Stick House", BreakableType.pot),
|
|
|
|
|
"Stick House - Pot 2": TunicLocationData("Stick House", BreakableType.pot),
|
|
|
|
|
"Stick House - Pot 3": TunicLocationData("Stick House", BreakableType.pot),
|
|
|
|
|
"Stick House - Pot 4": TunicLocationData("Stick House", BreakableType.pot),
|
|
|
|
|
"Stick House - Pot 5": TunicLocationData("Stick House", BreakableType.pot),
|
|
|
|
|
"Stick House - Pot 6": TunicLocationData("Stick House", BreakableType.pot),
|
|
|
|
|
"Stick House - Pot 7": TunicLocationData("Stick House", BreakableType.pot),
|
|
|
|
|
"Ruined Shop - Pot 1": TunicLocationData("Ruined Shop", BreakableType.pot),
|
|
|
|
|
"Ruined Shop - Pot 2": TunicLocationData("Ruined Shop", BreakableType.pot),
|
|
|
|
|
"Ruined Shop - Pot 3": TunicLocationData("Ruined Shop", BreakableType.pot),
|
|
|
|
|
"Ruined Shop - Pot 4": TunicLocationData("Ruined Shop", BreakableType.pot),
|
|
|
|
|
"Ruined Shop - Pot 5": TunicLocationData("Ruined Shop", BreakableType.pot),
|
|
|
|
|
"Hourglass Cave - Sign": TunicLocationData("Hourglass Cave", BreakableType.sign),
|
|
|
|
|
"Forest Belltower - Pot by Slimes 1": TunicLocationData("Forest Belltower Main", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot by Slimes 2": TunicLocationData("Forest Belltower Main", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot by Slimes 3": TunicLocationData("Forest Belltower Main", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot by Slimes 4": TunicLocationData("Forest Belltower Main", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot by Slimes 5": TunicLocationData("Forest Belltower Main", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot by Slimes 6": TunicLocationData("Forest Belltower Main", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - [Upper] Barrel 1": TunicLocationData("Forest Belltower Upper", BreakableType.barrel),
|
|
|
|
|
"Forest Belltower - [Upper] Barrel 2": TunicLocationData("Forest Belltower Upper", BreakableType.barrel),
|
|
|
|
|
"Forest Belltower - [Upper] Barrel 3": TunicLocationData("Forest Belltower Upper", BreakableType.barrel),
|
|
|
|
|
"Forest Belltower - Pot after Guard Captain 1": TunicLocationData("Forest Belltower Upper", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot after Guard Captain 2": TunicLocationData("Forest Belltower Upper", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot after Guard Captain 3": TunicLocationData("Forest Belltower Upper", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot after Guard Captain 4": TunicLocationData("Forest Belltower Upper", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot after Guard Captain 5": TunicLocationData("Forest Belltower Upper", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot after Guard Captain 6": TunicLocationData("Forest Belltower Upper", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot after Guard Captain 7": TunicLocationData("Forest Belltower Upper", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot after Guard Captain 8": TunicLocationData("Forest Belltower Upper", BreakableType.pot),
|
|
|
|
|
"Forest Belltower - Pot after Guard Captain 9": TunicLocationData("Forest Belltower Upper", BreakableType.pot),
|
|
|
|
|
"Guardhouse 1 - Pot 1": TunicLocationData("Guard House 1 East", BreakableType.pot),
|
|
|
|
|
"Guardhouse 1 - Pot 2": TunicLocationData("Guard House 1 East", BreakableType.pot),
|
|
|
|
|
"Guardhouse 1 - Pot 3": TunicLocationData("Guard House 1 East", BreakableType.pot),
|
|
|
|
|
"Guardhouse 1 - Pot 4": TunicLocationData("Guard House 1 East", BreakableType.pot),
|
|
|
|
|
"Guardhouse 1 - Pot 5": TunicLocationData("Guard House 1 East", BreakableType.pot),
|
|
|
|
|
"East Forest - Sign by Grave Path": TunicLocationData("East Forest", BreakableType.sign),
|
|
|
|
|
"East Forest - Sign by Guardhouse 1": TunicLocationData("East Forest", BreakableType.sign),
|
|
|
|
|
"East Forest - Pot by Grave Path 1": TunicLocationData("East Forest", BreakableType.pot),
|
|
|
|
|
"East Forest - Pot by Grave Path 2": TunicLocationData("East Forest", BreakableType.pot),
|
|
|
|
|
"East Forest - Pot by Grave Path 3": TunicLocationData("East Forest", BreakableType.pot),
|
|
|
|
|
"East Forest - Pot by Envoy 1": TunicLocationData("East Forest", BreakableType.pot),
|
|
|
|
|
"East Forest - Pot by Envoy 2": TunicLocationData("East Forest", BreakableType.pot),
|
|
|
|
|
"East Forest - Pot by Envoy 3": TunicLocationData("East Forest", BreakableType.pot),
|
|
|
|
|
"Guardhouse 2 - Bottom Floor Pot 1": TunicLocationData("Guard House 2 Lower", BreakableType.pot),
|
|
|
|
|
"Guardhouse 2 - Bottom Floor Pot 2": TunicLocationData("Guard House 2 Lower", BreakableType.pot),
|
|
|
|
|
"Guardhouse 2 - Bottom Floor Pot 3": TunicLocationData("Guard House 2 Lower", BreakableType.pot),
|
|
|
|
|
"Guardhouse 2 - Bottom Floor Pot 4": TunicLocationData("Guard House 2 Lower", BreakableType.pot),
|
|
|
|
|
"Guardhouse 2 - Bottom Floor Pot 5": TunicLocationData("Guard House 2 Lower", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Side Room] Pot by Chest 1": TunicLocationData("Beneath the Well Back", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Side Room] Pot by Chest 2": TunicLocationData("Beneath the Well Back", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Side Room] Pot by Chest 3": TunicLocationData("Beneath the Well Back", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel by Bridge 1": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel by Bridge 2": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel by Bridge 3": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel after Back Corridor 1": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel after Back Corridor 2": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel after Back Corridor 3": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel after Back Corridor 4": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel after Back Corridor 5": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel by West Turret 1": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel by West Turret 2": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Barrel by West Turret 3": TunicLocationData("Beneath the Well Main", BreakableType.barrel),
|
|
|
|
|
"Beneath the Well - [Third Room] Pot by East Turret 1": TunicLocationData("Beneath the Well Main", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Third Room] Pot by East Turret 2": TunicLocationData("Beneath the Well Main", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Third Room] Pot by East Turret 3": TunicLocationData("Beneath the Well Main", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Third Room] Pot by East Turret 4": TunicLocationData("Beneath the Well Main", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Third Room] Pot by East Turret 5": TunicLocationData("Beneath the Well Main", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Third Room] Pot by East Turret 6": TunicLocationData("Beneath the Well Main", BreakableType.pot),
|
|
|
|
|
"Beneath the Well - [Third Room] Pot by East Turret 7": TunicLocationData("Beneath the Well Main", BreakableType.pot),
|
|
|
|
|
"Well Boss - Barrel 1": TunicLocationData("Well Boss", BreakableType.barrel),
|
|
|
|
|
"Well Boss - Barrel 2": TunicLocationData("Well Boss", BreakableType.barrel),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 1": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 2": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 3": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 4": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 5": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 6": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 7": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 8": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 9": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 10": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 11": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 12": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 13": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - Pot Hallway Pot 14": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - 2nd Laser Room Pot 1": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - 2nd Laser Room Pot 2": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - 2nd Laser Room Pot 3": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - 2nd Laser Room Pot 4": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"Dark Tomb - 2nd Laser Room Pot 5": TunicLocationData("Dark Tomb Main", BreakableType.pot),
|
|
|
|
|
"West Garden House - Pot 1": TunicLocationData("Magic Dagger House", BreakableType.pot),
|
|
|
|
|
"West Garden House - Pot 2": TunicLocationData("Magic Dagger House", BreakableType.pot),
|
|
|
|
|
"West Garden House - Pot 3": TunicLocationData("Magic Dagger House", BreakableType.pot),
|
|
|
|
|
"Fortress Courtyard - Fire Pot 1": TunicLocationData("Fortress Courtyard westmost pots", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Courtyard - Fire Pot 2": TunicLocationData("Fortress Courtyard westmost pots", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Courtyard - Fire Pot 3": TunicLocationData("Fortress Courtyard west pots", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Courtyard - Fire Pot 4": TunicLocationData("Fortress Courtyard west pots", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Courtyard - Fire Pot 5": TunicLocationData("Fortress Courtyard", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Courtyard - Fire Pot 6": TunicLocationData("Fortress Courtyard", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Courtyard - Fire Pot 7": TunicLocationData("Fortress Courtyard", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Courtyard - Fire Pot 8": TunicLocationData("Fortress Courtyard", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Courtyard - Upper Fire Pot": TunicLocationData("Fortress Courtyard Upper pot", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Grave Path - [Entry] Pot 1": TunicLocationData("Fortress Grave Path Entry", BreakableType.pot),
|
|
|
|
|
"Fortress Grave Path - [Entry] Pot 2": TunicLocationData("Fortress Grave Path Entry", BreakableType.pot),
|
|
|
|
|
"Fortress Grave Path - [By Grave] Pot 1": TunicLocationData("Fortress Grave Path pots", BreakableType.pot),
|
|
|
|
|
"Fortress Grave Path - [By Grave] Pot 2": TunicLocationData("Fortress Grave Path pots", BreakableType.pot),
|
|
|
|
|
"Fortress Grave Path - [By Grave] Pot 3": TunicLocationData("Fortress Grave Path pots", BreakableType.pot),
|
|
|
|
|
"Fortress Grave Path - [By Grave] Pot 4": TunicLocationData("Fortress Grave Path pots", BreakableType.pot),
|
|
|
|
|
"Fortress Grave Path - [By Grave] Pot 5": TunicLocationData("Fortress Grave Path pots", BreakableType.pot),
|
|
|
|
|
"Fortress Grave Path - [By Grave] Pot 6": TunicLocationData("Fortress Grave Path pots", BreakableType.pot),
|
|
|
|
|
"Fortress Grave Path - [Central] Fire Pot 1": TunicLocationData("Fortress Grave Path westmost pot", BreakableType.fire_pot),
|
|
|
|
|
"Fortress Grave Path - [Central] Fire Pot 2": TunicLocationData("Fortress Grave Path Combat", BreakableType.fire_pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 1": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 2": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 3": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 4": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 5": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 6": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 7": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 8": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 9": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 10": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [Central] Pot by Door 11": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [East Wing] Pot by Broken Checkpoint 1": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [East Wing] Pot by Broken Checkpoint 2": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [East Wing] Pot by Broken Checkpoint 3": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Pot by Checkpoint 1": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Pot by Checkpoint 2": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Pot by Checkpoint 3": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Pot by Overlook 1": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Pot by Overlook 2": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Slorm Room Pot 1": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Slorm Room Pot 2": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Slorm Room Pot 3": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Chest Room Pot 1": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Chest Room Pot 2": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Pot by Stairs to Basement 1": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Pot by Stairs to Basement 2": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Eastern Vault Fortress - [West Wing] Pot by Stairs to Basement 3": TunicLocationData("Eastern Vault Fortress", BreakableType.pot),
|
|
|
|
|
"Beneath the Fortress - Entry Spot Pot 1": TunicLocationData("Beneath the Vault Entry Spot", BreakableType.pot),
|
|
|
|
|
"Beneath the Fortress - Entry Spot Pot 2": TunicLocationData("Beneath the Vault Entry Spot", BreakableType.pot),
|
|
|
|
|
"Beneath the Fortress - Entry Spot Crate 1": TunicLocationData("Beneath the Vault Entry Spot", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Entry Spot Crate 2": TunicLocationData("Beneath the Vault Entry Spot", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Entry Spot Crate 3": TunicLocationData("Beneath the Vault Entry Spot", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Entry Spot Crate 4": TunicLocationData("Beneath the Vault Entry Spot", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Entry Spot Crate 5": TunicLocationData("Beneath the Vault Entry Spot", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Entry Spot Crate 6": TunicLocationData("Beneath the Vault Entry Spot", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Entry Spot Crate 7": TunicLocationData("Beneath the Vault Entry Spot", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Slorm Room Crate 1": TunicLocationData("Beneath the Vault Main", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Slorm Room Crate 2": TunicLocationData("Beneath the Vault Main", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Crate under Rope 1": TunicLocationData("Beneath the Vault Main", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Crate under Rope 2": TunicLocationData("Beneath the Vault Main", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Crate under Rope 3": TunicLocationData("Beneath the Vault Main", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Crate under Rope 4": TunicLocationData("Beneath the Vault Main", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Crate under Rope 5": TunicLocationData("Beneath the Vault Main", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Crate under Rope 6": TunicLocationData("Beneath the Vault Main", BreakableType.crate),
|
|
|
|
|
"Beneath the Fortress - Fuse Room Fire Pot 1": TunicLocationData("Beneath the Vault Back", BreakableType.fire_pot),
|
|
|
|
|
"Beneath the Fortress - Fuse Room Fire Pot 2": TunicLocationData("Beneath the Vault Back", BreakableType.fire_pot),
|
|
|
|
|
"Beneath the Fortress - Fuse Room Fire Pot 3": TunicLocationData("Beneath the Vault Back", BreakableType.fire_pot),
|
|
|
|
|
"Beneath the Fortress - Barrel by Back Room 1": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Barrel by Back Room 2": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Barrel by Back Room 3": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Barrel by Back Room 4": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Barrel by Back Room 5": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Barrel by Back Room 6": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Back Room Barrel 1": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Back Room Barrel 2": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Back Room Barrel 3": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Back Room Barrel 4": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Back Room Barrel 5": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Back Room Barrel 6": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Beneath the Fortress - Back Room Barrel 7": TunicLocationData("Beneath the Vault Back", BreakableType.barrel),
|
|
|
|
|
"Fortress Leaf Piles - Leaf Pile 1": TunicLocationData("Fortress Leaf Piles", BreakableType.leaves),
|
|
|
|
|
"Fortress Leaf Piles - Leaf Pile 2": TunicLocationData("Fortress Leaf Piles", BreakableType.leaves),
|
|
|
|
|
"Fortress Leaf Piles - Leaf Pile 3": TunicLocationData("Fortress Leaf Piles", BreakableType.leaves),
|
|
|
|
|
"Fortress Leaf Piles - Leaf Pile 4": TunicLocationData("Fortress Leaf Piles", BreakableType.leaves),
|
|
|
|
|
"Fortress Arena - Pot 1": TunicLocationData("Fortress Arena", BreakableType.pot),
|
|
|
|
|
"Fortress Arena - Pot 2": TunicLocationData("Fortress Arena", BreakableType.pot),
|
|
|
|
|
"Ruined Atoll - [West] Pot in Broken House 1": TunicLocationData("Ruined Atoll", BreakableType.pot),
|
|
|
|
|
"Ruined Atoll - [West] Pot in Broken House 2": TunicLocationData("Ruined Atoll", BreakableType.pot),
|
|
|
|
|
"Ruined Atoll - [West] Table in Broken House": TunicLocationData("Ruined Atoll", BreakableType.table),
|
|
|
|
|
"Ruined Atoll - [South] Explosive Pot near Birds": TunicLocationData("Ruined Atoll", BreakableType.explosive_pot),
|
|
|
|
|
"Frog Stairs - [Upper] Pot 1": TunicLocationData("Frog Stairs Upper", BreakableType.pot),
|
|
|
|
|
"Frog Stairs - [Upper] Pot 2": TunicLocationData("Frog Stairs Upper", BreakableType.pot),
|
|
|
|
|
"Frog Stairs - [Upper] Pot 3": TunicLocationData("Frog Stairs Upper", BreakableType.pot),
|
|
|
|
|
"Frog Stairs - [Upper] Pot 4": TunicLocationData("Frog Stairs Upper", BreakableType.pot),
|
|
|
|
|
"Frog Stairs - [Upper] Pot 5": TunicLocationData("Frog Stairs Upper", BreakableType.pot),
|
|
|
|
|
"Frog Stairs - [Upper] Pot 6": TunicLocationData("Frog Stairs Upper", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Pot above Orb Altar 1": TunicLocationData("Frog's Domain Front", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Pot above Orb Altar 2": TunicLocationData("Frog's Domain Front", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Side Room Pot 1": TunicLocationData("Frog's Domain Main", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Side Room Pot 2": TunicLocationData("Frog's Domain Main", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Side Room Pot 3": TunicLocationData("Frog's Domain Main", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Main Room Pot 1": TunicLocationData("Frog's Domain Main", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Main Room Pot 2": TunicLocationData("Frog's Domain Main", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Side Room Pot 4": TunicLocationData("Frog's Domain Main", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Pot after Gate 1": TunicLocationData("Frog's Domain Main", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Pot after Gate 2": TunicLocationData("Frog's Domain Main", BreakableType.pot),
|
|
|
|
|
"Frog's Domain - Orb Room Explosive Pot 1": TunicLocationData("Frog's Domain Main", BreakableType.explosive_pot),
|
|
|
|
|
"Frog's Domain - Orb Room Explosive Pot 2": TunicLocationData("Frog's Domain Main", BreakableType.explosive_pot),
|
|
|
|
|
"Library Lab - Display Case 1": TunicLocationData("Library Lab", BreakableType.glass),
|
|
|
|
|
"Library Lab - Display Case 2": TunicLocationData("Library Lab", BreakableType.glass),
|
|
|
|
|
"Library Lab - Display Case 3": TunicLocationData("Library Lab", BreakableType.glass),
|
|
|
|
|
"Quarry - [East] Explosive Pot 1": TunicLocationData("Quarry", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [East] Explosive Pot 2": TunicLocationData("Quarry", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [East] Explosive Pot 3": TunicLocationData("Quarry", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [East] Explosive Pot beneath Scaffolding": TunicLocationData("Quarry", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [Central] Explosive Pot near Monastery 1": TunicLocationData("Quarry Monastery Entry", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [Central] Explosive Pot near Monastery 2": TunicLocationData("Quarry Monastery Entry", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [Back Entrance] Pot 1": TunicLocationData("Quarry Back", BreakableType.pot),
|
|
|
|
|
"Quarry - [Back Entrance] Pot 2": TunicLocationData("Quarry Back", BreakableType.pot),
|
|
|
|
|
"Quarry - [Back Entrance] Pot 3": TunicLocationData("Quarry Back", BreakableType.pot),
|
|
|
|
|
"Quarry - [Back Entrance] Pot 4": TunicLocationData("Quarry Back", BreakableType.pot),
|
|
|
|
|
"Quarry - [Back Entrance] Pot 5": TunicLocationData("Quarry Back", BreakableType.pot),
|
|
|
|
|
"Quarry - [Central] Explosive Pot near Shortcut Ladder 1": TunicLocationData("Quarry Back", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [Central] Explosive Pot near Shortcut Ladder 2": TunicLocationData("Quarry Back", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [Central] Crate near Shortcut Ladder 1": TunicLocationData("Quarry Back", BreakableType.crate),
|
|
|
|
|
"Quarry - [Central] Crate near Shortcut Ladder 2": TunicLocationData("Quarry Back", BreakableType.crate),
|
|
|
|
|
"Quarry - [Central] Crate near Shortcut Ladder 3": TunicLocationData("Quarry Back", BreakableType.crate),
|
|
|
|
|
"Quarry - [Central] Crate near Shortcut Ladder 4": TunicLocationData("Quarry Back", BreakableType.crate),
|
|
|
|
|
"Quarry - [Central] Crate near Shortcut Ladder 5": TunicLocationData("Quarry Back", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Explosive Pot near Bombable Wall 1": TunicLocationData("Lower Quarry upper pots", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [West] Explosive Pot near Bombable Wall 2": TunicLocationData("Lower Quarry upper pots", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [West] Explosive Pot above Shooting Range": TunicLocationData("Lower Quarry", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [West] Explosive Pot near Isolated Chest 1": TunicLocationData("Lower Quarry", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [West] Explosive Pot near Isolated Chest 2": TunicLocationData("Lower Quarry", BreakableType.explosive_pot),
|
|
|
|
|
"Quarry - [West] Crate by Shooting Range 1": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Crate by Shooting Range 2": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Crate by Shooting Range 3": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Crate by Shooting Range 4": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Crate by Shooting Range 5": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Crate near Isolated Chest 1": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Crate near Isolated Chest 2": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Crate near Isolated Chest 3": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Crate near Isolated Chest 4": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [West] Crate near Isolated Chest 5": TunicLocationData("Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [Lowlands] Crate 1": TunicLocationData("Even Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Quarry - [Lowlands] Crate 2": TunicLocationData("Even Lower Quarry", BreakableType.crate),
|
|
|
|
|
"Monastery - Crate 1": TunicLocationData("Monastery Back", BreakableType.crate),
|
|
|
|
|
"Monastery - Crate 2": TunicLocationData("Monastery Back", BreakableType.crate),
|
|
|
|
|
"Monastery - Crate 3": TunicLocationData("Monastery Back", BreakableType.crate),
|
|
|
|
|
"Monastery - Crate 4": TunicLocationData("Monastery Back", BreakableType.crate),
|
|
|
|
|
"Monastery - Crate 5": TunicLocationData("Monastery Back", BreakableType.crate),
|
|
|
|
|
"Monastery - Crate 6": TunicLocationData("Monastery Back", BreakableType.crate),
|
|
|
|
|
"Monastery - Crate 7": TunicLocationData("Monastery Back", BreakableType.crate),
|
|
|
|
|
"Monastery - Crate 8": TunicLocationData("Monastery Back", BreakableType.crate),
|
|
|
|
|
"Monastery - Crate 9": TunicLocationData("Monastery Back", BreakableType.crate),
|
|
|
|
|
"Cathedral - [1F] Pot by Stairs 1": TunicLocationData("Cathedral Main", BreakableType.pot),
|
|
|
|
|
"Cathedral - [1F] Pot by Stairs 2": TunicLocationData("Cathedral Main", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 1": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 2": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 3": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 4": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 5": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 6": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 7": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 8": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 9": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 10": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 11": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 12": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 13": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 14": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 15": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 16": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 17": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 18": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 19": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 20": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 21": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 22": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 23": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 24": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 25": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 26": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 27": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 28": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 29": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 30": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 31": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 32": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Purgatory - Pot 33": TunicLocationData("Purgatory", BreakableType.pot),
|
|
|
|
|
"Overworld - [Central] Break Bombable Wall": TunicLocationData("Overworld", BreakableType.wall),
|
|
|
|
|
"Overworld - [Southwest] Break Cube Cave Bombable Wall": TunicLocationData("Overworld", BreakableType.wall),
|
|
|
|
|
"Overworld - [Southwest] Break Bombable Wall near Fountain": TunicLocationData("Overworld", BreakableType.wall),
|
|
|
|
|
"Ruined Atoll - [Northwest] Break Bombable Wall": TunicLocationData("Ruined Atoll", BreakableType.wall),
|
|
|
|
|
"East Forest - Break Bombable Wall": TunicLocationData("East Forest", BreakableType.wall),
|
|
|
|
|
"Eastern Vault Fortress - [East Wing] Break Bombable Wall": TunicLocationData("Eastern Vault Fortress", BreakableType.wall),
|
|
|
|
|
"Quarry - [West] Break Upper Area Bombable Wall": TunicLocationData("Quarry Back", BreakableType.wall),
|
|
|
|
|
"Quarry - [East] Break Bombable Wall": TunicLocationData("Quarry", BreakableType.wall),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
breakable_base_id = base_id + 8000
|
2025-03-08 11:25:47 -05:00
|
|
|
breakable_location_name_to_id: dict[str, int] = {name: breakable_base_id + index
|
|
|
|
|
for index, name in enumerate(breakable_location_table)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# key is the name in the table above, value is the loc group name for the area
|
|
|
|
|
loc_group_convert: dict[str, str] = {
|
|
|
|
|
"East Overworld": "Overworld",
|
|
|
|
|
"Upper Overworld": "Overworld",
|
|
|
|
|
"Overworld to West Garden from Furnace": "Overworld",
|
|
|
|
|
"Forest Belltower Upper": "Forest Belltower",
|
|
|
|
|
"Forest Belltower Main": "Forest Belltower",
|
|
|
|
|
"Guard House 1 East": "Guardhouse 1",
|
|
|
|
|
"Guard House 2 Lower": "Guardhouse 2",
|
|
|
|
|
"Beneath the Well Back": "Beneath the Well",
|
|
|
|
|
"Beneath the Well Main": "Beneath the Well",
|
|
|
|
|
"Well Boss": "Dark Tomb Checkpoint",
|
|
|
|
|
"Dark Tomb Main": "Dark Tomb",
|
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
|
|
|
"Magic Dagger House": "West Garden House",
|
2025-03-08 11:25:47 -05:00
|
|
|
"Fortress Courtyard Upper": "Fortress Courtyard",
|
|
|
|
|
"Fortress Courtyard Upper pot": "Fortress Courtyard",
|
|
|
|
|
"Fortress Courtyard west pots": "Fortress Courtyard",
|
|
|
|
|
"Fortress Courtyard westmost pots": "Fortress Courtyard",
|
|
|
|
|
"Beneath the Vault Entry Spot": "Beneath the Fortress",
|
|
|
|
|
"Beneath the Vault Main": "Beneath the Fortress",
|
|
|
|
|
"Beneath the Vault Back": "Beneath the Fortress",
|
|
|
|
|
"Fortress Grave Path Entry": "Fortress Grave Path",
|
|
|
|
|
"Fortress Grave Path Combat": "Fortress Grave Path",
|
|
|
|
|
"Fortress Grave Path westmost pot": "Fortress Grave Path",
|
|
|
|
|
"Fortress Grave Path pots": "Fortress Grave Path",
|
|
|
|
|
"Dusty": "Fortress Leaf Piles",
|
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
|
|
|
"Frog Stairs Upper": "Frog Stairway",
|
|
|
|
|
"Frog's Domain Front": "Frog's Domain",
|
|
|
|
|
"Frog's Domain Main": "Frog's Domain",
|
2025-03-08 11:25:47 -05:00
|
|
|
"Quarry Monastery Entry": "Quarry",
|
|
|
|
|
"Quarry Back": "Quarry",
|
|
|
|
|
"Lower Quarry": "Quarry",
|
|
|
|
|
"Lower Quarry upper pots": "Quarry",
|
|
|
|
|
"Even Lower Quarry": "Quarry",
|
|
|
|
|
"Monastery Back": "Monastery",
|
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
|
|
|
"Cathedral Main": "Cathedral",
|
2025-03-08 11:25:47 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
breakable_location_groups: dict[str, set[str]] = {}
|
|
|
|
|
for location_name, location_data in breakable_location_table.items():
|
|
|
|
|
group_name = loc_group_convert.get(location_data.er_region, location_data.er_region)
|
|
|
|
|
breakable_location_groups.setdefault(group_name, set()).add(location_name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def can_break_breakables(state: CollectionState, world: "TunicWorld") -> bool:
|
|
|
|
|
return has_melee(state, world.player) or state.has_any(("Magic Wand", "Gun"), world.player)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# and also the table
|
|
|
|
|
def can_break_signs(state: CollectionState, world: "TunicWorld") -> bool:
|
|
|
|
|
return (has_sword(state, world.player) or state.has_any(("Magic Wand", "Gun"), world.player)
|
|
|
|
|
or (has_melee(state, world.player) and state.has("Glass Cannon", world.player)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def can_break_leaf_piles(state: CollectionState, world: "TunicWorld") -> bool:
|
|
|
|
|
return has_melee(state, world.player) or state.has_any(("Magic Dagger", "Gun"), world.player)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def can_break_bomb_walls(state: CollectionState, world: "TunicWorld") -> bool:
|
|
|
|
|
return state.has("Gun", world.player) or can_shop(state, world)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_breakable_exclusive_regions(world: "TunicWorld") -> list[Region]:
|
|
|
|
|
player = world.player
|
|
|
|
|
multiworld = world.multiworld
|
|
|
|
|
new_regions: list[Region] = []
|
|
|
|
|
|
|
|
|
|
region = Region("Fortress Courtyard westmost pots", player, multiworld)
|
|
|
|
|
new_regions.append(region)
|
|
|
|
|
world.get_region("Fortress Courtyard").connect(region)
|
|
|
|
|
world.get_region("Fortress Exterior near cave").connect(
|
|
|
|
|
region, rule=lambda state: state.has_any(("Magic Wand", "Gun"), player))
|
|
|
|
|
|
|
|
|
|
region = Region("Fortress Courtyard west pots", player, multiworld)
|
|
|
|
|
new_regions.append(region)
|
|
|
|
|
world.get_region("Fortress Courtyard").connect(region)
|
|
|
|
|
world.get_region("Fortress Exterior near cave").connect(
|
|
|
|
|
region, rule=lambda state: state.has("Magic Wand", player))
|
|
|
|
|
|
|
|
|
|
region = Region("Fortress Courtyard Upper pot", player, multiworld)
|
|
|
|
|
new_regions.append(region)
|
|
|
|
|
world.get_region("Fortress Courtyard Upper").connect(region)
|
|
|
|
|
world.get_region("Fortress Courtyard").connect(
|
|
|
|
|
region, rule=lambda state: state.has("Magic Wand", player))
|
|
|
|
|
|
|
|
|
|
region = Region("Fortress Grave Path westmost pot", player, multiworld)
|
|
|
|
|
new_regions.append(region)
|
|
|
|
|
world.get_region("Fortress Grave Path Entry").connect(region)
|
|
|
|
|
world.get_region("Fortress Grave Path Upper").connect(
|
|
|
|
|
region, rule=lambda state: state.has_any(("Magic Wand", "Gun"), player))
|
|
|
|
|
|
|
|
|
|
region = Region("Fortress Grave Path pots", player, multiworld)
|
|
|
|
|
new_regions.append(region)
|
|
|
|
|
world.get_region("Fortress Grave Path by Grave").connect(region)
|
|
|
|
|
world.get_region("Fortress Grave Path Dusty Entrance Region").connect(
|
|
|
|
|
region, rule=lambda state: state.has("Magic Wand", player))
|
|
|
|
|
|
|
|
|
|
region = Region("Lower Quarry upper pots", player, multiworld)
|
|
|
|
|
new_regions.append(region)
|
|
|
|
|
world.get_region("Lower Quarry").connect(region)
|
|
|
|
|
world.get_region("Quarry Back").connect(
|
|
|
|
|
region, rule=lambda state: state.has_any(("Magic Wand", "Gun"), player))
|
|
|
|
|
|
|
|
|
|
for region in new_regions:
|
|
|
|
|
multiworld.regions.append(region)
|
|
|
|
|
|
|
|
|
|
return new_regions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def set_breakable_location_rules(world: "TunicWorld") -> None:
|
|
|
|
|
for loc_name, loc_data in breakable_location_table.items():
|
|
|
|
|
if not world.options.entrance_rando and loc_data.er_region == "Purgatory":
|
|
|
|
|
continue
|
|
|
|
|
location = world.get_location(loc_name)
|
|
|
|
|
if loc_data.breakable == BreakableType.leaves:
|
|
|
|
|
set_rule(location, lambda state: can_break_leaf_piles(state, world))
|
|
|
|
|
elif loc_data.breakable in (BreakableType.sign, BreakableType.table):
|
|
|
|
|
set_rule(location, lambda state: can_break_signs(state, world))
|
|
|
|
|
elif loc_data.breakable == BreakableType.wall:
|
|
|
|
|
set_rule(location, lambda state: can_break_bomb_walls(state, world))
|
|
|
|
|
else:
|
|
|
|
|
set_rule(location, lambda state: can_break_breakables(state, world))
|