Add assured pseudo-sword mode

This commit is contained in:
2021-07-25 01:49:12 -07:00
parent 624e988ebc
commit 63bff5998b
7 changed files with 10 additions and 7 deletions

View File

@@ -797,7 +797,7 @@ class CollectionState(object):
return False
def has_real_sword(self, player, level=1):
if self.world.swords[player] == 'pseudo':
if self.world.swords[player] in ['pseudo', 'assured_pseudo']:
return False;
return self.has_sword(player, level)
@@ -2533,7 +2533,7 @@ er_mode = {"vanilla": 0, "simple": 1, "restricted": 2, "full": 3, "crossed": 4,
# byte 1: LLLW WSSS (logic, mode, sword)
logic_mode = {"noglitches": 0, "minorglitches": 1, "nologic": 2, "owglitches": 3, "majorglitches": 4}
world_mode = {"open": 0, "standard": 1, "inverted": 2}
sword_mode = {"random": 0, "assured": 1, "swordless": 2, "vanilla": 3, "bombs": 4, "pseudo": 5}
sword_mode = {"random": 0, "assured": 1, "swordless": 2, "vanilla": 3, "bombs": 4, "pseudo": 5, "assured_pseudo": 6}
# byte 2: GGGD DFFH (goal, diff, item_func, hints)
goal_mode = {"ganon": 0, "pedestal": 1, "dungeons": 2, "triforcehunt": 3, "crystals": 4}

View File

@@ -831,7 +831,7 @@ def get_pool_core(progressive, owShuffle, owSwap, shuffle, difficulty, treasure_
place_item('Master Sword Pedestal', 'Triforce')
else:
pool.extend(diff.progressivesword if want_progressives() else diff.basicsword)
if swords == 'assured':
if swords in ['assured', 'assured_pseudo']:
if want_progressives():
precollected_items.append('Progressive Sword')
pool.remove('Progressive Sword')

View File

@@ -193,6 +193,7 @@ def roll_settings(weights):
'vanilla': 'vanilla',
'swordless': 'swordless',
'pseudo': 'pseudo',
'assured_pseudo': 'assured_pseudo',
'bombs': 'bombs'
}[get_choice('weapons')]

6
Rom.py
View File

@@ -1060,7 +1060,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
rom.write_bytes(0x180098, [difficulty.progressive_bow_limit, overflow_replacement])
if difficulty.progressive_bow_limit < 2 and world.swords[player] in ['swordless', 'pseudo']:
if difficulty.progressive_bow_limit < 2 and world.swords[player] in ['swordless', 'pseudo', 'assured_pseudo']:
rom.write_bytes(0x180098, [2, overflow_replacement])
# set up game internal RNG seed
@@ -1193,7 +1193,7 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
rom.write_byte(0x180041, 0x01) # swordless medallions (on pads)
rom.write_byte(0x180043, 0xFF) # starting sword for link
rom.write_byte(0x180044, 0x01) # hammer activates tablets
elif world.swords[player] == 'pseudo':
elif world.swords[player] in ['pseudo', 'assured_pseudo']:
rom.write_byte(0x18002F, 0x02) # pseudo-swords
rom.write_byte(0x18003F, 0x01) # hammer can harm ganon
elif world.swords[player] == 'bombs':
@@ -2377,7 +2377,7 @@ def write_strings(rom, world, player, team):
prog_bow_locs = world.find_items('Progressive Bow', player)
distinguished_prog_bow_loc = next((location for location in prog_bow_locs if location.item.code == 0x65), None)
progressive_silvers = world.difficulty_requirements[player].progressive_bow_limit >= 2 or world.swords[player] in ['swordless', 'pseudo']
progressive_silvers = world.difficulty_requirements[player].progressive_bow_limit >= 2 or world.swords[player] in ['swordless', 'pseudo', 'assured_pseudo']
if distinguished_prog_bow_loc:
prog_bow_locs.remove(distinguished_prog_bow_loc)
hint_phrase = hint_text(distinguished_prog_bow_loc).replace("Ganon's", "my")

View File

@@ -848,7 +848,7 @@ def default_rules(world, player):
swordless_rules(world, player)
if world.swords[player] == 'bombs':
bomb_mode_rules(world, player)
if world.swords[player] == 'pseudo':
if world.swords[player] in ['pseudo', 'assured_pseudo']:
pseudo_sword_mode_rules(world, player)

View File

@@ -35,6 +35,7 @@
"assured",
"swordless",
"pseudo",
"assured_pseudo",
"bombs",
"vanilla"
]

View File

@@ -272,6 +272,7 @@
"randomizer.item.weapons.assured": "Assured",
"randomizer.item.weapons.swordless": "Swordless",
"randomizer.item.weapons.pseudo": "Pseudo-Swords",
"randomizer.item.weapons.assured_pseudo": "Assured Pseudo-Swords",
"randomizer.item.weapons.bombs": "Bomb-Only",
"randomizer.item.weapons.vanilla": "Vanilla",