feat: 300 Rupees marked as priority

fix: PreferredLocationGroup works with priority items and pre-activated flute
This commit is contained in:
aerinon
2024-07-15 13:02:06 -06:00
parent a37d783ad8
commit e681968aa2
6 changed files with 20 additions and 15 deletions

View File

@@ -6,6 +6,17 @@
# Patch Notes
Changelog archive
* 1.4.5
- Logic: Added appropriate enemy logic to GT Mimics 1 and 2 rooms
- Logic: Added appropriate enemy logic to Mire 2 room. Note this does change the default logical strats, due to how enemy kill logic works.
- Ice Rod + 1 Bomb is now out of logic
- Fire Rod + 1 Bomb is now out of logic
- Fire Rod + 1 magic extension is still in logic
- Byrna + 1 magic extension is newly in logic
(One magic extension is either half magic or a bottle with the ability to purchase a blue or green potion) In general, making up for a lack of magic extension with a few bombs is something that could be added to the logic. Using the ice rod to freeze an enemy and then using that enemy to deal blunt damage and then using bombs to clear the frozen enemy is another strategy that could be added to the logic someday. If these are important to you, let me know.
- Generation: Fixed an issue with dungeonsfull shuffle
* 1.4.4
- Fixed a crash near the end of the credits when total collection rate was over 1000
* 1.4.3

View File

@@ -448,11 +448,9 @@ def distribute_items_restrictive(world, gftower_trash=False, fill_locations=None
fill_restrictive(world, world.state, fill_locations, progitempool, key_pool, vanilla=True)
fill_restrictive(world, world.state, fill_locations, progitempool, key_pool)
random.shuffle(fill_locations)
if world.algorithm == 'balanced':
fast_fill(world, prioitempool, fill_locations)
elif world.algorithm == 'vanilla_fill':
if world.algorithm == 'vanilla_fill':
fast_vanilla_fill(world, prioitempool, fill_locations)
elif world.algorithm in ['major_only', 'dungeon_only', 'district']:
elif world.algorithm in ['balanced', 'major_only', 'dungeon_only', 'district']:
filtered_fill(world, prioitempool, fill_locations)
else: # just need to ensure dungeon items still get placed in dungeons
fast_equitable_fill(world, prioitempool, fill_locations)

View File

@@ -105,7 +105,7 @@ item_table = {'Bow': (True, False, None, 0x0B, 200, 'Bow!\nJoin the archer class
'Rupees (20)': (False, False, None, 0x36, 10, 'Rupees!\nJust couch\ncash.', 'and the couch cash', 'the piggy-bank kid', 'life lesson for sale', 'the witch buying drugs', 'destitute boy has lunch again', 'a red rupee'),
'Rupees (50)': (False, False, None, 0x41, 25, 'Rupees!\nA big pile!', 'and the rupee pile', 'the well-off kid', 'life lesson for sale', 'buying okay drugs', 'destitute boy has dinner again', 'fifty rupees'),
'Rupees (100)': (False, False, None, 0x40, 50, 'Rupees!\nA big stash!', 'and the rupee stash', 'the kind-of-rich kid', 'life lesson for sale', 'buying good drugs', 'affluent boy goes drinking again', 'one hundred rupees'),
'Rupees (300)': (False, False, None, 0x46, 150, 'Rupees!\nA big hoard!', 'and the rupee hoard', 'the really-rich kid', 'life lesson for sale', 'buying the best drugs', 'fat-cat boy is rich again', 'three hundred rupees'),
'Rupees (300)': (False, True, None, 0x46, 150, 'Rupees!\nA big hoard!', 'and the rupee hoard', 'the really-rich kid', 'life lesson for sale', 'buying the best drugs', 'fat-cat boy is rich again', 'three hundred rupees'),
'Rupoor': (False, False, None, 0x59, 0, 'Rupoor!\nI\'ll take your rupees!', 'and the toll-booth', 'the toll-booth kid', 'double loss for sale', 'witch stole your rupees', 'affluent boy steals rupees', 'a rupoor'),
'Red Clock': (False, True, None, 0x5B, 0, 'Red Clock!\nA waste of time.', 'the ruby clock', 'the ruby-time kid', 'red time for sale', 'for ruby time', 'moment boy travels time again', 'a red clock'),
'Blue Clock': (False, True, None, 0x5C, 50, 'Blue Clock!\nA bit of time!', 'the sapphire clock', 'sapphire-time kid', 'blue time for sale', 'for sapphire time', 'moment boy time travels again', 'a blue clock'),

View File

@@ -38,7 +38,7 @@ from source.enemizer.DamageTables import DamageTable
from source.enemizer.Enemizer import randomize_enemies
from source.rom.DataTables import init_data_tables
version_number = '1.4.5'
version_number = '1.4.6'
version_branch = '-u'
__version__ = f'{version_number}{version_branch}'

View File

@@ -1,12 +1,6 @@
# Patch Notes
1.4.5
- Logic: Added appropriate enemy logic to GT Mimics 1 and 2 rooms
- Logic: Added appropriate enemy logic to Mire 2 room. Note this does change the default logical strats, due to how enemy kill logic works.
- Ice Rod + 1 Bomb is now out of logic
- Fire Rod + 1 Bomb is now out of logic
- Fire Rod + 1 magic extension is still in logic
- Byrna + 1 magic extension is newly in logic
1.4.6
(One magic extension is either half magic or a bottle with the ability to purchase a blue or green potion) In general, making up for a lack of magic extension with a few bombs is something that could be added to the logic. Using the ice rod to freeze an enemy and then using that enemy to deal blunt damage and then using bombs to clear the frozen enemy is another strategy that could be added to the logic someday. If these are important to you, let me know.
- Generation: Fixed an issue with dungeonsfull shuffle
- The 300 Rupees item is now marked as priority, so it will not be used as GT junk fill (this matches a recent change in the VT randomizer)
- Fixed an issue around PreferredLocationGroups in customizer which would not work with pre-activated Ocraina or priority items.

View File

@@ -408,11 +408,13 @@ def filter_locations(item_to_place, locations, world, vanilla_skip=False, potion
config = world.item_pool_config
if not isinstance(item_to_place, str):
item_name = 'Bottle' if item_to_place.name.startswith('Bottle') else item_to_place.name
item_name = 'Ocarina' if item_name.startswith('Ocarina') else item_name
else:
item_name = item_to_place
if world.algorithm == 'vanilla_fill':
filtered = []
item_name = 'Bottle' if item_to_place.name.startswith('Bottle') else item_to_place.name
item_name = 'Ocarina' if item_name.startswith('Ocarina') else item_name
if item_name in config.static_placement[item_to_place.player]:
restricted = config.static_placement[item_to_place.player][item_name]
filtered = [l for l in locations if l.player == item_to_place.player and l.name in restricted]