Blind Attic hint in crossed
Hint default change to False, moved GUI checkbox
This commit is contained in:
4
CLI.py
4
CLI.py
@@ -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
15
Rom.py
@@ -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}"
|
||||||
|
|||||||
29
Utils.py
29
Utils.py
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
@@ -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",
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
{
|
{
|
||||||
"checkboxes": {
|
"checkboxes": {
|
||||||
"hints": {
|
|
||||||
"type": "checkbox",
|
|
||||||
"default": "true"
|
|
||||||
},
|
|
||||||
"nobgm": { "type": "checkbox" },
|
"nobgm": { "type": "checkbox" },
|
||||||
"quickswap": { "type": "checkbox" }
|
"quickswap": { "type": "checkbox" }
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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": {
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user