From 63bff5998b7815e023e304259ccb78c1d2849d0b Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 25 Jul 2021 01:49:12 -0700 Subject: [PATCH] Add assured pseudo-sword mode --- BaseClasses.py | 4 ++-- ItemList.py | 2 +- Mystery.py | 1 + Rom.py | 6 +++--- Rules.py | 2 +- resources/app/cli/args.json | 1 + resources/app/gui/lang/en.json | 1 + 7 files changed, 10 insertions(+), 7 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index bc1a64e6..26a7906b 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -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} diff --git a/ItemList.py b/ItemList.py index 0d921730..ee35450e 100644 --- a/ItemList.py +++ b/ItemList.py @@ -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') diff --git a/Mystery.py b/Mystery.py index 43fb2e87..bc225c2d 100644 --- a/Mystery.py +++ b/Mystery.py @@ -193,6 +193,7 @@ def roll_settings(weights): 'vanilla': 'vanilla', 'swordless': 'swordless', 'pseudo': 'pseudo', + 'assured_pseudo': 'assured_pseudo', 'bombs': 'bombs' }[get_choice('weapons')] diff --git a/Rom.py b/Rom.py index d817a8e5..c4928594 100644 --- a/Rom.py +++ b/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 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") diff --git a/Rules.py b/Rules.py index 6b7aba7f..a45ee329 100644 --- a/Rules.py +++ b/Rules.py @@ -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) diff --git a/resources/app/cli/args.json b/resources/app/cli/args.json index 2b909889..565f19d8 100644 --- a/resources/app/cli/args.json +++ b/resources/app/cli/args.json @@ -35,6 +35,7 @@ "assured", "swordless", "pseudo", + "assured_pseudo", "bombs", "vanilla" ] diff --git a/resources/app/gui/lang/en.json b/resources/app/gui/lang/en.json index a73895c6..60f6acb1 100644 --- a/resources/app/gui/lang/en.json +++ b/resources/app/gui/lang/en.json @@ -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",