Merge branch 'DoorDevVolatile' into Customizer

# Conflicts:
#	DoorShuffle.py
This commit is contained in:
aerinon
2022-03-29 14:32:24 -06:00
7 changed files with 18 additions and 9 deletions

View File

@@ -1887,7 +1887,7 @@ def smooth_door_pairs(world, player):
if type_b == DoorKind.SmallKey: if type_b == DoorKind.SmallKey:
remove_pair(door, world, player) remove_pair(door, world, player)
else: else:
if valid_pair: if valid_pair and not std_forbidden(door, world, player):
bd_candidates[door.entrance.parent_region.dungeon].append(door) bd_candidates[door.entrance.parent_region.dungeon].append(door)
elif type_a in [DoorKind.Bombable, DoorKind.Dashable] or type_b in [DoorKind.Bombable, DoorKind.Dashable]: elif type_a in [DoorKind.Bombable, DoorKind.Dashable] or type_b in [DoorKind.Bombable, DoorKind.Dashable]:
if type_a in [DoorKind.Bombable, DoorKind.Dashable]: if type_a in [DoorKind.Bombable, DoorKind.Dashable]:
@@ -1896,7 +1896,8 @@ def smooth_door_pairs(world, player):
else: else:
room_b.change(partner.doorListPos, DoorKind.Normal) room_b.change(partner.doorListPos, DoorKind.Normal)
remove_pair(partner, world, player) remove_pair(partner, world, player)
elif valid_pair and type_a != DoorKind.SmallKey and type_b != DoorKind.SmallKey: elif (valid_pair and type_a != DoorKind.SmallKey and type_b != DoorKind.SmallKey
and not std_forbidden(door, world, player)):
bd_candidates[door.entrance.parent_region.dungeon].append(door) bd_candidates[door.entrance.parent_region.dungeon].append(door)
shuffle_bombable_dashable(bd_candidates, world, player) shuffle_bombable_dashable(bd_candidates, world, player)
world.paired_doors[player] = [x for x in world.paired_doors[player] if x.pair or x.original] world.paired_doors[player] = [x for x in world.paired_doors[player] if x.pair or x.original]
@@ -1935,6 +1936,11 @@ def stateful_door(door, kind):
return False return False
def std_forbidden(door, world, player):
return (world.mode[player] == 'standard' and door.entrance.parent_region.dungeon.name == 'Hyrule Castle' and
'Hyrule Castle Throne Room N' in [door.name, door.dest.name])
def custom_door_kind(custom_key, kind, bd_candidates, counts, world, player): def custom_door_kind(custom_key, kind, bd_candidates, counts, world, player):
if custom_key in world.custom_door_types[player]: if custom_key in world.custom_door_types[player]:
for door_a, door_b in world.custom_door_types[player][custom_key]: for door_a, door_b in world.custom_door_types[player][custom_key]:

View File

@@ -141,7 +141,7 @@ def roll_settings(weights):
ret.algorithm = get_choice('algorithm') ret.algorithm = get_choice('algorithm')
glitch_map = {'none': 'noglitches', 'no_logic': 'nologic', 'owglitches': 'owglitches', glitch_map = {'none': 'noglitches', 'no_logic': 'nologic', 'owglitches': 'owglitches',
'minorglitches': 'minorglitches'} 'owg': 'owglitches', 'minorglitches': 'minorglitches'}
glitches_required = get_choice('glitches_required') glitches_required = get_choice('glitches_required')
if glitches_required is not None: if glitches_required is not None:
if glitches_required not in glitch_map.keys(): if glitches_required not in glitch_map.keys():

View File

@@ -168,6 +168,7 @@ Same as above but both small keys and bigs keys of the dungeon are not allowed o
* Logic refinements * Logic refinements
* Skull X Room requires Boots or access to Skull Back Drop * Skull X Room requires Boots or access to Skull Back Drop
* GT Falling Torches requires Boots to get over the falling tile gap (this is a stop-gap measure until more sophisticated crystal switch traversal is possible) * GT Falling Torches requires Boots to get over the falling tile gap (this is a stop-gap measure until more sophisticated crystal switch traversal is possible)
* Fixed a couple rain state issues
* 1.0.1.11 * 1.0.1.11
* Separated Collection Rate counter from experimental * Separated Collection Rate counter from experimental
* Added MSU Resume option * Added MSU Resume option

2
Rom.py
View File

@@ -35,7 +35,7 @@ from source.item.FillUtil import valid_pot_items
JAP10HASH = '03a63945398191337e896e5771f77173' JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = '1e45d174c71b2e079df1c8d5e8d1451b' RANDOMIZERBASEHASH = '8d196e8024faebbbbe1304032158ccea'
class JsonRom(object): class JsonRom(object):

View File

@@ -176,7 +176,7 @@ org $02d9ce ; <- Bank02.asm : Dungeon_LoadEntrance 10829 (STA $A0 : STA $048E)
JSL CheckDarkWorldSpawn : NOP JSL CheckDarkWorldSpawn : NOP
org $01891e ; <- Bank 01.asm : 991 Dungeon_LoadType2Object (LDA $00 : XBA : AND.w #$00FF) org $01891e ; <- Bank 01.asm : 991 Dungeon_LoadType2Object (LDA $00 : XBA : AND.w #$00FF)
JSL RainPrevention : NOP #2 JSL RainPrevention : BCC + : RTS : NOP : +
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

View File

@@ -118,7 +118,7 @@ RetrieveBunnyState:
+ RTL + RTL
RainPrevention: RainPrevention:
LDA $00 : XBA : AND #$00FF ; what we wrote over LDA $00 : XBA : AND #$00FF : STA.b $0A ; what we wrote over
PHA PHA
LDA $7EF3C5 : AND #$00FF : CMP #$0002 : !BGE .done ; only in rain states (0 or 1) LDA $7EF3C5 : AND #$00FF : CMP #$0002 : !BGE .done ; only in rain states (0 or 1)
LDA.l $7EF3C6 : AND #$0004 : BNE .done ; zelda's been rescued LDA.l $7EF3C6 : AND #$0004 : BNE .done ; zelda's been rescued
@@ -131,9 +131,11 @@ RainPrevention:
LDX #$FFFE LDX #$FFFE
- INX #2 : LDA.l RemoveRainDoorsRoom, X : CMP #$FFFF : BEQ .done - INX #2 : LDA.l RemoveRainDoorsRoom, X : CMP #$FFFF : BEQ .done
CMP $A0 : BNE - CMP $A0 : BNE -
LDA.l RainDoorMatch, X : CMP $00 : BNE - SEP #$20 : LDA.l RainDoorMatch, X : CMP $00 : BNE .continue
PLA : LDA #$0008 : RTL REP #$20 : PLA : SEC : RTL
.done PLA : RTL .continue
REP #$20 : BRA -
.done PLA : CLC : RTL
; A should be how much dmg to do to Aga when leaving this function ; A should be how much dmg to do to Aga when leaving this function
StandardAgaDmg: StandardAgaDmg:

Binary file not shown.