Blind Attic hint in crossed

Hint default change to False, moved GUI checkbox
This commit is contained in:
aerinon
2021-06-02 10:51:21 -06:00
parent 5c60f1996e
commit 46ccfedcdc
10 changed files with 43 additions and 33 deletions

4
CLI.py
View File

@@ -179,9 +179,7 @@ def parse_settings():
"names": "", "names": "",
"securerandom": False, "securerandom": False,
# Hints default to TRUE "hints": False,
"hints": True,
"no_hints": False,
"disablemusic": False, "disablemusic": False,
"quickswap": False, "quickswap": False,
"heartcolor": "red", "heartcolor": "red",

15
Rom.py
View File

@@ -27,7 +27,7 @@ from EntranceShuffle import door_addresses, exit_ids
JAP10HASH = '03a63945398191337e896e5771f77173' JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = 'f8f1b851b091d50af2b87283ea79ed90' RANDOMIZERBASEHASH = '56cf37536facb8e6b19d2ce516436f66'
class JsonRom(object): class JsonRom(object):
@@ -2026,7 +2026,7 @@ def write_strings(rom, world, player, team):
if world.doorShuffle[player] in ['crossed']: if world.doorShuffle[player] in ['crossed']:
attic_hint = world.get_location("Thieves' Town - Attic", player).parent_region.dungeon.name attic_hint = world.get_location("Thieves' Town - Attic", player).parent_region.dungeon.name
this_hint = 'A cracked floor can be found in ' + attic_hint + '.' this_hint = 'A cracked floor can be found in ' + attic_hint + '.'
if hint_locations[0] == 'telepathic_tile_thieves_town_upstairs': if world.intensity[player] < 2 and hint_locations[0] == 'telepathic_tile_thieves_town_upstairs':
tt[hint_locations.pop(1)] = this_hint tt[hint_locations.pop(1)] = this_hint
else: else:
tt[hint_locations.pop(0)] = this_hint tt[hint_locations.pop(0)] = this_hint
@@ -2115,6 +2115,17 @@ def write_strings(rom, world, player, team):
bombos_text = 'Some Hot Air' if bombositem is None else hint_text(bombositem, True) if bombositem.pedestal_hint_text is not None else 'Unknown Item' bombos_text = 'Some Hot Air' if bombositem is None else hint_text(bombositem, True) if bombositem.pedestal_hint_text is not None else 'Unknown Item'
tt['tablet_bombos_book'] = bombos_text tt['tablet_bombos_book'] = bombos_text
# attic hint
if world.doorShuffle[player] in ['crossed']:
attic_hint = world.get_location("Thieves' Town - Attic", player).parent_region.dungeon.name
tt['blind_not_that_way'] = f'{attic_hint} is too bright for my eyes'
# see tagalog.asm tables at 957,967 or Follower_HandleTrigger in JPDASM
# also the baserom table at org $09A4C2 in hooks.asm (Escort text)
rom.write_byte(0x04a4be, 0xac) # change the room to blind's room
rom.write_byte(0x04a526, 0xb8) # y coordinate, shifted down
rom.write_byte(0x04a529, 0x19) # x tile shifted right a few tiles
rom.write_byte(0x04a52e, 0x06) # follower set to blind maiden
# inverted spawn menu changes # inverted spawn menu changes
if world.mode[player] == 'inverted': if world.mode[player] == 'inverted':
tt['menu_start_2'] = "{MENU}\n{SPEED0}\n≥@'s house\n Dark Chapel\n{CHOICE3}" tt['menu_start_2'] = "{MENU}\n{SPEED0}\n≥@'s house\n Dark Chapel\n{CHOICE3}"

View File

@@ -294,29 +294,18 @@ def update_deprecated_args(args):
if args: if args:
argVars = vars(args) argVars = vars(args)
truthy = [1, True, "True", "true"] truthy = [1, True, "True", "true"]
# Hints default to TRUE # Hints default to FALSE
# Don't do: Yes # Don't do: Yes
# Do: No # Do: No
if "no_hints" in argVars: if "no_hints" in argVars:
src = "no_hints" if args.no_hints in truthy:
if isinstance(argVars["hints"], dict): if isinstance(argVars["hints"], dict):
tmp = {} tmp = {}
for idx in range(1, len(argVars["hints"]) + 1): for idx in range(1, len(argVars["hints"]) + 1):
tmp[idx] = argVars[src] not in truthy # tmp = !src tmp[idx] = False
args.hints = tmp # dest = tmp args.hints = tmp
else: else:
args.hints = args.no_hints not in truthy # dest = !src args.hints = False
# Don't do: No
# Do: Yes
if "hints" in argVars:
src = "hints"
if isinstance(argVars["hints"], dict):
tmp = {}
for idx in range(1, len(argVars["hints"]) + 1):
tmp[idx] = argVars[src] not in truthy # tmp = !src
args.no_hints = tmp # dest = tmp
else:
args.no_hints = args.hints not in truthy # dest = !src
# Spoiler defaults to TRUE # Spoiler defaults to TRUE
# Don't do: Yes # Don't do: Yes

View File

@@ -173,6 +173,12 @@ JSL RainPrevention : NOP #2
org $1edabf ; <- sprite_energy_ball.asm : 86-7 Sprite_EnergyBall (LDA.b #$10 : LDX.b #$00) org $1edabf ; <- sprite_energy_ball.asm : 86-7 Sprite_EnergyBall (LDA.b #$10 : LDX.b #$00)
JSL StandardAgaDmg JSL StandardAgaDmg
org $09a681 ; < - similar to talalong.asm : 1157 (JSL Main_ShowTextMessage)
JSL BlindsAtticHint : NOP #2
org $1cfd69
Main_ShowTextMessage:
; These two, if enabled together, have implications for vanilla BK doors in IP/Hera/Mire ; These two, if enabled together, have implications for vanilla BK doors in IP/Hera/Mire
; IPBJ is common enough to consider not doing this. Mire is not a concern for vanilla - maybe glitched modes ; IPBJ is common enough to consider not doing this. Mire is not a concern for vanilla - maybe glitched modes
; Hera BK door back can be seen with Pot clipping - likely useful for no logic seeds ; Hera BK door back can be seen with Pot clipping - likely useful for no logic seeds

View File

@@ -148,3 +148,10 @@ StandardAgaDmg:
LDA.b #$10 ; hurt him! LDA.b #$10 ; hurt him!
+ RTL ; A is zero if the AND results in zero and then Agahnim's invincible! + RTL ; A is zero if the AND results in zero and then Agahnim's invincible!
; note: this skips both maiden dialog triggers if the hole is open
BlindsAtticHint:
CMP.w #$0122 : BNE +
LDA $7EF0CA : AND.w #$0100 : BEQ +
SEP #$20 : RTL ; skip the dialog box if the hole is already open
+ SEP #$20 : JML Main_ShowTextMessage

Binary file not shown.

View File

@@ -128,7 +128,7 @@
"randomizer.entrance.entranceshuffle.dungeonssimple": "Dungeons + Simple", "randomizer.entrance.entranceshuffle.dungeonssimple": "Dungeons + Simple",
"randomizer.gameoptions.hints": "Include Helpful Hints",
"randomizer.gameoptions.nobgm": "Disable Music & MSU-1", "randomizer.gameoptions.nobgm": "Disable Music & MSU-1",
"randomizer.gameoptions.quickswap": "L/R Quickswapping", "randomizer.gameoptions.quickswap": "L/R Quickswapping",
@@ -184,7 +184,7 @@
"randomizer.generation.rom.dialog.romfiles": "Rom Files", "randomizer.generation.rom.dialog.romfiles": "Rom Files",
"randomizer.generation.rom.dialog.allfiles": "All Files", "randomizer.generation.rom.dialog.allfiles": "All Files",
"randomizer.item.hints": "Include Helpful Hints",
"randomizer.item.retro": "Retro mode (universal keys)", "randomizer.item.retro": "Retro mode (universal keys)",
"randomizer.item.worldstate": "World State", "randomizer.item.worldstate": "World State",

View File

@@ -1,9 +1,5 @@
{ {
"checkboxes": { "checkboxes": {
"hints": {
"type": "checkbox",
"default": "true"
},
"nobgm": { "type": "checkbox" }, "nobgm": { "type": "checkbox" },
"quickswap": { "type": "checkbox" } "quickswap": { "type": "checkbox" }
}, },

View File

@@ -1,7 +1,10 @@
{ {
"checkboxes": { "checkboxes": {
"retro": { "type": "checkbox" }, "retro": { "type": "checkbox" },
"shopsanity": { "type": "checkbox" } "shopsanity": { "type": "checkbox" },
"hints": {
"type": "checkbox"
}
}, },
"leftItemFrame": { "leftItemFrame": {
"worldstate": { "worldstate": {

View File

@@ -55,6 +55,7 @@ CUSTOMITEMLABELS = [
SETTINGSTOPROCESS = { SETTINGSTOPROCESS = {
"randomizer": { "randomizer": {
"item": { "item": {
"hints": "hints",
"retro": "retro", "retro": "retro",
"shopsanity": "shopsanity", "shopsanity": "shopsanity",
"worldstate": "mode", "worldstate": "mode",
@@ -97,7 +98,6 @@ SETTINGSTOPROCESS = {
"standardize_palettes": "standardize_palettes", "standardize_palettes": "standardize_palettes",
}, },
"gameoptions": { "gameoptions": {
"hints": "hints",
"nobgm": "disablemusic", "nobgm": "disablemusic",
"quickswap": "quickswap", "quickswap": "quickswap",
"heartcolor": "heartcolor", "heartcolor": "heartcolor",