Merge remote-tracking branch 'origin' into OverworldShuffle
version includes update of base rom
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
### 0.1.6.6
|
||||||
|
- ~~Merged DR v0.4.0.9 - P/C Indicator / Credits fix / CLI Hints Fix~~
|
||||||
|
|
||||||
### 0.1.6.5
|
### 0.1.6.5
|
||||||
- Reduced chance of diagonal flute spot in Balanced
|
- Reduced chance of diagonal flute spot in Balanced
|
||||||
- ~~Merged DR v0.4.0.8 - Boss Indicator / Fake Boots / Quickswap Update / Credits Updates~~
|
- ~~Merged DR v0.4.0.8 - Boss Indicator / Fake Boots / Quickswap Update / Credits Updates~~
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ from KeyDoorShuffle import analyze_dungeon, validate_vanilla_key_logic, build_ke
|
|||||||
|
|
||||||
|
|
||||||
def link_doors(world, player):
|
def link_doors(world, player):
|
||||||
|
orig_swamp_patch = world.swamp_patch_required[player]
|
||||||
attempt, valid = 1, False
|
attempt, valid = 1, False
|
||||||
while not valid:
|
while not valid:
|
||||||
try:
|
try:
|
||||||
@@ -43,6 +44,7 @@ def link_doors(world, player):
|
|||||||
reset_portals(world, player)
|
reset_portals(world, player)
|
||||||
reset_rooms(world, player)
|
reset_rooms(world, player)
|
||||||
world.get_door("Skull Pinball WS", player).no_exit()
|
world.get_door("Skull Pinball WS", player).no_exit()
|
||||||
|
world.swamp_patch_required[player] = orig_swamp_patch
|
||||||
|
|
||||||
|
|
||||||
def link_doors_main(world, player):
|
def link_doors_main(world, player):
|
||||||
@@ -467,8 +469,8 @@ def choose_portals(world, player):
|
|||||||
world.get_room(0xd5, player).change(0, DoorKind.DungeonEntrance)
|
world.get_room(0xd5, player).change(0, DoorKind.DungeonEntrance)
|
||||||
|
|
||||||
if not world.swamp_patch_required[player]:
|
if not world.swamp_patch_required[player]:
|
||||||
swamp_region = world.get_entrance('Swamp Palace', player).connected_region
|
swamp_portal = world.get_portal('Swamp', player)
|
||||||
if swamp_region.name != 'Swamp Lobby':
|
if swamp_portal.door.name != 'Swamp Lobby S':
|
||||||
world.swamp_patch_required[player] = True
|
world.swamp_patch_required[player] = True
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
Main.py
2
Main.py
@@ -29,7 +29,7 @@ from Fill import sell_potions, sell_keys, balance_multiworld_progression, balanc
|
|||||||
from ItemList import generate_itempool, difficulties, fill_prizes, customize_shops
|
from ItemList import generate_itempool, difficulties, fill_prizes, customize_shops
|
||||||
from Utils import output_path, parse_player_names
|
from Utils import output_path, parse_player_names
|
||||||
|
|
||||||
__version__ = '0.4.0.8-u'
|
__version__ = '0.4.0.9-u'
|
||||||
|
|
||||||
|
|
||||||
class EnemizerError(RuntimeError):
|
class EnemizerError(RuntimeError):
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
raise Exception('Could not load sortedcontainers module')
|
raise Exception('Could not load sortedcontainers module')
|
||||||
|
|
||||||
__version__ = '0.1.6.5-u'
|
__version__ = '0.1.6.6-u'
|
||||||
|
|
||||||
def link_overworld(world, player):
|
def link_overworld(world, player):
|
||||||
# setup mandatory connections
|
# setup mandatory connections
|
||||||
@@ -21,14 +21,14 @@ def link_overworld(world, player):
|
|||||||
if world.owSwap[player] != 'vanilla':
|
if world.owSwap[player] != 'vanilla':
|
||||||
tile_groups = {}
|
tile_groups = {}
|
||||||
for (name, groupType) in OWTileGroups.keys():
|
for (name, groupType) in OWTileGroups.keys():
|
||||||
if world.mode[player] != 'standard' or name not in ['Castle', 'Links']:
|
if world.mode[player] != 'standard' or name not in ['Castle', 'Links', 'Central Bonk Rocks']:
|
||||||
if world.shuffle[player] in ['vanilla', 'simple', 'dungeonssimple']:
|
if world.shuffle[player] in ['vanilla', 'simple', 'dungeonssimple']:
|
||||||
tile_groups[(name,)] = ([], [], [])
|
tile_groups[(name,)] = ([], [], [])
|
||||||
else:
|
else:
|
||||||
tile_groups[(name, groupType)] = ([], [], [])
|
tile_groups[(name, groupType)] = ([], [], [])
|
||||||
|
|
||||||
for (name, groupType) in OWTileGroups.keys():
|
for (name, groupType) in OWTileGroups.keys():
|
||||||
if world.mode[player] != 'standard' or name not in ['Castle', 'Links']:
|
if world.mode[player] != 'standard' or name not in ['Castle', 'Links', 'Central Bonk Rocks']:
|
||||||
(owids, lw_regions, dw_regions) = OWTileGroups[(name, groupType,)]
|
(owids, lw_regions, dw_regions) = OWTileGroups[(name, groupType,)]
|
||||||
if world.shuffle[player] in ['vanilla', 'simple', 'dungeonssimple']:
|
if world.shuffle[player] in ['vanilla', 'simple', 'dungeonssimple']:
|
||||||
(exist_owids, exist_lw_regions, exist_dw_regions) = tile_groups[(name,)]
|
(exist_owids, exist_lw_regions, exist_dw_regions) = tile_groups[(name,)]
|
||||||
|
|||||||
@@ -14,6 +14,10 @@ Thanks to qadan, cheuer, & compiling
|
|||||||
|
|
||||||
# Bug Fixes and Notes.
|
# Bug Fixes and Notes.
|
||||||
|
|
||||||
|
* 0.4.0.9
|
||||||
|
* Fixes for stats and P/C indicator (thanks Kara)
|
||||||
|
* Swamp lobby fixes (thanks Catobat)
|
||||||
|
* Fix for --hints flag on CLI
|
||||||
* 0.4.0.8
|
* 0.4.0.8
|
||||||
* Ganon jokes added for when silvers aren't available
|
* Ganon jokes added for when silvers aren't available
|
||||||
* Some text updated (Blind jokes, uncle text)
|
* Some text updated (Blind jokes, uncle text)
|
||||||
|
|||||||
4
Rom.py
4
Rom.py
@@ -31,7 +31,7 @@ from OverworldShuffle import default_flute_connections, flute_data
|
|||||||
|
|
||||||
|
|
||||||
JAP10HASH = '03a63945398191337e896e5771f77173'
|
JAP10HASH = '03a63945398191337e896e5771f77173'
|
||||||
RANDOMIZERBASEHASH = 'efb10737d732625792a9af7fdda2c4e9'
|
RANDOMIZERBASEHASH = 'b6c98e872be23f268ff6678aa3eeaee4'
|
||||||
|
|
||||||
|
|
||||||
class JsonRom(object):
|
class JsonRom(object):
|
||||||
@@ -1178,8 +1178,6 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
|
|||||||
rom.write_byte(0x18002F, 0x03) # special bombs
|
rom.write_byte(0x18002F, 0x03) # special bombs
|
||||||
rom.write_byte(0x180040, 0x01) # open curtains
|
rom.write_byte(0x180040, 0x01) # open curtains
|
||||||
rom.write_byte(0x180041, 0x02) # swordless medallions (always)
|
rom.write_byte(0x180041, 0x02) # swordless medallions (always)
|
||||||
rom.write_byte(0x180043, 0xFF) # starting sword for link
|
|
||||||
rom.write_byte(0x180044, 0x01) # hammer activates tablets
|
|
||||||
# since we have infinite bombs, let's get rid of bomb drops
|
# since we have infinite bombs, let's get rid of bomb drops
|
||||||
rom.write_byte(0x030051, 0xDB) # fish bottle merchant
|
rom.write_byte(0x030051, 0xDB) # fish bottle merchant
|
||||||
rom.write_byte(0x0301F8, 0xD9) # replace Pot bombs with green rupees
|
rom.write_byte(0x0301F8, 0xD9) # replace Pot bombs with green rupees
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ db #$b0 ; BCS to replace BEQ
|
|||||||
org $06907f ; < 3107f - sprite_prep.asm:2170 (LDA $7EF3CA)
|
org $06907f ; < 3107f - sprite_prep.asm:2170 (LDA $7EF3CA)
|
||||||
lda $8a : and.b #$40
|
lda $8a : and.b #$40
|
||||||
|
|
||||||
|
; Dark Bonk Rocks Rain Sequence Guards (allowing Tile Swap on Dark Bonk Rocks)
|
||||||
|
;org $09c957 ; <- 4c957
|
||||||
|
;dw #$cb5f ; matches value on Central Bonk Rocks screen
|
||||||
|
|
||||||
;(replacing -> LDA $8A : AND.b #$40)
|
;(replacing -> LDA $8A : AND.b #$40)
|
||||||
org $00d8c4 ; < ? - Bank00.asm:4068 ()
|
org $00d8c4 ; < ? - Bank00.asm:4068 ()
|
||||||
jsl.l OWWorldCheck
|
jsl.l OWWorldCheck
|
||||||
|
|||||||
Binary file not shown.
@@ -312,7 +312,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"action": "store_false",
|
"action": "store_true",
|
||||||
"type": "bool"
|
"type": "bool"
|
||||||
},
|
},
|
||||||
"no_hints": {
|
"no_hints": {
|
||||||
|
|||||||
Reference in New Issue
Block a user