Merge branch 'DoorDevVolatile' into StandingItems

# Conflicts:
#	Rom.py
#	data/base2current.bps
This commit is contained in:
aerinon
2022-01-06 16:09:42 -07:00
8 changed files with 38 additions and 6 deletions

View File

@@ -109,6 +109,7 @@ def link_entrances(world, player):
links_house_doors = [i for i in LW_Single_Cave_Doors if i not in Isolated_LH_Doors_Open] links_house_doors = [i for i in LW_Single_Cave_Doors if i not in Isolated_LH_Doors_Open]
links_house = random.choice(links_house_doors) links_house = random.choice(links_house_doors)
connect_two_way(world, links_house, 'Links House Exit', player) connect_two_way(world, links_house, 'Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
if links_house in bomb_shop_doors: if links_house in bomb_shop_doors:
bomb_shop_doors.remove(links_house) bomb_shop_doors.remove(links_house)
if links_house in blacksmith_doors: if links_house in blacksmith_doors:
@@ -173,6 +174,7 @@ def link_entrances(world, player):
links_house_doors = [i for i in lw_entrances if i not in Isolated_LH_Doors_Open] links_house_doors = [i for i in lw_entrances if i not in Isolated_LH_Doors_Open]
links_house = random.choice(links_house_doors) links_house = random.choice(links_house_doors)
connect_two_way(world, links_house, 'Links House Exit', player) connect_two_way(world, links_house, 'Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
if links_house in lw_entrances: if links_house in lw_entrances:
lw_entrances.remove(links_house) lw_entrances.remove(links_house)
@@ -337,6 +339,7 @@ def link_entrances(world, player):
links_house_doors = [i for i in lw_entrances + lw_must_exits if i not in Isolated_LH_Doors_Open] links_house_doors = [i for i in lw_entrances + lw_must_exits if i not in Isolated_LH_Doors_Open]
links_house = random.choice(links_house_doors) links_house = random.choice(links_house_doors)
connect_two_way(world, links_house, 'Links House Exit', player) connect_two_way(world, links_house, 'Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
if links_house in lw_entrances: if links_house in lw_entrances:
lw_entrances.remove(links_house) lw_entrances.remove(links_house)
if links_house in lw_must_exits: if links_house in lw_must_exits:
@@ -467,6 +470,7 @@ def link_entrances(world, player):
links_house_doors = [i for i in links_house_doors if i not in exclusions] links_house_doors = [i for i in links_house_doors if i not in exclusions]
links_house = random.choice(list(links_house_doors)) links_house = random.choice(list(links_house_doors))
connect_two_way(world, links_house, 'Links House Exit', player) connect_two_way(world, links_house, 'Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
if links_house in entrances: if links_house in entrances:
entrances.remove(links_house) entrances.remove(links_house)
elif links_house in must_exits: elif links_house in must_exits:
@@ -937,6 +941,7 @@ def link_entrances(world, player):
links_house_doors = [i for i in links_house_doors if i not in exclusions] links_house_doors = [i for i in links_house_doors if i not in exclusions]
links_house = random.choice(links_house_doors) links_house = random.choice(links_house_doors)
connect_two_way(world, links_house, 'Links House Exit', player) connect_two_way(world, links_house, 'Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
exit_pool.remove(links_house) exit_pool.remove(links_house)
doors.remove(links_house) doors.remove(links_house)
@@ -1301,6 +1306,7 @@ def link_inverted_entrances(world, player):
links_house_doors = [i for i in DW_Single_Cave_Doors if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house_doors = [i for i in DW_Single_Cave_Doors if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors]
links_house = random.choice(links_house_doors) links_house = random.choice(links_house_doors)
connect_two_way(world, links_house, 'Inverted Links House Exit', player) connect_two_way(world, links_house, 'Inverted Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
if links_house in bomb_shop_doors: if links_house in bomb_shop_doors:
bomb_shop_doors.remove(links_house) bomb_shop_doors.remove(links_house)
if links_house in blacksmith_doors: if links_house in blacksmith_doors:
@@ -1381,6 +1387,7 @@ def link_inverted_entrances(world, player):
links_house_doors = [i for i in dw_entrances if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house_doors = [i for i in dw_entrances if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors]
links_house = random.choice(links_house_doors) links_house = random.choice(links_house_doors)
connect_two_way(world, links_house, 'Inverted Links House Exit', player) connect_two_way(world, links_house, 'Inverted Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
if links_house in dw_entrances: if links_house in dw_entrances:
dw_entrances.remove(links_house) dw_entrances.remove(links_house)
@@ -1510,6 +1517,7 @@ def link_inverted_entrances(world, player):
links_house_doors = [i for i in dw_entrances if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house_doors = [i for i in dw_entrances if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors]
links_house = random.choice(links_house_doors) links_house = random.choice(links_house_doors)
connect_two_way(world, links_house, 'Inverted Links House Exit', player) connect_two_way(world, links_house, 'Inverted Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
if links_house in dw_entrances: if links_house in dw_entrances:
dw_entrances.remove(links_house) dw_entrances.remove(links_house)
@@ -1647,6 +1655,7 @@ def link_inverted_entrances(world, player):
links_house_doors = [i for i in entrances + must_exits if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house_doors = [i for i in entrances + must_exits if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors]
links_house = random.choice(links_house_doors) links_house = random.choice(links_house_doors)
connect_two_way(world, links_house, 'Inverted Links House Exit', player) connect_two_way(world, links_house, 'Inverted Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
if links_house in entrances: if links_house in entrances:
entrances.remove(links_house) entrances.remove(links_house)
elif links_house in must_exits: elif links_house in must_exits:
@@ -1780,6 +1789,7 @@ def link_inverted_entrances(world, player):
links_house_doors = [i for i in doors if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house_doors = [i for i in doors if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors]
links_house = random.choice(links_house_doors) links_house = random.choice(links_house_doors)
connect_two_way(world, links_house, 'Inverted Links House Exit', player) connect_two_way(world, links_house, 'Inverted Links House Exit', player)
connect_exit(world, 'Chris Houlihan Room Exit', links_house, player) # should match link's house
doors.remove(links_house) doors.remove(links_house)
exit_pool.remove(links_house) exit_pool.remove(links_house)
@@ -3339,7 +3349,6 @@ inverted_mandatory_connections = [('Links House S&Q', 'Inverted Links House'),
('EDDM Flute', 'The Sky'), ('EDDM Flute', 'The Sky'),
('Dark Grassy Lawn Flute', 'The Sky'), ('Dark Grassy Lawn Flute', 'The Sky'),
('Hammer Peg Area Flute', 'The Sky'), ('Hammer Peg Area Flute', 'The Sky'),
('Chris Houlihan Room Exit', 'Pyramid Ledge'),
('Bush Covered Lawn Inner Bushes', 'Light World'), ('Bush Covered Lawn Inner Bushes', 'Light World'),
('Bush Covered Lawn Outer Bushes', 'Bush Covered Lawn'), ('Bush Covered Lawn Outer Bushes', 'Bush Covered Lawn'),
('Bush Covered Lawn Mirror Spot', 'Dark Grassy Lawn'), ('Bush Covered Lawn Mirror Spot', 'Dark Grassy Lawn'),

View File

@@ -32,7 +32,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.2.0-v' __version__ = '1.0.3.0-v'
from source.classes.BabelFish import BabelFish from source.classes.BabelFish import BabelFish

View File

@@ -133,6 +133,13 @@ CLI: ```--bombbag```
## Bug Fixes and Notes. ## Bug Fixes and Notes.
* 0.5.1.7
* Baserom update
* Fix for Inverted Mode: Dark Lake Hylia shop defaults to selling a blue potion
* Fix for Ijwu's enemizer: Boss door in Thieves' Town no longer closes after the maiden hint if Blind is shuffled to Theives' Town in boss shuffle + crossed mode
* No logic now sets the AllowAccidentalMajorGlitches flag in the rom appropriately
* Houlihan room now exits wherever Link's House is shuffled to
* Rom fixes from Catobat and Codemann8. Thanks!
* 0.5.1.6 * 0.5.1.6
* Rules fixes for TT (Boss and Cell) can now have TT Big Key if not otherwise required (boss shuffle + crossed dungeon) * Rules fixes for TT (Boss and Cell) can now have TT Big Key if not otherwise required (boss shuffle + crossed dungeon)
* BUg fix for money balancing * BUg fix for money balancing

View File

@@ -966,6 +966,7 @@ def create_shops(world, player):
if world.mode[player] == 'inverted' and region_name == 'Dark Lake Hylia Shop': if world.mode[player] == 'inverted' and region_name == 'Dark Lake Hylia Shop':
locked = True locked = True
inventory = [('Blue Potion', 160), ('Blue Shield', 50), ('Bombs (10)', 50)] inventory = [('Blue Potion', 160), ('Blue Shield', 50), ('Bombs (10)', 50)]
custom = True
region = world.get_region(region_name, player) region = world.get_region(region_name, player)
shop = Shop(region, room_id, type, shopkeeper, custom, locked, sram) shop = Shop(region, room_id, type, shopkeeper, custom, locked, sram)
region.shop = shop region.shop = shop

4
Rom.py
View File

@@ -35,7 +35,7 @@ from source.classes.SFX import randomize_sfx
JAP10HASH = '03a63945398191337e896e5771f77173' JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = 'c1b18f6455af56b738d4fe8f266ef055' RANDOMIZERBASEHASH = '6c43ba88d17005bd1237fe1a62597705'
class JsonRom(object): class JsonRom(object):
@@ -336,6 +336,7 @@ def patch_enemizer(world, player, rom, local_rom, enemizercli, random_sprite_on_
rom.write_bytes(0xEA081, [0x5c, 0x00, 0x80, 0xb7, 0xc9, 0x6, 0xf0, 0x24, rom.write_bytes(0xEA081, [0x5c, 0x00, 0x80, 0xb7, 0xc9, 0x6, 0xf0, 0x24,
0xad, 0x3, 0x4, 0x29, 0x20, 0xf0, 0x1d]) 0xad, 0x3, 0x4, 0x29, 0x20, 0xf0, 0x1d])
rom.write_byte(0x200101, 0) # Do not close boss room door on entry. rom.write_byte(0x200101, 0) # Do not close boss room door on entry.
rom.write_byte(0x1B0101, 0) # Do not close boss room door on entry. (for Ijwu's enemizer)
if random_sprite_on_hit: if random_sprite_on_hit:
_populate_sprite_table() _populate_sprite_table()
@@ -1545,6 +1546,7 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
rom.write_byte(0x1800A3, 0x01) # enable correct world setting behaviour after agahnim kills rom.write_byte(0x1800A3, 0x01) # enable correct world setting behaviour after agahnim kills
rom.write_byte(0x1800A4, 0x01 if world.logic[player] != 'nologic' else 0x00) # enable POD EG fix rom.write_byte(0x1800A4, 0x01 if world.logic[player] != 'nologic' else 0x00) # enable POD EG fix
rom.write_byte(0x180042, 0x01 if world.save_and_quit_from_boss else 0x00) # Allow Save and Quit after boss kill rom.write_byte(0x180042, 0x01 if world.save_and_quit_from_boss else 0x00) # Allow Save and Quit after boss kill
rom.write_byte(0x180358, 0x01 if world.logic[player] == 'nologic' else 0x00)
# remove shield from uncle # remove shield from uncle
rom.write_bytes(0x6D253, [0x00, 0x00, 0xf6, 0xff, 0x00, 0x0E]) rom.write_bytes(0x6D253, [0x00, 0x00, 0xf6, 0xff, 0x00, 0x0E])

View File

@@ -76,6 +76,9 @@ nop : jsl OverridePaletteHeader
org $02817e ; Bank02.asm : 414 (LDA $02811E, X) org $02817e ; Bank02.asm : 414 (LDA $02811E, X)
jsl FixAnimatedTiles jsl FixAnimatedTiles
org $0aef43 ; UnderworldMap_RecoverGFX
jsl FixCloseDungeonMap
org $028a06 ; Bank02.asm : 1941 Dungeon_ResetTorchBackgroundAndPlayer org $028a06 ; Bank02.asm : 1941 Dungeon_ResetTorchBackgroundAndPlayer
JSL FixWallmasterLamp JSL FixWallmasterLamp
@@ -186,9 +189,9 @@ Main_ShowTextMessage:
; Conditionally disable UW music changes in Door Rando ; Conditionally disable UW music changes in Door Rando
org $028ADB ; <- Bank02.asm:2088-2095 (LDX.b #$14 : LDA $A0 ...) org $028ADB ; <- Bank02.asm:2088-2095 (LDX.b #$14 : LDA $A0 ...)
JSL.l Underworld_DoorDown_Entry : CPX #$10 JSL.l Underworld_DoorDown_Entry : CPX #$FF
db $B0, $21 ; BCS $028B04 BEQ + : db $80, $1C ; BRA $028B04
BRA + : NOP #6 : + NOP #6 : +
org $02C3F2 ; <- Bank02.asm:10521 Unused call org $02C3F2 ; <- Bank02.asm:10521 Unused call
Underworld_DoorDown_Call: Underworld_DoorDown_Call:

View File

@@ -45,6 +45,16 @@ FixAnimatedTiles:
+ LDA $02802E, X ; what we wrote over + LDA $02802E, X ; what we wrote over
RTL RTL
FixCloseDungeonMap:
LDA.l DRMode : CMP #$02 : BNE .vanilla
LDA $040C : BMI .vanilla
LSR : TAX
LDA.l DungeonTilesets,x
RTL
.vanilla
LDA $7EC20E
RTL
FixWallmasterLamp: FixWallmasterLamp:
ORA $0458 ORA $0458
STY $1C : STA $1D : RTL ; what we wrote over STY $1C : STA $1D : RTL ; what we wrote over

Binary file not shown.