Add assured pseudo-sword mode
This commit is contained in:
@@ -797,7 +797,7 @@ class CollectionState(object):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def has_real_sword(self, player, level=1):
|
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 False;
|
||||||
return self.has_sword(player, level)
|
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)
|
# 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}
|
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)
|
# byte 2: GGGD DFFH (goal, diff, item_func, hints)
|
||||||
goal_mode = {"ganon": 0, "pedestal": 1, "dungeons": 2, "triforcehunt": 3, "crystals": 4}
|
goal_mode = {"ganon": 0, "pedestal": 1, "dungeons": 2, "triforcehunt": 3, "crystals": 4}
|
||||||
|
|||||||
@@ -831,7 +831,7 @@ def get_pool_core(progressive, owShuffle, owSwap, shuffle, difficulty, treasure_
|
|||||||
place_item('Master Sword Pedestal', 'Triforce')
|
place_item('Master Sword Pedestal', 'Triforce')
|
||||||
else:
|
else:
|
||||||
pool.extend(diff.progressivesword if want_progressives() else diff.basicsword)
|
pool.extend(diff.progressivesword if want_progressives() else diff.basicsword)
|
||||||
if swords == 'assured':
|
if swords in ['assured', 'assured_pseudo']:
|
||||||
if want_progressives():
|
if want_progressives():
|
||||||
precollected_items.append('Progressive Sword')
|
precollected_items.append('Progressive Sword')
|
||||||
pool.remove('Progressive Sword')
|
pool.remove('Progressive Sword')
|
||||||
|
|||||||
@@ -193,6 +193,7 @@ def roll_settings(weights):
|
|||||||
'vanilla': 'vanilla',
|
'vanilla': 'vanilla',
|
||||||
'swordless': 'swordless',
|
'swordless': 'swordless',
|
||||||
'pseudo': 'pseudo',
|
'pseudo': 'pseudo',
|
||||||
|
'assured_pseudo': 'assured_pseudo',
|
||||||
'bombs': 'bombs'
|
'bombs': 'bombs'
|
||||||
}[get_choice('weapons')]
|
}[get_choice('weapons')]
|
||||||
|
|
||||||
|
|||||||
6
Rom.py
6
Rom.py
@@ -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
|
#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']:
|
if difficulty.progressive_bow_limit < 2 and world.swords[player] in ['swordless', '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
|
||||||
@@ -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(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
|
||||||
elif world.swords[player] == '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] == 'bombs':
|
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)
|
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)
|
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:
|
if distinguished_prog_bow_loc:
|
||||||
prog_bow_locs.remove(distinguished_prog_bow_loc)
|
prog_bow_locs.remove(distinguished_prog_bow_loc)
|
||||||
hint_phrase = hint_text(distinguished_prog_bow_loc).replace("Ganon's", "my")
|
hint_phrase = hint_text(distinguished_prog_bow_loc).replace("Ganon's", "my")
|
||||||
|
|||||||
2
Rules.py
2
Rules.py
@@ -848,7 +848,7 @@ def default_rules(world, player):
|
|||||||
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)
|
||||||
if world.swords[player] == 'pseudo':
|
if world.swords[player] in ['pseudo', 'assured_pseudo']:
|
||||||
pseudo_sword_mode_rules(world, player)
|
pseudo_sword_mode_rules(world, player)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
"assured",
|
"assured",
|
||||||
"swordless",
|
"swordless",
|
||||||
"pseudo",
|
"pseudo",
|
||||||
|
"assured_pseudo",
|
||||||
"bombs",
|
"bombs",
|
||||||
"vanilla"
|
"vanilla"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -272,6 +272,7 @@
|
|||||||
"randomizer.item.weapons.assured": "Assured",
|
"randomizer.item.weapons.assured": "Assured",
|
||||||
"randomizer.item.weapons.swordless": "Swordless",
|
"randomizer.item.weapons.swordless": "Swordless",
|
||||||
"randomizer.item.weapons.pseudo": "Pseudo-Swords",
|
"randomizer.item.weapons.pseudo": "Pseudo-Swords",
|
||||||
|
"randomizer.item.weapons.assured_pseudo": "Assured Pseudo-Swords",
|
||||||
"randomizer.item.weapons.bombs": "Bomb-Only",
|
"randomizer.item.weapons.bombs": "Bomb-Only",
|
||||||
"randomizer.item.weapons.vanilla": "Vanilla",
|
"randomizer.item.weapons.vanilla": "Vanilla",
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user