Merged in DR v1.4.1.8
This commit is contained in:
2
Main.py
2
Main.py
@@ -40,7 +40,7 @@ from source.enemizer.DamageTables import DamageTable
|
|||||||
from source.enemizer.Enemizer import randomize_enemies
|
from source.enemizer.Enemizer import randomize_enemies
|
||||||
from source.rom.DataTables import init_data_tables
|
from source.rom.DataTables import init_data_tables
|
||||||
|
|
||||||
version_number = '1.4.1.7'
|
version_number = '1.4.1.8'
|
||||||
version_branch = '-u'
|
version_branch = '-u'
|
||||||
__version__ = f'{version_number}{version_branch}'
|
__version__ = f'{version_number}{version_branch}'
|
||||||
|
|
||||||
|
|||||||
@@ -141,6 +141,12 @@ These are now independent of retro mode and have three options: None, Random, an
|
|||||||
|
|
||||||
# Patch Notes
|
# Patch Notes
|
||||||
|
|
||||||
|
* 1.4.1.8u
|
||||||
|
* HUD: New dungeon indicators based on common abbreviations
|
||||||
|
* OWG+HMG: EG is allowed to be armed
|
||||||
|
* Drop Shuffle: Fixed an issue with minor drops counting for the wrong dungeon
|
||||||
|
* Enemizer: Trinexx ice breath should be properly disabled if Trinexx is located outside of Turtle Rock
|
||||||
|
* Enemizer: Enemy bans
|
||||||
* 1.4.1.7u
|
* 1.4.1.7u
|
||||||
* Some bugs around Triforce Pieces smoothed out
|
* Some bugs around Triforce Pieces smoothed out
|
||||||
* Enemizer: No exception for mimics/eyegores in vanilla rooms if enemy logic is turned to off
|
* Enemizer: No exception for mimics/eyegores in vanilla rooms if enemy logic is turned to off
|
||||||
|
|||||||
8
Rom.py
8
Rom.py
@@ -715,7 +715,7 @@ def patch_rom(world, rom, player, team, is_mystery=False):
|
|||||||
dr_flags |= DROptions.OriginalPalettes
|
dr_flags |= DROptions.OriginalPalettes
|
||||||
if world.experimental[player]:
|
if world.experimental[player]:
|
||||||
dr_flags |= DROptions.DarkWorld_Spawns
|
dr_flags |= DROptions.DarkWorld_Spawns
|
||||||
if world.logic[player] != 'nologic':
|
if world.logic[player] not in ['owglitches', 'hybridglitches', 'nologic']:
|
||||||
dr_flags |= DROptions.Fix_EG
|
dr_flags |= DROptions.Fix_EG
|
||||||
if world.door_type_mode[player] in ['big', 'all', 'chaos']:
|
if world.door_type_mode[player] in ['big', 'all', 'chaos']:
|
||||||
dr_flags |= DROptions.BigKeyDoor_Shuffle
|
dr_flags |= DROptions.BigKeyDoor_Shuffle
|
||||||
@@ -1411,10 +1411,10 @@ def patch_rom(world, rom, player, team, is_mystery=False):
|
|||||||
digging_game_rng = random.randint(1, 30) # set rng for digging game
|
digging_game_rng = random.randint(1, 30) # set rng for digging game
|
||||||
rom.write_byte(0x180020, digging_game_rng)
|
rom.write_byte(0x180020, digging_game_rng)
|
||||||
rom.write_byte(0xEFD95, digging_game_rng)
|
rom.write_byte(0xEFD95, digging_game_rng)
|
||||||
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(0x180042, 0x01 if world.save_and_quit_from_boss else 0x00) # Allow Save and Quit after boss kill
|
|
||||||
glitches_enabled = world.logic[player] in ['owglitches', 'hybridglitches', 'nologic']
|
glitches_enabled = world.logic[player] in ['owglitches', 'hybridglitches', 'nologic']
|
||||||
|
rom.write_byte(0x1800A3, 0x01) # enable correct world setting behaviour after agahnim kills
|
||||||
|
rom.write_byte(0x1800A4, 0x01 if not glitches_enabled 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(0x180358, 0x01 if glitches_enabled else 0x00)
|
rom.write_byte(0x180358, 0x01 if glitches_enabled else 0x00)
|
||||||
rom.write_byte(0x18008B, 0x01 if glitches_enabled else 0x00)
|
rom.write_byte(0x18008B, 0x01 if glitches_enabled else 0x00)
|
||||||
|
|
||||||
|
|||||||
@@ -166,14 +166,14 @@ def boss_writes(world, player, rom):
|
|||||||
data_tables.room_headers[room_id].byte_0 = 0x60
|
data_tables.room_headers[room_id].byte_0 = 0x60
|
||||||
data_tables.room_headers[room_id].effect = 4
|
data_tables.room_headers[room_id].effect = 4
|
||||||
# $2E, $98, $FF (original shell)
|
# $2E, $98, $FF (original shell)
|
||||||
|
# disable trinexx ice breath with No-ops if there's a trinexx anywhere outside TR
|
||||||
|
rom.write_bytes(snes_to_pc(0x09B37E), [0xEA, 0xEA, 0xEA, 0xEA])
|
||||||
if boss.name == 'Kholdstare' and (dungeon.name != 'Ice Palace' or level is not None):
|
if boss.name == 'Kholdstare' and (dungeon.name != 'Ice Palace' or level is not None):
|
||||||
add_shell_to_boss_room(data_tables, dungeon.name, level, 0xF95)
|
add_shell_to_boss_room(data_tables, dungeon.name, level, 0xF95)
|
||||||
data_tables.room_headers[room_id].byte_0 = 0xE0
|
data_tables.room_headers[room_id].byte_0 = 0xE0
|
||||||
data_tables.room_headers[room_id].effect = 1
|
data_tables.room_headers[room_id].effect = 1
|
||||||
if boss.name != 'Trinexx' and dungeon.name == 'Turtle Rock' and level is None:
|
if boss.name != 'Trinexx' and dungeon.name == 'Turtle Rock' and level is None:
|
||||||
remove_shell_from_boss_room(data_tables, dungeon.name, level, 0xFF2)
|
remove_shell_from_boss_room(data_tables, dungeon.name, level, 0xFF2)
|
||||||
# disable trinexx ice breath with No-ops
|
|
||||||
rom.write_bytes(snes_to_pc(0x09B37E), [0xEA, 0xEA, 0xEA, 0xEA])
|
|
||||||
if boss.name != 'Kholdstare' and dungeon.name == 'Ice Palace' and level is None:
|
if boss.name != 'Kholdstare' and dungeon.name == 'Ice Palace' and level is None:
|
||||||
remove_shell_from_boss_room(data_tables, dungeon.name, level, 0xF95)
|
remove_shell_from_boss_room(data_tables, dungeon.name, level, 0xF95)
|
||||||
if boss.name != 'Blind' and dungeon.name == 'Thieves Town' and level is None:
|
if boss.name != 'Blind' and dungeon.name == 'Thieves Town' and level is None:
|
||||||
|
|||||||
@@ -160,6 +160,7 @@ UwGeneralDeny:
|
|||||||
- [ 0x0058, 8, ["Statue"]]
|
- [ 0x0058, 8, ["Statue"]]
|
||||||
- [ 0x0059, 0, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Mini Moldorm 1"
|
- [ 0x0059, 0, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Mini Moldorm 1"
|
||||||
- [ 0x0059, 1, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Mini Moldorm 2"
|
- [ 0x0059, 1, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Mini Moldorm 2"
|
||||||
|
- [0x0059, 5, ["RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper"]]
|
||||||
- [ 0x0059, 9, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Gibdo 1"
|
- [ 0x0059, 9, [ "RollerVerticalUp", "RollerVerticalDown", "AntiFairyCircle", "BigSpike", "SpikeBlock", "Bumper" ] ] #"Skull Woods - Bridge Room - Gibdo 1"
|
||||||
- [ 0x005e, 3, [ "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "SpikeBlock", "Bumper" ] ] #"Ice Palace - Pit Trap - Big Spike Trap"
|
- [ 0x005e, 3, [ "RollerHorizontalLeft", "RollerHorizontalRight", "Beamos", "AntiFairyCircle", "SpikeBlock", "Bumper" ] ] #"Ice Palace - Pit Trap - Big Spike Trap"
|
||||||
- [ 0x005e, 4, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Ice Palace - Pit Trap - Fire Bar (Clockwise)"
|
- [ 0x005e, 4, [ "RollerVerticalUp", "RollerVerticalDown" ] ] #"Ice Palace - Pit Trap - Fire Bar (Clockwise)"
|
||||||
|
|||||||
29
test/suite/enemy_logic/lynel_test.yaml
Normal file
29
test/suite/enemy_logic/lynel_test.yaml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
meta:
|
||||||
|
players: 1
|
||||||
|
settings:
|
||||||
|
1:
|
||||||
|
mode: open
|
||||||
|
enemy_shuffle: shuffled
|
||||||
|
dropshuffle: underworld
|
||||||
|
enemies:
|
||||||
|
1:
|
||||||
|
Underworld:
|
||||||
|
0x55:
|
||||||
|
1: Lynel
|
||||||
|
placements: # all the ways to kill a Lynel are Flipper locked
|
||||||
|
1:
|
||||||
|
Waterfall Fairy - Left: Progressive Sword
|
||||||
|
Waterfall Fairy - Right: Progressive Sword
|
||||||
|
Hobo: Progressive Sword
|
||||||
|
Swamp Palace - Map Chest: Progressive Bow
|
||||||
|
Swamp Palace - Compass Chest: Progressive Bow
|
||||||
|
Zora's Ledge: Hammer
|
||||||
|
advanced_placements:
|
||||||
|
1:
|
||||||
|
- type: Verification
|
||||||
|
item: Flippers
|
||||||
|
locations:
|
||||||
|
'Hyrule Castle Secret Entrance Enemy #2': False # can't kill the lynel
|
||||||
|
Link's Uncle: True
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user