Add swordless_hammer and bee modes
This commit is contained in:
@@ -3530,7 +3530,7 @@ er_mode = {"vanilla": 0, "simple": 1, "restricted": 2, "full": 3, "lite": 4, "le
|
|||||||
# byte 1: LLLW WSSS (logic, mode, sword)
|
# byte 1: LLLW WSSS (logic, mode, sword)
|
||||||
logic_mode = {"noglitches": 0, "minorglitches": 1, "nologic": 2, "owglitches": 3, "majorglitches": 4}
|
logic_mode = {"noglitches": 0, "minorglitches": 1, "nologic": 2, "owglitches": 3, "majorglitches": 4}
|
||||||
world_mode = {"open": 0, "standard": 1, "inverted": 2}
|
world_mode = {"open": 0, "standard": 1, "inverted": 2}
|
||||||
sword_mode = {"random": 0, "assured": 1, "swordless": 2, "vanilla": 3, "bombs": 4, "pseudo": 5, "assured_pseudo": 5, "byrna": 6, "somaria": 6, "cane": 6}
|
sword_mode = {"random": 0, "assured": 1, "swordless": 2, "swordless_hammer": 2, "vanilla": 3, "bombs": 4, "pseudo": 5, "assured_pseudo": 5, "byrna": 6, "somaria": 6, "cane": 6, "bees": 7}
|
||||||
|
|
||||||
# byte 2: GGGD DFFH (goal, diff, item_func, hints)
|
# byte 2: GGGD DFFH (goal, diff, item_func, hints)
|
||||||
goal_mode = {"ganon": 0, "pedestal": 1, "dungeons": 2, "triforcehunt": 3, "crystals": 4, "trinity": 5}
|
goal_mode = {"ganon": 0, "pedestal": 1, "dungeons": 2, "triforcehunt": 3, "crystals": 4, "trinity": 5}
|
||||||
|
|||||||
26
Rom.py
26
Rom.py
@@ -1226,7 +1226,7 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
|
|||||||
|
|
||||||
#Set overflow items for progressive equipment
|
#Set overflow items for progressive equipment
|
||||||
rom.write_bytes(0x180090,
|
rom.write_bytes(0x180090,
|
||||||
[difficulty.progressive_sword_limit if world.swords[player] != 'swordless' else 0, overflow_replacement,
|
[difficulty.progressive_sword_limit if world.swords[player] not in ['swordless', 'swordless_hammer', 'bees'] else 0, overflow_replacement,
|
||||||
difficulty.progressive_shield_limit, overflow_replacement,
|
difficulty.progressive_shield_limit, overflow_replacement,
|
||||||
difficulty.progressive_armor_limit, overflow_replacement,
|
difficulty.progressive_armor_limit, overflow_replacement,
|
||||||
difficulty.progressive_bottle_limit, overflow_replacement])
|
difficulty.progressive_bottle_limit, overflow_replacement])
|
||||||
@@ -1234,7 +1234,7 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
|
|||||||
#Work around for json patch ordering issues - write bow limit separately so that it is replaced in the patch
|
#Work around for json patch ordering issues - write bow limit separately so that it is replaced in the patch
|
||||||
rom.write_bytes(0x180098, [difficulty.progressive_bow_limit, overflow_replacement])
|
rom.write_bytes(0x180098, [difficulty.progressive_bow_limit, overflow_replacement])
|
||||||
|
|
||||||
if difficulty.progressive_bow_limit < 2 and world.swords[player] in ['swordless', 'pseudo', 'assured_pseudo']:
|
if difficulty.progressive_bow_limit < 2 and world.swords[player] in ['swordless', 'swordless_hammer', 'bees', 'pseudo', 'assured_pseudo']:
|
||||||
rom.write_bytes(0x180098, [2, overflow_replacement])
|
rom.write_bytes(0x180098, [2, overflow_replacement])
|
||||||
|
|
||||||
# set up game internal RNG seed
|
# set up game internal RNG seed
|
||||||
@@ -1346,15 +1346,35 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
|
|||||||
rom.write_byte(0x180029, 0x01) # Smithy quick item give
|
rom.write_byte(0x180029, 0x01) # Smithy quick item give
|
||||||
|
|
||||||
# set swordless mode settings
|
# set swordless mode settings
|
||||||
if world.swords[player] == 'swordless':
|
if world.swords[player] in ['swordless', 'swordless_hammer']:
|
||||||
rom.write_byte(0x18003F, 0x01) # hammer can harm ganon
|
rom.write_byte(0x18003F, 0x01) # hammer can harm ganon
|
||||||
rom.initial_sram.set_swordless_curtains() # open curtains
|
rom.initial_sram.set_swordless_curtains() # open curtains
|
||||||
rom.write_byte(0x180041, 0x01) # swordless medallions (on pads)
|
rom.write_byte(0x180041, 0x01) # swordless medallions (on pads)
|
||||||
rom.write_byte(0x180043, 0xFF) # starting sword for link
|
rom.write_byte(0x180043, 0xFF) # starting sword for link
|
||||||
rom.write_byte(0x180044, 0x01) # hammer activates tablets
|
rom.write_byte(0x180044, 0x01) # hammer activates tablets
|
||||||
|
if world.swords[player] == 'swordless_hammer':
|
||||||
|
rom.write_byte(0x18002F, 0x07) # hammer on B
|
||||||
elif world.swords[player] in ['pseudo', 'assured_pseudo']:
|
elif world.swords[player] in ['pseudo', 'assured_pseudo']:
|
||||||
rom.write_byte(0x18002F, 0x02) # pseudo-swords
|
rom.write_byte(0x18002F, 0x02) # pseudo-swords
|
||||||
rom.write_byte(0x18003F, 0x01) # hammer can harm ganon
|
rom.write_byte(0x18003F, 0x01) # hammer can harm ganon
|
||||||
|
elif world.swords[player] == 'bees':
|
||||||
|
rom.write_byte(0x18002F, 0x06) # bee mode
|
||||||
|
rom.initial_sram.set_swordless_curtains() # open curtains
|
||||||
|
rom.write_byte(0x180041, 0x02) # swordless medallions (always)
|
||||||
|
|
||||||
|
# Arrghus puff fixes
|
||||||
|
rom.write_byte(0x0F399E, 0x00)
|
||||||
|
rom.write_byte(0x06B3E6, 0x0D)
|
||||||
|
|
||||||
|
# Kholdstare shell fix
|
||||||
|
rom.write_byte(0x06B123, 0x00)
|
||||||
|
|
||||||
|
# Sidenexx fix
|
||||||
|
rom.write_byte(0x18CE61, [0x00, 0x00])
|
||||||
|
rom.write_byte(0x18CE69, [0x00, 0x00])
|
||||||
|
|
||||||
|
rom.write_byte(0x036D7F, 0xFF) # remove hammer usage
|
||||||
|
rom.write_byte(0x043DB4, 0xFF) # remove powder usage
|
||||||
elif world.swords[player] == 'bombs':
|
elif world.swords[player] == 'bombs':
|
||||||
rom.write_byte(0x18002F, 0x01) # special bombs
|
rom.write_byte(0x18002F, 0x01) # special bombs
|
||||||
rom.initial_sram.set_swordless_curtains() # open curtains
|
rom.initial_sram.set_swordless_curtains() # open curtains
|
||||||
|
|||||||
2
Rules.py
2
Rules.py
@@ -970,7 +970,7 @@ def default_rules(world, player):
|
|||||||
set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has('Flippers', player))
|
set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
set_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), lambda state: state.has('Flippers', player))
|
set_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
|
|
||||||
if world.swords[player] == 'swordless':
|
if world.swords[player] in ['swordless', 'swordless_hammer', 'bees']:
|
||||||
swordless_rules(world, player)
|
swordless_rules(world, player)
|
||||||
if world.swords[player] == 'bombs':
|
if world.swords[player] == 'bombs':
|
||||||
bomb_mode_rules(world, player)
|
bomb_mode_rules(world, player)
|
||||||
|
|||||||
@@ -45,7 +45,9 @@
|
|||||||
"byrna",
|
"byrna",
|
||||||
"somaria",
|
"somaria",
|
||||||
"cane",
|
"cane",
|
||||||
"vanilla"
|
"vanilla",
|
||||||
|
"bees",
|
||||||
|
"swordless_hammer"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"goal": {
|
"goal": {
|
||||||
|
|||||||
Reference in New Issue
Block a user