Bug fixes for pottery lottery changes
This commit is contained in:
@@ -140,7 +140,6 @@ class World(object):
|
|||||||
set_player_attr('pseudoboots', False)
|
set_player_attr('pseudoboots', False)
|
||||||
|
|
||||||
set_player_attr('shopsanity', False)
|
set_player_attr('shopsanity', False)
|
||||||
set_player_attr('keydropshuffle', 'none')
|
|
||||||
set_player_attr('mixed_travel', 'prevent')
|
set_player_attr('mixed_travel', 'prevent')
|
||||||
set_player_attr('standardize_palettes', 'standardize')
|
set_player_attr('standardize_palettes', 'standardize')
|
||||||
set_player_attr('force_fix', {'gt': False, 'sw': False, 'pod': False, 'tr': False})
|
set_player_attr('force_fix', {'gt': False, 'sw': False, 'pod': False, 'tr': False})
|
||||||
@@ -2866,7 +2865,7 @@ class Settings(object):
|
|||||||
|
|
||||||
args.enemy_health[p] = r(e_health)[(settings[8] & 0xE0) >> 5]
|
args.enemy_health[p] = r(e_health)[(settings[8] & 0xE0) >> 5]
|
||||||
args.enemy_damage[p] = r(e_dmg)[(settings[8] & 0x18) >> 3]
|
args.enemy_damage[p] = r(e_dmg)[(settings[8] & 0x18) >> 3]
|
||||||
args.shufflepots[p] = True if settings[7] & 0x4 else False
|
args.shufflepots[p] = True if settings[8] & 0x4 else False
|
||||||
args.bombbag[p] = True if settings[8] & 0x2 else False
|
args.bombbag[p] = True if settings[8] & 0x2 else False
|
||||||
args.shufflelinks[p] = True if settings[8] & 0x1 else False
|
args.shufflelinks[p] = True if settings[8] & 0x1 else False
|
||||||
if len(settings) > 9:
|
if len(settings) > 9:
|
||||||
|
|||||||
2
CLI.py
2
CLI.py
@@ -106,7 +106,7 @@ def parse_cli(argv, no_defaults=False):
|
|||||||
'retro', 'accessibility', 'hints', 'beemizer', 'experimental', 'dungeon_counters',
|
'retro', 'accessibility', 'hints', 'beemizer', 'experimental', 'dungeon_counters',
|
||||||
'shufflebosses', 'shuffleenemies', 'enemy_health', 'enemy_damage', 'shufflepots',
|
'shufflebosses', 'shuffleenemies', 'enemy_health', 'enemy_damage', 'shufflepots',
|
||||||
'ow_palettes', 'uw_palettes', 'sprite', 'disablemusic', 'quickswap', 'fastmenu', 'heartcolor',
|
'ow_palettes', 'uw_palettes', 'sprite', 'disablemusic', 'quickswap', 'fastmenu', 'heartcolor',
|
||||||
'heartbeep', 'remote_items', 'shopsanity', 'dropshuffle', 'pottery',
|
'heartbeep', 'remote_items', 'shopsanity', 'dropshuffle', 'pottery', 'keydropshuffle',
|
||||||
'mixed_travel', 'standardize_palettes', 'code', 'reduce_flashing', 'shuffle_sfx']:
|
'mixed_travel', 'standardize_palettes', 'code', 'reduce_flashing', 'shuffle_sfx']:
|
||||||
value = getattr(defaults, name) if getattr(playerargs, name) is None else getattr(playerargs, name)
|
value = getattr(defaults, name) if getattr(playerargs, name) is None else getattr(playerargs, name)
|
||||||
if player == 1:
|
if player == 1:
|
||||||
|
|||||||
2
Main.py
2
Main.py
@@ -31,7 +31,7 @@ from Utils import output_path, parse_player_names
|
|||||||
from source.item.FillUtil import create_item_pool_config, massage_item_pool, district_item_pool_config
|
from source.item.FillUtil import create_item_pool_config, massage_item_pool, district_item_pool_config
|
||||||
|
|
||||||
|
|
||||||
__version__ = '1.0.1.0-v'
|
__version__ = '1.0.1.1-v'
|
||||||
|
|
||||||
from source.classes.BabelFish import BabelFish
|
from source.classes.BabelFish import BabelFish
|
||||||
|
|
||||||
|
|||||||
@@ -146,5 +146,16 @@ Same as above but both small keys and bigs keys of the dungeon are not allowed o
|
|||||||
|
|
||||||
## Notes and Bug Fixes
|
## Notes and Bug Fixes
|
||||||
|
|
||||||
|
#### Volatile
|
||||||
|
|
||||||
|
* 1.0.1.1
|
||||||
|
* Fixed logic for pots in the Ice Hammer Block room (Glove + Hammer required)
|
||||||
|
* Fixed logic for 2 pots in the Ice Antechamber (Glove required)
|
||||||
|
* Fixed retro not saving keys when grabbed from under pots in caves
|
||||||
|
* Fixed GUI not applying Drop shuffle when "Pot and Drops" are marked
|
||||||
|
* Fixed dungeon counts when one of Pottery or Drops are disabled
|
||||||
|
|
||||||
|
#### Unstable
|
||||||
|
|
||||||
* 1.0.0.1
|
* 1.0.0.1
|
||||||
* Add Light Hype Fairy to bombbag mode as needing bombs
|
* Add Light Hype Fairy to bombbag mode as needing bombs
|
||||||
8
Rom.py
8
Rom.py
@@ -35,7 +35,7 @@ from source.item.FillUtil import valid_pot_items
|
|||||||
|
|
||||||
|
|
||||||
JAP10HASH = '03a63945398191337e896e5771f77173'
|
JAP10HASH = '03a63945398191337e896e5771f77173'
|
||||||
RANDOMIZERBASEHASH = 'dea3a3bc1435aa0895181c5d46dc6d43'
|
RANDOMIZERBASEHASH = '83bdcdbe989281b7eb36a10150314997'
|
||||||
|
|
||||||
|
|
||||||
class JsonRom(object):
|
class JsonRom(object):
|
||||||
@@ -746,7 +746,7 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
|
|||||||
valid_loc_by_dungeon = valid_dungeon_locations(valid_locations)
|
valid_loc_by_dungeon = valid_dungeon_locations(valid_locations)
|
||||||
|
|
||||||
# fix hc big key problems (map and compass too)
|
# fix hc big key problems (map and compass too)
|
||||||
if world.doorShuffle[player] == 'crossed' or world.dropshuffle[player]:
|
if world.doorShuffle[player] == 'crossed' or world.dropshuffle[player] or world.pottery[player] != 'none':
|
||||||
rom.write_byte(0x151f1, 2)
|
rom.write_byte(0x151f1, 2)
|
||||||
rom.write_byte(0x15270, 2)
|
rom.write_byte(0x15270, 2)
|
||||||
sanctuary = world.get_region('Sanctuary', player)
|
sanctuary = world.get_region('Sanctuary', player)
|
||||||
@@ -875,13 +875,15 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
|
|||||||
credits_total = len(valid_locations)
|
credits_total = len(valid_locations)
|
||||||
|
|
||||||
if world.dropshuffle[player] or world.pottery[player] != 'none':
|
if world.dropshuffle[player] or world.pottery[player] != 'none':
|
||||||
rom.write_byte(0x142A50, 1)
|
rom.write_byte(0x142A50, 1) # StandingItemsOn
|
||||||
multiClientFlags = ((0x1 if world.dropshuffle[player] else 0)
|
multiClientFlags = ((0x1 if world.dropshuffle[player] else 0)
|
||||||
| (0x2 if world.shopsanity[player] else 0)
|
| (0x2 if world.shopsanity[player] else 0)
|
||||||
| (0x4 if world.retro[player] else 0)
|
| (0x4 if world.retro[player] else 0)
|
||||||
| (0x8 if world.pottery[player] in ['keys', 'lottery'] else 0)
|
| (0x8 if world.pottery[player] in ['keys', 'lottery'] else 0)
|
||||||
| (0x10 if is_mystery else 0))
|
| (0x10 if is_mystery else 0))
|
||||||
rom.write_byte(0x142A51, multiClientFlags)
|
rom.write_byte(0x142A51, multiClientFlags)
|
||||||
|
rom.write_byte(0x142A55, ((0x1 if world.pottery[player] != 'none' else 0) # StandingItemCounterMask
|
||||||
|
| (0x2 if world.dropshuffle[player] else 0)))
|
||||||
|
|
||||||
write_int16(rom, 0x187010, credits_total) # dynamic credits
|
write_int16(rom, 0x187010, credits_total) # dynamic credits
|
||||||
if credits_total != 216:
|
if credits_total != 216:
|
||||||
|
|||||||
10
Rules.py
10
Rules.py
@@ -735,9 +735,17 @@ def pot_rules(world, player):
|
|||||||
for l in world.get_region('Dark Lake Hylia Ledge Spike Cave', player).locations:
|
for l in world.get_region('Dark Lake Hylia Ledge Spike Cave', player).locations:
|
||||||
if l.type == LocationType.Pot:
|
if l.type == LocationType.Pot:
|
||||||
add_rule(l, lambda state: state.world.can_take_damage or state.has('Hookshot', player))
|
add_rule(l, lambda state: state.world.can_take_damage or state.has('Hookshot', player))
|
||||||
|
for l in world.get_region('Ice Hammer Block', player).locations:
|
||||||
|
if l.type == LocationType.Pot:
|
||||||
|
add_rule(l, lambda state: state.has('Hammer', player) and state.can_lift_rocks(player))
|
||||||
|
for pot in ['Ice Antechamber Pot #3', 'Ice Antechamber Pot #4']:
|
||||||
|
loc = world.get_location_unsafe(pot, player)
|
||||||
|
if loc:
|
||||||
|
set_rule(loc, lambda state: state.can_lift_rocks(player))
|
||||||
loc = world.get_location_unsafe('Mire Spikes Pot #3', player)
|
loc = world.get_location_unsafe('Mire Spikes Pot #3', player)
|
||||||
if loc:
|
if loc:
|
||||||
set_rule(loc, lambda state: (state.world.can_take_damage and state.has_hearts(player, 4)) or state.has('Cane of Byrna', player) or state.has('Cape', player))
|
set_rule(loc, lambda state: (state.world.can_take_damage and state.has_hearts(player, 4))
|
||||||
|
or state.has('Cane of Byrna', player) or state.has('Cape', player))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -275,4 +275,9 @@ def create_guiargs(parent):
|
|||||||
|
|
||||||
guiargs = update_deprecated_args(guiargs)
|
guiargs = update_deprecated_args(guiargs)
|
||||||
|
|
||||||
|
# Key drop shuffle stuff
|
||||||
|
if guiargs.keydropshuffle:
|
||||||
|
guiargs.dropshuffle = 1
|
||||||
|
guiargs.pottery = 'keys' if guiargs.pottery == 'none' else guiargs.pottery
|
||||||
|
|
||||||
return guiargs
|
return guiargs
|
||||||
|
|||||||
Reference in New Issue
Block a user