diff --git a/EntranceRandomizer.py b/EntranceRandomizer.py index 08d067de..f72001f0 100755 --- a/EntranceRandomizer.py +++ b/EntranceRandomizer.py @@ -100,9 +100,10 @@ def parse_arguments(argv, no_defaults=False): Expert: A harder yet setting with minimum equipment and health. ''') parser.add_argument('--item_functionality', default=defval('normal'), const='normal', nargs='?', - choices=['normal', 'hard', 'expert'], + choices=['easy', 'normal', 'hard', 'expert'], help='''\ Select limits on item functionality to increase difficulty. (default: %(default)s) + Easy: Easy functionality. (Medallions usable without sword) Normal: Normal functionality. Hard: Reduced functionality. Expert: Greatly reduced functionality. diff --git a/Rom.py b/Rom.py index 83cfc2bb..61850f43 100644 --- a/Rom.py +++ b/Rom.py @@ -1,5 +1,5 @@ JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '6aeb504cb11dbb5a0411655279634263' +RANDOMIZERBASEHASH = '6a1058fd9726f86af07d8fada981aabd' import io import json @@ -924,6 +924,11 @@ def patch_rom(world, rom, player, team, enemized): rom.write_byte(0x180043, 0xFF if world.swords[player] == 'swordless' else 0x00) # starting sword for link rom.write_byte(0x180044, 0x01 if world.swords[player] == 'swordless' else 0x00) # hammer activates tablets + if world.difficulty_adjustments[player] == 'easy': + rom.write_byte(0x18003F, 0x01) # hammer can harm ganon + rom.write_byte(0x180041, 0x02) # Allow swordless medallion use EVERYWHERE. + rom.write_byte(0x180044, 0x01) # hammer activates tablets + # set up clocks for timed modes if world.shuffle[player] == 'vanilla': ERtimeincrease = 0 @@ -950,7 +955,7 @@ def patch_rom(world, rom, player, team, enemized): rom.write_int32(0x180200, -100 * 60 * 60 * 60) # red clock adjustment time (in frames, sint32) rom.write_int32(0x180204, 2 * 60 * 60) # blue clock adjustment time (in frames, sint32) rom.write_int32(0x180208, 4 * 60 * 60) # green clock adjustment time (in frames, sint32) - if world.difficulty_adjustments[player] == 'normal': + if world.difficulty_adjustments[player] in ['easy', 'normal']: rom.write_int32(0x18020C, (10 + ERtimeincrease) * 60 * 60) # starting time (in frames, sint32) else: rom.write_int32(0x18020C, int((5 + ERtimeincrease / 2) * 60 * 60)) # starting time (in frames, sint32) diff --git a/data/basepatch.bmbp b/data/basepatch.bmbp index a44e874c..a96fca22 100644 Binary files a/data/basepatch.bmbp and b/data/basepatch.bmbp differ diff --git a/playerSettings.yaml b/playerSettings.yaml index 94a1898d..a4cc06ec 100644 --- a/playerSettings.yaml +++ b/playerSettings.yaml @@ -141,6 +141,7 @@ item_pool: expert: 0 # Minimum upgrade availability (max: 8 hearts, green mail, master sword, fighter shield, no silvers unless swordless) crowd_control: 0 # Sets up the item pool for the crowd control extension. Do not use it without crowd control item_functionality: + easy: 0 # Allow Hammer to damage ganon, Allow Hammer tablet collection, Allow swordless medallion use everywhere. normal: 50 # Vanilla item functionality hard: 0 # Reduced helpfulness of items (potions less effective, can't catch faeries, cape uses double magic, byrna does not grant invulnerability, boomerangs do not stun, silvers disabled outside ganon) expert: 0 # Vastly reduces the helpfulness of items (potions barely effective, can't catch faeries, cape uses double magic, byrna does not grant invulnerability, boomerangs and hookshot do not stun, silvers disabled outside ganon)