2023-07-06 04:39:26 +00:00
from typing import Dict , List , Set
2023-02-24 06:33:09 +00:00
from worlds . generic . Rules import set_rule , add_rule
2023-07-06 04:39:26 +00:00
from BaseClasses import CollectionState
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def total_fervour ( state : CollectionState , player : int ) - > int :
totalFervour : int = 60 + ( 20 * state . count ( " Fervour Upgrade " , player ) ) + ( 10 * state . count ( " Bead of Blue Wax " , player ) )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
return totalFervour
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def aubade ( state : CollectionState , player : int ) - > bool :
return state . has ( " Aubade of the Nameless Guardian " , player ) if total_fervour ( state , player ) > = 90 else False
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def tirana ( state : CollectionState , player : int ) - > bool :
return state . has ( " Tirana of the Celestial Bastion " , player ) if total_fervour ( state , player ) > = 90 else False
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def pillar ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " Debla of the Lights " , " Taranto to my Sister " , " Cloistered Ruby " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def charge_beam ( state : CollectionState , player : int ) - > bool :
return state . has ( " Charged Skill " , player , 3 )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_air_stall ( state : CollectionState , logic : int , player : int ) - > bool :
return state . has ( " Ranged Skill " , player ) if logic > = 1 else False
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_dawn_jump ( state : CollectionState , logic : int , player : int ) - > bool :
return state . has_all ( { " Brilliant Heart of Dawn " , " Dash Ability " } , player ) if logic > = 1 else False
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_water_jump ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " Nail Uprooted from Dirt " , " Purified Hand of the Nun " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_break_holes ( state : CollectionState , player : int ) - > bool :
return (
state . has_any ( { " Charged Skill " , " Dive Skill " } , player )
or (
state . has ( " Lunge Skill " , player , 3 )
and state . has ( " Dash Ability " , player )
)
or state . has_group ( " prayer " , player )
or aubade ( state , player )
or tirana ( state , player )
)
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_break_tirana ( state : CollectionState , logic : int , player : int ) - > bool :
return tirana ( state , player ) if logic > = 2 else False
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_dive_laser ( state : CollectionState , logic : int , player : int ) - > bool :
return state . has ( " Dive Skill " , player , 3 ) if logic > = 2 else False
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_walk_on_root ( state : CollectionState , player : int ) - > bool :
return state . has ( " Three Gnarled Tongues " , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_climb_on_root ( state : CollectionState , player : int ) - > bool :
return state . has_all ( { " Three Gnarled Tongues " , " Wall Climb Ability " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_survive_poison ( state : CollectionState , logic : int , player : int , number : int ) - > bool :
if number == 1 :
if logic > = 2 :
return True
elif logic == 1 :
return state . has_any ( { " Silvered Lung of Dolphos " , " Tiento to your Thorned Hairs " } , player )
elif logic == 0 :
return state . has ( " Silvered Lung of Dolphos " , player )
elif number == 2 :
if logic > = 1 :
return state . has_any ( { " Silvered Lung of Dolphos " , " Tiento to your Thorned Hairs " } , player )
else :
return state . has ( " Silvered Lung of Dolphos " , player )
elif number == 3 :
if logic > = 2 and total_fervour ( state , player ) > = 120 :
return state . has_any ( { " Silvered Lung of Dolphos " , " Tiento to your Thorned Hairs " } , player )
else :
return state . has ( " Silvered Lung of Dolphos " , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_enemy_bounce ( logic : int , enemy : int ) - > bool : # TODO
return enemy_skips_allowed ( logic , enemy )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_enemy_upslash ( state : CollectionState , logic : int , enemy : int , player : int ) - > bool :
return state . has ( " Combo Skill " , player , 2 ) and \
enemy_skips_allowed ( logic , enemy )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_cross_gap ( state : CollectionState , logic : int , player : int , number : int ) - > bool :
if number == 1 :
return (
state . has_any ( { " Purified Hand of the Nun " , " The Young Mason ' s Wheel " } , player )
or can_dawn_jump ( state , logic , player )
or can_air_stall ( state , logic , player )
)
elif number == 2 :
return (
state . has_any ( { " Purified Hand of the Nun " , " The Young Mason ' s Wheel " } , player )
or can_dawn_jump ( state , logic , player )
)
elif number == 3 :
return (
state . has ( " Purified Hand of the Nun " , player )
or can_dawn_jump ( state , logic , player )
or (
state . has ( " The Young Mason ' s Wheel " , player )
and can_air_stall ( state , logic , player )
)
)
elif number == 4 :
return (
state . has ( " Purified Hand of the Nun " , player )
or can_dawn_jump ( state , logic , player )
)
elif number == 5 :
return (
state . has ( " Purified Hand of the Nun " , player )
or (
can_dawn_jump ( state , logic , player )
and can_air_stall ( state , logic , player ) )
)
elif number == 6 :
return state . has ( " Purified Hand of the Nun " , player )
elif number == 7 :
return (
state . has ( " Purified Hand of the Nun " , player )
and (
can_dawn_jump ( state , logic , player )
or state . has ( " The Young Mason ' s Wheel " , player )
or can_air_stall ( state , logic , player )
)
)
elif number == 8 :
return (
state . has ( " Purified Hand of the Nun " , player )
and (
can_dawn_jump ( state , logic , player )
or state . has ( " The Young Mason ' s Wheel " , player )
)
)
elif number == 9 :
return (
state . has ( " Purified Hand of the Nun " , player )
and (
can_dawn_jump ( state , logic , player )
or state . has ( " The Young Mason ' s Wheel " , player )
and can_air_stall ( state , logic , player )
)
)
elif number == 10 :
return (
state . has ( " Purified Hand of the Nun " , player )
and can_dawn_jump ( state , logic , player )
)
elif number == 11 :
return (
state . has ( " Purified Hand of the Nun " , player )
and can_dawn_jump ( state , logic , player )
and can_air_stall ( state , logic , player )
)
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def can_ride_albero_elevator ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D02Z02S11[NW] " , " D02Z02S11[NE] " , " D02Z02S11[W] " , " D02Z02S11[E] " , \
" D02Z02S11[SE] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_dc_gate_w ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D01Z05S24[W] " , " D01Z05S24[E] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_dc_gate_e ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D01Z05S12[W] " , " D01Z05S12[E] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_dc_ladder ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D01Z05S20[W] " , " D01Z05S20[N] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_wotw_cave ( state : CollectionState , player : int ) - > bool :
return (
state . has ( " D02Z01S06[E] " , player )
or state . has ( " Wall Climb Ability " , player )
and (
state . has ( " D02Z01S06[W] " , player )
or state . has ( " D02Z01S06[Cherubs] " , player )
)
)
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def rode_gotp_elevator ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D02Z02S11[NW] " , " D02Z02S11[NE] " , " D02Z02S11[W] " , " D02Z02S11[E] " , \
" D02Z02S11[SE] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_convent_ladder ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D02Z03S11[S] " , " D02Z03S11[W] " , " D02Z03S11[NW] " , " D02Z03S11[E] " , \
" D02Z03S11[NE] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def broke_jondo_bell_w ( state : CollectionState , player : int ) - > bool :
return (
state . has ( " D03Z02S09[S] " , player )
or state . has ( " D03Z02S09[W] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D03Z02S09[N] " , player )
or state . has ( " D03Z02S09[Cherubs] " , player )
)
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def broke_jondo_bell_e ( state : CollectionState , logic : int , enemy : int , player : int ) - > bool :
return (
state . has ( " D03Z02S05[S] " , player )
or state . has ( " D03Z02S05[E] " , player )
or state . has ( " D03Z02S05[W] " , player )
and (
can_cross_gap ( state , logic , player , 5 )
or can_enemy_bounce ( logic , enemy )
and can_cross_gap ( state , logic , player , 3 )
)
)
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_mom_ladder ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D04Z02S06[NW] " , " D04Z02S06[NE] " , " D04Z02S06[N] " , " D04Z02S06[S] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_tsc_gate ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D05Z02S11[W] " , " D05Z02S11[Cherubs] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_ar_ladder ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D06Z01S23[Sword] " , " D06Z01S23[E] " , " D06Z01S23[S] " , " D06Z01S23[Cherubs] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def broke_bottc_statue ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D08Z01S02[NE] " , " D08Z01S02[SE] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_wothp_gate ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D09Z01S05[W] " , " D09Z01S05[SE] " , " D09Z01S05[NE] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def opened_botss_ladder ( state : CollectionState , player : int ) - > bool :
return state . has_any ( { " D17Z01S04[N] " , " D17Z01S04[FrontR] " } , player )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def upwarp_skips_allowed ( logic : int ) - > bool :
2023-08-16 14:09:49 +00:00
return logic > = 2
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def mourning_skips_allowed ( logic : int ) - > bool :
2023-08-16 14:09:49 +00:00
return logic > = 2
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def enemy_skips_allowed ( logic : int , enemy : int ) - > bool :
2023-08-16 14:09:49 +00:00
return logic > = 2 and enemy == 0
2023-02-24 06:33:09 +00:00
2023-08-16 14:09:49 +00:00
def obscure_skips_allowed ( logic ) :
return logic > = 2
2023-07-06 04:39:26 +00:00
2023-08-16 14:09:49 +00:00
def precise_skips_allowed ( logic ) :
return logic > = 2
2023-07-06 04:39:26 +00:00
def can_beat_boss ( state : CollectionState , boss : str , logic : int , player : int ) - > bool :
def has_boss_strength ( name : str ) - > bool :
silver : int = state . count ( " Quicksilver " , player ) if state . has ( " D01Z05S27[E] " , player ) else 0
flasks : int = state . count ( " Empty Bile Flask " , player ) if \
state . has_any ( { " D01Z05S18[E] " , " D02Z02S09[E] " , " D03Z02S14[E] " , " D03Z03S03[SE] " , " D04Z02S13[W] " , \
" D05Z01S12[E] " , " D20Z01S08[W] " } , player ) else 0
playerStrength : float = state . count ( " Life Upgrade " , player ) * 0.25 / 6 + \
state . count ( " Mea Culpa Upgrade " , player ) * 0.25 / 7 + state . count ( " Fervour Upgrade " , player ) * 0.20 \
/ 6 + flasks * 0.15 / 8 + silver * 0.15 / 5
bosses : Dict [ str , int ] = {
" warden " : - 0.10 ,
" ten-piedad " : 0.05 ,
" charred-visage " : 0.20 ,
" tres-angustias " : 0.15 ,
" esdras " : 0.25 ,
" melquiades " : 0.25 ,
" exposito " : 0.30 ,
" quirce " : 0.35 ,
" crisanta " : 0.50 ,
" isidora " : 0.70 ,
" sierpes " : 0.70 ,
" amanecida " : 0.60 ,
" laudes " : 0.60 ,
" perpetua " : - 0.05 ,
" legionary " : 0.20
}
bossStrength : int = bosses [ name ]
return playerStrength > = ( bossStrength - 0.10 if logic > = 2 else ( bossStrength if logic > = 1 else bossStrength + 0.10 ) )
if boss == " Brotherhood " :
return (
has_boss_strength ( " warden " )
and state . has_any ( { " D17Z01S11[W] " , " D17Z01S11[E] " } , player )
)
elif boss == " Mercy " :
return (
has_boss_strength ( " ten-piedad " )
and state . has_any ( { " D01Z04S18[W] " , " D01Z04S18[E] " } , player )
)
elif boss == " Convent " :
return (
has_boss_strength ( " charred-visage " )
and state . has_any ( { " D02Z03S20[W] " , " D02Z03S20[E] " } , player )
)
elif boss == " Grievance " :
return (
has_boss_strength ( " tres-angustias " )
and state . has_any ( { " Wall Climb Ability " , " Purified Hand of the Nun " } , player )
and state . has_any ( { " D03Z03S15[W] " , " D03Z03S15[E] " } , player )
)
elif boss == " Bridge " :
return (
has_boss_strength ( " esdras " )
and state . has_any ( { " D08Z01S01[W] " , " D08Z01S01[E] " } , player )
)
elif boss == " Mothers " :
return (
has_boss_strength ( " melquiades " )
and state . has_any ( { " D04Z02S22[W] " , " D04Z02S22[E] " } , player )
)
elif boss == " Canvases " :
return (
has_boss_strength ( " exposito " )
and state . has_any ( { " D05Z02S14[W] " , " D05Z02S14[E] " } , player )
)
elif boss == " Prison " :
return (
has_boss_strength ( " quirce " )
and state . has_any ( { " D09Z01S03[W] " , " D09Z01S03[N] " } , player )
)
elif boss == " Rooftops " :
return (
has_boss_strength ( " crisanta " )
and state . has_any ( { " D06Z01S25[W] " , " D06Z01S25[E] " } , player )
)
elif boss == " Ossuary " :
return (
has_boss_strength ( " isidora " )
and state . has ( " D01BZ08S01[W] " , player )
)
elif boss == " Mourning " :
return (
has_boss_strength ( " sierpes " )
and state . has ( " D20Z02S08[E] " , player )
)
elif boss == " Graveyard " :
return (
has_boss_strength ( " amanecida " )
2023-09-10 22:04:57 +00:00
and state . has_all ( { " D01Z06S01[Santos] " , " D02Z03S23[E] " , " D02Z02S14[W] " , " Wall Climb Ability " } , player )
2023-07-06 04:39:26 +00:00
)
elif boss == " Jondo " :
return (
has_boss_strength ( " amanecida " )
2023-09-10 22:04:57 +00:00
and state . has ( " D01Z06S01[Santos] " , player )
2023-07-06 04:39:26 +00:00
and state . has_any ( { " D20Z01S05[W] " , " D20Z01S05[E] " } , player )
and state . has_any ( { " D03Z01S03[W] " , " D03Z01S03[SW] " } , player )
)
elif boss == " Patio " :
return (
has_boss_strength ( " amanecida " )
2023-09-10 22:04:57 +00:00
and state . has_all ( { " D01Z06S01[Santos] " , " D06Z01S18[E] " } , player )
2023-07-06 04:39:26 +00:00
and state . has_any ( { " D04Z01S04[W] " , " D04Z01S04[E] " , " D04Z01S04[Cherubs] " } , player )
)
elif boss == " Wall " :
return (
has_boss_strength ( " amanecida " )
2023-09-10 22:04:57 +00:00
and state . has_all ( { " D01Z06S01[Santos] " , " D09BZ01S01[Cell24] " } , player )
2023-07-06 04:39:26 +00:00
and state . has_any ( { " D09Z01S01[W] " , " D09Z01S01[E] " } , player )
)
elif boss == " Hall " :
return (
has_boss_strength ( " laudes " )
and state . has_any ( { " D08Z03S03[W] " , " D08Z03S03[E] " } , player )
)
elif boss == " Perpetua " :
return has_boss_strength ( " perpetua " )
elif boss == " Legionary " :
return has_boss_strength ( " legionary " )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def guilt_rooms ( state : CollectionState , player : int , number : int ) - > bool :
doors : List [ str ] = [
" D01Z04S17[W] " ,
" D02Z02S06[E] " ,
" D03Z03S14[W] " ,
" D04Z02S17[W] " ,
" D05Z01S17[W] " ,
" D09Z01S13[E] " ,
" D17Z01S12[E] "
]
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
total : int = sum ( state . has ( item , player ) for item in doors )
2023-02-24 06:33:09 +00:00
2023-08-16 14:09:49 +00:00
return total > = number
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def sword_rooms ( state : CollectionState , player : int , number : int ) - > bool :
doors : List [ Set [ str ] ] = [
{ " D01Z02S06[W] " , " D01Z02S06[E] " } ,
{ " D01Z05S24[W] " , " D01Z05S24[E] " } ,
{ " D02Z03S13[W] " } ,
{ " D04Z02S12[W] " } ,
{ " D05Z01S13[E] " } ,
{ " D06Z01S11[W] " } ,
{ " D17Z01S08[E] " }
]
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
total : int = sum ( state . has_any ( items , player ) for items in doors )
2023-02-24 06:33:09 +00:00
2023-08-16 14:09:49 +00:00
return total > = number
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def redento ( state : CollectionState , world , player : int , number : int ) - > bool :
if number == 1 :
return state . has_any ( { " D03Z01S03[W] " , " D03Z01S03[SW] " } , player )
elif number == 2 :
return (
state . has_any ( { " D03Z01S03[W] " , " D03Z01S03[SW] " } , player )
and state . has ( " OpenedBOTSSLadder " , player )
)
elif number == 3 :
return (
state . has_any ( { " D03Z01S03[W] " , " D03Z01S03[SW] " } , player )
and state . has ( " OpenedBOTSSLadder " , player )
and state . can_reach ( world . multiworld . get_region ( " D01Z03S06 " , player ) )
)
elif number == 4 :
return (
state . has_any ( { " D03Z01S03[W] " , " D03Z01S03[SW] " } , player )
and state . has ( " OpenedBOTSSLadder " , player )
and state . can_reach ( world . multiworld . get_region ( " D01Z03S06 " , player ) )
and state . can_reach ( world . multiworld . get_region ( " D04Z01S04 " , player ) )
)
elif number == 5 :
return (
state . has_any ( { " D03Z01S03[W] " , " D03Z01S03[SW] " } , player )
and state . has ( " OpenedBOTSSLadder " , player )
and state . can_reach ( world . multiworld . get_region ( " D01Z03S06 " , player ) )
and state . can_reach ( world . multiworld . get_region ( " D04Z01S04 " , player ) )
and state . can_reach ( world . multiworld . get_region ( " D04Z02S20 " , player ) )
and state . has_all ( { " Little Toe made of Limestone " , " Big Toe made of Limestone " , \
" Fourth Toe made of Limestone " , " D17Z01S09[E] " } , player )
and state . has ( " Knot of Rosary Rope " , player )
)
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
def miriam ( state : CollectionState , player : int ) - > bool :
return state . has_all ( { " D02Z03S24[E] " , " D03Z03S19[E] " , " D04Z04S02[W] " , " D05Z01S24[E] " , " D06Z01S26[W] " } , player )
def amanecida_rooms ( state : CollectionState , logic : int , player : int , number : int ) - > bool :
bosses : List [ str ] = [
" Graveyard " ,
" Jondo " ,
" Patio " ,
" Wall "
]
total = sum ( can_beat_boss ( state , boss , logic , player ) for boss in bosses )
2023-08-16 14:09:49 +00:00
return total > = number
2023-07-06 04:39:26 +00:00
def chalice_rooms ( state : CollectionState , player : int , number : int ) - > bool :
doors : List [ Set [ str ] ] = [
{ " D03Z01S01[W] " , " D03Z01S01[NE] " , " D03Z01S01[S] " } ,
{ " D05Z02S01[W] " , " D05Z02S01[E] " } ,
{ " D09Z01S07[SW] " , " D09Z01S07[SE] " , " D09Z01S07[W] " , " D09Z01S07[E] " }
]
total : int = sum ( state . has_any ( items , player ) for items in doors )
2023-08-16 14:09:49 +00:00
return total > = number
2023-02-24 06:33:09 +00:00
def rules ( blasphemousworld ) :
world = blasphemousworld . multiworld
player = blasphemousworld . player
2023-07-06 04:39:26 +00:00
logic = world . difficulty [ player ] . value
enemy = world . enemy_randomizer [ player ] . value
# D01Z01S01 (The Holy Line)
# No items
# Doors
set_rule ( world . get_entrance ( " D01Z01S01[S] " , player ) ,
lambda state : (
can_break_holes ( state , player )
or state . has ( " Purified Hand of the Nun " , player )
) )
# D01Z01S02 (The Holy Line)
# Items
set_rule ( world . get_location ( " THL: Across blood platforms " , player ) ,
lambda state : (
state . has_any ( { " Blood Perpetuated in Sand " , " Purified Hand of the Nun " } , player )
) )
# No doors
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D01Z01S03 (The Holy Line)
# Items
set_rule ( world . get_location ( " THL: Underground chest " , player ) ,
lambda state : (
state . has_all ( { " Blood Perpetuated in Sand " , " Dash Ability " } , player )
and can_water_jump ( state , player )
) )
# No doors
# D01Z02S01 (Albero)
# Items
set_rule ( world . get_location ( " Albero: Bless Linen Cloth " , player ) ,
lambda state : state . has ( " Linen Cloth " , player ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Bless Hatched Egg " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has ( " Hatched Egg of Deformity " , player ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Bless Severed Hand " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has ( " Severed Hand " , player ) )
# No doors
# D01Z02S02 (Albero)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Tirso ' s 1st reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " tirso " , player , 1 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Tirso ' s 2nd reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " tirso " , player , 2 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Tirso ' s 3rd reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " tirso " , player , 3 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Tirso ' s 4th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " tirso " , player , 4 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Tirso ' s 5th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " tirso " , player , 5 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Tirso ' s 6th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " tirso " , player , 6 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Tirso ' s final reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has_group ( " tirso " , player , 6 )
and can_beat_boss ( state , " Mercy " , logic , player )
and can_beat_boss ( state , " Convent " , logic , player )
and can_beat_boss ( state , " Grievance " , logic , player )
and can_beat_boss ( state , " Mothers " , logic , player )
and can_beat_boss ( state , " Canvases " , logic , player )
and can_beat_boss ( state , " Prison " , logic , player )
) )
# No doors
# D01Z02S03 (Albero)
# Items
set_rule ( world . get_location ( " Albero: Child of Moonlight " , player ) ,
lambda state : (
state . has ( " RodeGOTPElevator " , player )
or pillar ( state , player )
or state . has ( " Cante Jondo of the Three Sisters " , player )
2023-08-16 14:09:49 +00:00
or state . has ( " Purified Hand of the Nun " , player )
or state . has ( " D01Z02S03[NW] " , player )
and (
2023-10-28 19:47:14 +00:00
can_cross_gap ( state , logic , player , 2 )
2023-07-06 04:39:26 +00:00
or state . has ( " Lorquiana " , player )
or aubade ( state , player )
or state . has ( " Cantina of the Blue Rose " , player )
or charge_beam ( state , player )
2023-10-28 19:47:14 +00:00
or state . has ( " Ranged Skill " , player )
2023-07-06 04:39:26 +00:00
)
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Lvdovico ' s 1st reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " tentudia " , player , 1 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Lvdovico ' s 2nd reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " tentudia " , player , 2 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Albero: Lvdovico ' s 3rd reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " tentudia " , player , 3 ) )
set_rule ( world . get_location ( " Albero: First gift for Cleofas " , player ) ,
lambda state : state . has ( " D04Z02S10[W] " , player ) )
# Doors
set_rule ( world . get_entrance ( " D01Z02S03[NW] " , player ) ,
lambda state : (
state . has ( " D02Z02S11[NW] " , player )
or state . has ( " D02Z02S11[NE] " , player )
or state . has ( " D02Z02S11[W] " , player )
or state . has ( " D02Z02S11[E] " , player )
or state . has ( " D02Z02S11[SE] " , player )
) )
set_rule ( world . get_entrance ( " D01Z02S03[church] " , player ) ,
lambda state : (
can_beat_boss ( state , " Mercy " , logic , player )
or can_beat_boss ( state , " Convent " , logic , player )
or can_beat_boss ( state , " Grievance " , logic , player )
) )
# D01BZ04S01 (Albero: Inside church)
# Items
set_rule ( world . get_location ( " Albero: Final gift for Cleofas " , player ) ,
lambda state : (
state . has_group ( " marks " , player , 3 )
and state . has ( " Cord of the True Burying " , player )
and state . has ( " D04Z02S10[W] " , player )
and state . has ( " D06Z01S18[E] " , player )
) )
# No doors
# D01BZ06S01 (Ossuary)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 1st reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 4 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 2nd reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 8 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 3rd reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 12 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 4th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 16 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 5th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 20 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 6th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 24 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 7th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 28 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 8th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 32 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 9th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 36 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 10th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 40 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Ossuary: 11th reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " bones " , player , 44 ) )
# Doors
set_rule ( world . get_entrance ( " D01BZ06S01[E] " , player ) ,
lambda state : state . has_group ( " bones " , player , 30 ) )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D01BZ08S01 (Isidora)
# Items
set_rule ( world . get_location ( " Ossuary: Isidora, Voice of the Dead " , player ) ,
lambda state : can_beat_boss ( state , " Ossuary " , logic , player ) )
# No doors
# D01Z03S01 (Wasteland of the Buried Churches)
# Items
set_rule ( world . get_location ( " WotBC: Lower log path " , player ) ,
lambda state : state . has ( " D01Z03S01[SE] " , player ) )
# No doors
# D01Z03S02 (Wasteland of the Buried Churches)
# Items
set_rule ( world . get_location ( " WotBC: Hidden alcove " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
# No doors
# D01Z03S03 (Wasteland of the Buried Churches)
# No items
# Doors
set_rule ( world . get_entrance ( " D01Z03S03[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D01Z03S05 (Wasteland of the Buried Churches)
# Items
set_rule ( world . get_location ( " WotBC: Under broken bridge " , player ) ,
lambda state : (
state . has_any ( { " Blood Perpetuated in Sand " , " Boots of Pleading " } , player )
or can_cross_gap ( state , logic , player , 3 )
) )
# Doors
set_rule ( world . get_entrance ( " D01Z03S05[Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D01Z03S06 (Wasteland of the Buried Churches)
# Items
set_rule ( world . get_location ( " WotBC: 3rd meeting with Redento " , player ) ,
lambda state : redento ( state , blasphemousworld , player , 3 ) )
# No doors
# D01Z03S07 (Wasteland of the Buried Churches)
# Items
set_rule ( world . get_location ( " WotBC: Cliffside Child of Moonlight " , player ) ,
lambda state : (
2023-10-28 19:47:14 +00:00
can_cross_gap ( state , logic , player , 2 )
2023-07-06 04:39:26 +00:00
or aubade ( state , player )
or charge_beam ( state , player )
2023-10-28 19:47:14 +00:00
or state . has_any ( { " Lorquiana " , " Cante Jondo of the Three Sisters " , " Cantina of the Blue Rose " , \
" Cloistered Ruby " , " Ranged Skill " } , player )
2023-08-16 14:09:49 +00:00
or precise_skips_allowed ( logic )
2023-07-06 04:39:26 +00:00
) )
# Doors
set_rule ( world . get_entrance ( " D01Z03S07[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D01Z04S01 (Mercy Dreams)
# No items
# Doors
set_rule ( world . get_entrance ( " D01Z04S01[SE] " , player ) ,
lambda state : state . has ( " D01Z04S01[S] " , player ) )
set_rule ( world . get_entrance ( " D01Z04S01[S] " , player ) ,
lambda state : state . has ( " D01Z04S01[SE] " , player ) )
# D01Z04S09 (Mercy Dreams)
# No items
# Doors
set_rule ( world . get_entrance ( " D01Z04S09[W] " , player ) ,
lambda state : state . has ( " OpenedDCGateE " , player ) )
# D01Z04S13 (Mercy Dreams)
# Items
set_rule ( world . get_location ( " MD: Behind gate to TSC " , player ) ,
lambda state : (
state . has ( " D01Z04S13[SE] " , player )
or can_dive_laser ( state , logic , player ) and (
can_air_stall ( state , logic , player )
or state . has_any ( { " The Young Mason ' s Wheel " , " Purified Hand of the Nun " } , player )
or can_enemy_bounce ( logic , enemy )
)
) )
# Doors
set_rule ( world . get_entrance ( " D01Z04S13[SE] " , player ) ,
lambda state : (
can_dive_laser ( state , logic , player ) and (
can_air_stall ( state , logic , player )
or state . has_any ( { " The Young Mason ' s Wheel " , " Purified Hand of the Nun " } , player )
or can_enemy_bounce ( logic , enemy )
)
) )
# D01Z04S14 (Mercy Dreams)
# Items
set_rule ( world . get_location ( " MD: Sliding challenge " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
# No doors
# D01Z04S15 (Mercy Dreams)
# No items
# Doors
set_rule ( world . get_entrance ( " D01Z04S15[W] " , player ) ,
lambda state : (
state . has ( " D01Z04S15[E] " , player )
or state . has ( " D01Z04S15[SW] " , player )
or state . has ( " D01Z04S15[SE] " , player )
) )
set_rule ( world . get_entrance ( " D01Z04S15[E] " , player ) ,
lambda state : (
state . has ( " D01Z04S15[W] " , player )
or state . has ( " D01Z04S15[SW] " , player )
or state . has ( " D01Z04S15[SE] " , player )
) )
set_rule ( world . get_entrance ( " D01Z04S15[SW] " , player ) ,
lambda state : (
state . has ( " D01Z04S15[W] " , player )
or state . has ( " D01Z04S15[E] " , player )
or state . has ( " D01Z04S15[SE] " , player )
) )
set_rule ( world . get_entrance ( " D01Z04S15[SE] " , player ) ,
lambda state : (
state . has ( " D01Z04S15[W] " , player )
or state . has ( " D01Z04S15[E] " , player )
or state . has ( " D01Z04S15[SW] " , player )
) )
# D01Z04S16 (Mercy Dreams)
# Items
set_rule ( world . get_location ( " MD: Cave Child of Moonlight " , player ) ,
lambda state : (
state . has_any ( { " Purified Hand of the Nun " , " Cante Jondo of the Three Sisters " } , player )
or pillar ( state , player )
or tirana ( state , player )
) )
# No doors
# D01Z04S18 (Ten Piedad)
# Items
set_rule ( world . get_location ( " MD: Ten Piedad " , player ) ,
lambda state : can_beat_boss ( state , " Mercy " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D01Z04S18[W] " , player ) ,
lambda state : can_beat_boss ( state , " Mercy " , logic , player ) )
set_rule ( world . get_entrance ( " D01Z04S18[E] " , player ) ,
lambda state : can_beat_boss ( state , " Mercy " , logic , player ) )
# D01Z05S02 (Desecrated Cistern)
# No items
# Doors
set_rule ( world . get_entrance ( " D01Z05S02[S] " , player ) ,
lambda state : state . has ( " OpenedDCLadder " , player ) )
# D01Z05S05 (Desecrated Cistern)
# Items
set_rule ( world . get_location ( " DC: Hidden alcove near fountain " , player ) ,
lambda state : (
state . has ( " Dash Ability " , player )
and can_water_jump ( state , player )
) )
# No doors
# D01Z05S06 (Desecrated Cistern)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " DC: Upper east tunnel chest " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " D01Z05S06[Cherubs] " , player )
or can_water_jump ( state , player )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " DC: Upper east Child of Moonlight " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " D01Z05S06[Cherubs] " , player )
or can_water_jump ( state , player )
or pillar ( state , player )
or state . has ( " Cante Jondo of the Three Sisters " , player )
or aubade ( state , player )
or tirana ( state , player )
or can_air_stall ( state , logic , player )
) )
# No doors
# D01Z05S12 (Desecrated Cistern)
# Event
set_rule ( world . get_location ( " OpenedDCGateE " , player ) ,
lambda state : opened_dc_gate_e ( state , player ) )
# D01Z05S13 (Desecrated Cistern)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " DC: Child of Moonlight, behind pillar " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " D01Z05S13[SW] " , player )
or state . has ( " D01Z05S13[E] " , player )
and can_survive_poison ( state , logic , player , 3 )
and can_water_jump ( state , player )
) )
# Doors
set_rule ( world . get_entrance ( " D01Z05S13[SW] " , player ) ,
lambda state : state . has ( " D01Z05S13[E] " , player ) )
add_rule ( world . get_entrance ( " D01Z05S13[SW] " , player ) ,
lambda state : (
can_survive_poison ( state , logic , player , 3 )
and can_water_jump ( state , player )
) )
set_rule ( world . get_entrance ( " D01Z05S13[N] " , player ) ,
lambda state : state . has ( " D01Z05S13[E] " , player ) )
add_rule ( world . get_entrance ( " D01Z05S13[N] " , player ) ,
lambda state : (
can_survive_poison ( state , logic , player , 3 )
and can_water_jump ( state , player )
) )
# D01Z05S17 (Desecrated Cistern)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " DC: High ledge near elevator shaft " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " D01Z05S17[E] " , player )
or can_water_jump ( state , player )
or can_cross_gap ( state , logic , player , 5 )
) )
# Doors
set_rule ( world . get_entrance ( " D01Z05S17[E] " , player ) ,
lambda state : (
state . has ( " Dash Ability " , player ) and (
can_water_jump ( state , player )
or can_cross_gap ( state , logic , player , 5 )
)
) )
# D01Z05S20 (Desecrated Cistern)
# Event
set_rule ( world . get_location ( " OpenedDCLadder " , player ) ,
lambda state : opened_dc_ladder ( state , player ) )
# D01Z05S21 (Desecrated Cistern)
# No items
# Doors
set_rule ( world . get_entrance ( " D01Z05S21[Reward] " , player ) ,
lambda state : state . has ( " Shroud of Dreamt Sins " , player ) )
# D01Z05S23 (Desecrated Cistern)
# No items
# Doors
set_rule ( world . get_entrance ( " D01Z05S23[W] " , player ) ,
lambda state : (
chalice_rooms ( state , player , 3 )
and state . has ( " Chalice of Inverted Verses " , player )
) )
# D01Z05S24 (Desecrated Cistern)
# Event
set_rule ( world . get_location ( " OpenedDCGateW " , player ) ,
lambda state : opened_dc_gate_w ( state , player ) )
# D01Z05S25 (Desecrated Cistern)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " DC: Elevator shaft ledge " , player ) ,
2023-08-16 14:09:49 +00:00
lambda state : (
state . has ( " Linen of Golden Thread " , player )
or (
state . has ( " Purified Hand of the Nun " , player )
and state . has_any ( { " D01Z05S25[SW] " , " D01Z05S25[SE] " , " D01Z05S25[NE] " } , player )
)
) )
2023-07-06 04:39:26 +00:00
set_rule ( world . get_location ( " DC: Elevator shaft Child of Moonlight " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
2023-08-16 14:09:49 +00:00
or (
obscure_skips_allowed ( logic )
and state . has_any ( { " D01Z05S25[SW] " , " D01Z05S25[SE] " , " D01Z05S25[NE] " } , player )
and (
aubade ( state , player )
or state . has ( " Cantina of the Blue Rose " , player )
)
)
2023-07-06 04:39:26 +00:00
or (
pillar ( state , player )
and (
state . has ( " D01Z05S25[E] " , player )
or state . has ( " D01Z05S25[W] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 3 )
)
)
)
) )
# Doors
set_rule ( world . get_entrance ( " D01Z05S25[NE] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
or state . has ( " D01Z05S25[SW] " , player )
or state . has ( " D01Z05S25[SE] " , player )
) )
set_rule ( world . get_entrance ( " D01Z05S25[W] " , player ) ,
lambda state : (
(
state . has ( " Linen of Golden Thread " , player )
and (
can_walk_on_root ( state , player )
or state . has ( " Purified Hand of the Nun " , player )
or can_air_stall ( state , logic , player )
)
)
or (
state . has ( " D01Z05S25[E] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 3 )
)
)
) )
set_rule ( world . get_entrance ( " D01Z05S25[E] " , player ) ,
lambda state : (
can_break_tirana ( state , logic , player )
and (
state . has ( " Linen of Golden Thread " , player )
or state . has ( " D01Z05S25[W] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 3 )
)
)
) )
set_rule ( world . get_entrance ( " D01Z05S25[SW] " , player ) ,
lambda state : (
state . has ( " D01Z05S25[SE] " , player )
or state . has ( " D01Z05S25[NE] " , player )
or state . has ( " Linen of Golden Thread " , player )
) )
set_rule ( world . get_entrance ( " D01Z05S25[SE] " , player ) ,
lambda state : (
state . has ( " D01Z05S25[SW] " , player )
or state . has ( " D01Z05S25[NE] " , player )
or state . has ( " Linen of Golden Thread " , player )
) )
set_rule ( world . get_entrance ( " D01Z05S25[EchoesW] " , player ) ,
lambda state : state . has ( " D01Z05S25[EchoesE] " , player ) )
add_rule ( world . get_entrance ( " D01Z05S25[EchoesW] " , player ) ,
lambda state : (
2023-08-16 14:09:49 +00:00
state . has ( " D01Z05S25[EchoesE] " , player )
and (
state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 8 )
)
or state . has ( " Linen of Golden Thread " , player )
and (
can_cross_gap ( state , logic , player , 5 )
or can_air_stall ( state , logic , player )
and state . has ( " Blood Perpetuated in Sand " , player )
2023-07-06 04:39:26 +00:00
)
) )
set_rule ( world . get_entrance ( " D01Z05S25[EchoesE] " , player ) ,
lambda state : state . has ( " D01Z05S25[EchoesW] " , player ) )
add_rule ( world . get_entrance ( " D01Z05S25[EchoesE] " , player ) ,
lambda state : (
2023-08-16 14:09:49 +00:00
state . has ( " D01Z05S25[EchoesW] " , player )
and (
state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 8 )
)
or state . has ( " Linen of Golden Thread " , player )
and (
can_cross_gap ( state , logic , player , 5 )
or can_air_stall ( state , logic , player )
and state . has ( " Blood Perpetuated in Sand " , player )
2023-07-06 04:39:26 +00:00
)
) )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D01Z06S01 (Petrous)
# No items
# Doors
set_rule ( world . get_entrance ( " D01Z06S01[Santos] " , player ) ,
lambda state : state . has ( " Petrified Bell " , player ) )
# D02Z01S01 (Where Olive Trees Wither)
# Items
set_rule ( world . get_location ( " WOTW: Below Prie Dieu " , player ) ,
lambda state : (
state . has ( " D02Z01S01[W] " , player )
or state . has ( " D02Z01S01[CherubsL] " , player )
or state . has ( " D02Z01S01[SW] " , player )
or state . has ( " D02Z01S01[CherubsR] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_location ( " WOTW: Gemino ' s gift " , player ) ,
lambda state : (
state . has ( " D02Z01S01[W] " , player )
or state . has ( " D02Z01S01[CherubsL] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
or (
(
state . has ( " D02Z01S01[SW] " , player )
or state . has ( " D02Z01S01[CherubsR] " , player )
)
and can_dawn_jump ( state , logic , player )
)
) )
set_rule ( world . get_location ( " WOTW: Gemino ' s reward " , player ) ,
lambda state : (
state . has ( " Golden Thimble Filled with Burning Oil " , player )
and (
state . has ( " D02Z01S01[W] " , player )
or state . has ( " D02Z01S01[CherubsL] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
or (
(
state . has ( " D02Z01S01[SW] " , player )
or state . has ( " D02Z01S01[CherubsR] " , player )
)
and can_dawn_jump ( state , logic , player )
)
)
) )
# Doors
set_rule ( world . get_entrance ( " D02Z01S01[SW] " , player ) ,
lambda state : (
state . has ( " OpenedWOTWCave " , player )
and (
state . has ( " D02Z01S01[W] " , player )
or state . has ( " D02Z01S01[CherubsL] " , player )
or state . has ( " D02Z01S01[CherubsR] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
)
) )
set_rule ( world . get_entrance ( " D02Z01S01[W] " , player ) ,
lambda state : (
state . has ( " D02Z01S01[CherubsL] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
or (
(
state . has ( " D02Z01S01[SW] " , player )
or state . has ( " D02Z01S01[CherubsR] " , player )
)
and can_dawn_jump ( state , logic , player )
)
) )
# D02Z01S02 (Where Olive Trees Wither)
# Items
set_rule ( world . get_location ( " WOTW: Upper east Child of Moonlight " , player ) ,
lambda state : (
state . has ( " D02Z01S02[NE] " , player )
or (
state . has ( " D02Z01S02[NW] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
)
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 4 )
or pillar ( state , player )
)
) )
# Doors
set_rule ( world . get_entrance ( " D02Z01S02[NW] " , player ) ,
lambda state : (
state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
or (
state . has ( " D02Z01S02[NE] " , player )
and can_walk_on_root ( state , player )
and can_cross_gap ( state , logic , player , 5 )
)
) )
set_rule ( world . get_entrance ( " D02Z01S02[NE] " , player ) ,
lambda state : (
(
state . has ( " Purified Hand of the Nun " , player )
and can_enemy_bounce ( logic , enemy )
)
or (
state . has ( " D02Z01S02[NW] " , player )
or state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
)
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 10 )
)
) )
set_rule ( world . get_entrance ( " D02Z01S02[] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D02Z01S03 (Where Olive Trees Wither)
# No items
# Doors
set_rule ( world . get_entrance ( " D02Z01S03[W] " , player ) ,
lambda state : (
state . has ( " D02Z01S03[SE] " , player )
or state . has ( " D02Z01S03[Cherubs] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D02Z01S03[SE] " , player ) ,
lambda state : (
state . has ( " D02Z01S03[W] " , player )
or state . has ( " D02Z01S03[Cherubs] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
# D02Z01S04 (Where Olive Trees Wither)
# Items
set_rule ( world . get_location ( " WOTW: Gift for the tomb " , player ) ,
lambda state : (
state . has ( " Golden Thimble Filled with Burning Oil " , player )
and (
state . has ( " D02Z01S01[W] " , player )
or state . has ( " D02Z01S01[CherubsL] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
or (
(
state . has ( " D02Z01S01[SW] " , player )
or state . has ( " D02Z01S01[CherubsR] " , player )
)
and can_dawn_jump ( state , logic , player )
)
)
) )
# Doors
set_rule ( world . get_entrance ( " D02Z01S04[-N] " , player ) ,
lambda state : (
state . has ( " Golden Thimble Filled with Burning Oil " , player )
and (
state . has ( " D02Z01S01[W] " , player )
or state . has ( " D02Z01S01[CherubsL] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
or (
(
state . has ( " D02Z01S01[SW] " , player )
or state . has ( " D02Z01S01[CherubsR] " , player )
)
and can_dawn_jump ( state , logic , player )
)
)
) )
# D02Z01S06 (Where Olive Trees Wither)
# Items
set_rule ( world . get_location ( " WOTW: Underground ledge " , player ) ,
lambda state : (
2023-08-16 14:09:49 +00:00
state . has ( " Wall Climb Ability " , player )
2023-07-06 04:39:26 +00:00
and (
2023-08-16 14:09:49 +00:00
state . has ( " Purified Hand of the Nun " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
and (
state . has ( " Dash Ability " , player )
or state . has ( " D02Z01S06[Cherubs] " , player )
)
2023-07-06 04:39:26 +00:00
)
) )
set_rule ( world . get_location ( " WOTW: Underground Child of Moonlight " , player ) ,
lambda state : (
(
state . has ( " D02Z01S06[W] " , player )
or state . has ( " Dash Ability " , player )
2023-08-16 14:09:49 +00:00
or state . has ( " Purified Hand of the Nun " , player )
and state . has ( " Wall Climb Ability " , player )
2023-07-06 04:39:26 +00:00
)
and (
pillar ( state , player )
or state . has ( " Cante Jondo of the Three Sisters " , player )
2023-08-16 14:09:49 +00:00
or can_dive_laser ( state , logic , player )
2023-07-06 04:39:26 +00:00
)
or (
2023-08-16 14:09:49 +00:00
state . has ( " Wall Climb Ability " , player )
and (
state . has ( " D02Z01S06[W] " , player )
or state . has ( " Purified Hand of the Nun " , player )
or state . has ( " Dash Ability " , player )
)
2023-07-06 04:39:26 +00:00
)
and (
2023-08-16 14:09:49 +00:00
state . has ( " Lorquiana " , player )
2023-07-06 04:39:26 +00:00
or aubade ( state , player )
2023-08-16 14:09:49 +00:00
or state . has ( " Cantina of the Blue Rose " , player )
2023-07-06 04:39:26 +00:00
or can_air_stall ( state , logic , player )
)
) )
# Doors
set_rule ( world . get_entrance ( " D02Z01S06[W] " , player ) ,
lambda state : (
state . has ( " Dash Ability " , player )
or state . has_all ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D02Z01S06[E] " , player ) ,
lambda state : state . has ( " Wall Climb Ability " , player ) )
# Event
set_rule ( world . get_location ( " OpenedWOTWCave " , player ) ,
lambda state : opened_wotw_cave ( state , player ) )
# D02Z01S08 (Where Olive Trees Wither)
# Items
set_rule ( world . get_location ( " WOTW: Underground tomb " , player ) ,
lambda state : state . has ( " Dried Flowers bathed in Tears " , player ) )
# No doors
# D02Z01S09 (Where Olive Trees Wither)
# Items
set_rule ( world . get_location ( " WOTW: Upper east statue " , player ) ,
lambda state : (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 11 )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_bounce ( logic , enemy )
) )
# Doors
set_rule ( world . get_entrance ( " D02Z01S09[-CherubsL] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
set_rule ( world . get_entrance ( " D02Z01S09[-CherubsR] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 2 )
or can_enemy_bounce ( logic , enemy )
and can_air_stall ( state , logic , player )
)
) )
# D02Z02S01 (Graveyard of the Peaks)
# No items
# Doors
set_rule ( world . get_entrance ( " D02Z02S01[W] " , player ) ,
lambda state : (
state . has ( " D02Z02S01[NW] " , player )
or state . has ( " D02Z02S01[Cherubs] " , player )
or state . has ( " Dash Ability " , player )
) )
set_rule ( world . get_entrance ( " D02Z02S01[NW] " , player ) ,
lambda state : (
state . has ( " D02Z02S01[Cherubs] " , player )
or state . has ( " Wall Climb Ability " , player )
and (
state . has ( " D02Z02S01[W] " , player )
or state . has ( " Dash Ability " , player )
)
) )
set_rule ( world . get_entrance ( " D02Z02S01[E] " , player ) ,
lambda state : (
state . has ( " D02Z02S01[NW] " , player )
or state . has ( " D02Z02S01[Cherubs] " , player )
or state . has_any ( { " Wall Climb Ability " , " Dash Ability " } , player )
) )
# D02Z02S02 (Graveyard of the Peaks)
# Items
set_rule ( world . get_location ( " GotP: Center shaft Child of Moonlight " , player ) ,
lambda state : (
state . has ( " D02Z02S02[CherubsL] " , player )
or state . has ( " D02Z02S02[CherubsR] " , player )
or (
(
state . has ( " D02Z02S02[NW] " , player )
or state . has ( " D02Z02S02[NE] " , player )
or state . has ( " Wall Climb Ability " , player )
)
and (
state . has_any ( { " Purified Hand of the Nun " , " Cante Jondo of the Three Sisters " } , player )
or pillar ( state , player )
or tirana ( state , player )
or can_dive_laser ( state , logic , player )
)
)
) )
# Doors
set_rule ( world . get_entrance ( " D02Z02S02[NW] " , player ) ,
lambda state : (
state . has ( " D02Z02S02[NE] " , player )
or state . has ( " D02Z02S02[CherubsL] " , player )
or state . has ( " D02Z02S02[CherubsR] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D02Z02S02[NE] " , player ) ,
lambda state : (
state . has ( " D02Z02S02[NW] " , player )
or state . has ( " D02Z02S02[CherubsL] " , player )
or state . has ( " D02Z02S02[CherubsR] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D02Z02S02[-CherubsR] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D02Z02S03 (Graveyard of the Peaks)
# Items
set_rule ( world . get_location ( " GotP: Lower east shaft " , player ) ,
lambda state : (
state . has ( " D02Z02S03[NW] " , player )
or state . has ( " D02Z02S03[NE] " , player )
or state . has ( " Wall Climb Ability " , player )
or can_cross_gap ( state , logic , player , 2 )
) )
set_rule ( world . get_location ( " GotP: Center east shaft " , player ) ,
lambda state : (
state . has ( " D02Z02S03[NW] " , player )
or state . has ( " D02Z02S03[NE] " , player )
or state . has_any ( { " Wall Climb Ability " , " Purified Hand of the Nun " } , player )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GotP: Upper east shaft " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
2023-08-16 14:09:49 +00:00
can_climb_on_root ( state , player )
and (
state . has ( " D02Z02S03[NE] " , player )
or state . has ( " Purified Hand of the Nun " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
2023-07-06 04:39:26 +00:00
)
2023-08-16 14:09:49 +00:00
or state . has_all ( { " Blood Perpetuated in Sand " , " Purified Hand of the Nun " } , player )
2023-07-06 04:39:26 +00:00
) )
# Doors
set_rule ( world . get_entrance ( " D02Z02S03[NW] " , player ) ,
lambda state : (
state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
or state . has ( " D02Z02S03[NE] " , player )
and can_walk_on_root ( state , player )
) )
set_rule ( world . get_entrance ( " D02Z02S03[NE] " , player ) ,
lambda state : (
state . has ( " Wall Climb Ability " , player )
and (
can_cross_gap ( state , logic , player , 11 )
or (
state . has ( " Blood Perpetuated in Sand " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 7 )
)
)
or (
can_walk_on_root ( state , player )
and (
state . has ( " Purified Hand of the Nun " , player )
or can_air_stall ( state , logic , player )
)
)
)
) )
set_rule ( world . get_entrance ( " D02Z02S03[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D02Z02S04 (Graveyard of the Peaks)
# Items
set_rule ( world . get_location ( " GotP: Lower west shaft " , player ) ,
lambda state : state . has ( " D02Z02S04[E] " , player ) )
set_rule ( world . get_location ( " GotP: Upper west shaft " , player ) ,
lambda state :
(
state . has ( " D02Z02S04[NE] " , player )
or (
(
state . has ( " D02Z02S04[W] " , player )
or state . has ( " D02Z02S04[E] " , player )
and state . has ( " Dash Ability " , player )
)
and (
state . has ( " Purified Hand of the Nun " , player )
or state . has ( " Wall Climb Ability " , player )
)
)
or (
state . has ( " D02Z02S04[SE] " , player )
and (
state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_upslash ( state , logic , enemy , player )
)
)
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GotP: West shaft Child of Moonlight " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state :
(
(
state . has ( " D02Z02S04[NE] " , player )
or state . has ( " D02Z02S04[W] " , player )
or state . has ( " D02Z02S04[E] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D02Z02S04[SE] " , player )
and (
state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_upslash ( state , logic , enemy , player )
)
)
and (
state . has ( " Blood Perpetuated in Sand " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_bounce ( logic , enemy )
or state . has_any ( { " Lorquiana " , " Cante Jondo of the Three Sisters " , " Verdiales of the Forsaken Hamlet " , " Cantina of the Blue Rose " } , player )
or aubade ( state , player )
)
or (
state . has ( " D02Z02S04[NE] " , player )
or state . has ( " D02Z02S04[W] " , player )
or state . has ( " D02Z02S04[E] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D02Z02S04[SE] " , player )
)
and pillar ( state , player )
) )
# Doors
set_rule ( world . get_entrance ( " D02Z02S04[W] " , player ) ,
lambda state : (
state . has ( " D02Z02S04[NE] " , player )
or state . has ( " D02Z02S04[E] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D02Z02S04[SE] " , player )
and (
state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_upslash ( state , logic , enemy , player )
)
) )
set_rule ( world . get_entrance ( " D02Z02S04[SE] " , player ) ,
lambda state : (
state . has ( " D02Z02S04[NE] " , player )
or state . has ( " D02Z02S04[W] " , player )
or state . has ( " Dash Ability " , player )
) )
set_rule ( world . get_entrance ( " D02Z02S04[NE] " , player ) ,
lambda state : (
(
(
state . has ( " D02Z02S04[W] " , player )
or state . has ( " D02Z02S04[E] " , player )
and state . has ( " Dash Ability " , player )
)
and state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
)
or (
state . has ( " D02Z02S04[SE] " , player )
and (
state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_upslash ( state , logic , enemy , player )
)
)
) )
set_rule ( world . get_entrance ( " D02Z02S04[-CherubsL] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D02Z02S04[NE] " , player )
or state . has ( " D02Z02S04[W] " , player )
or state . has ( " D02Z02S04[SE] " , player )
or state . has ( " Dash Ability " , player )
)
) )
# D02Z02S05 (Graveyard of the Peaks)
# Items
set_rule ( world . get_location ( " GotP: Center shaft ledge " , player ) ,
lambda state : (
state . has ( " D02Z02S05[NW] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
# Doors
set_rule ( world . get_entrance ( " D02Z02S05[W] " , player ) ,
lambda state : (
state . has ( " Purified Hand of the Nun " , player )
and can_enemy_bounce ( logic , enemy )
) )
set_rule ( world . get_entrance ( " D02Z02S05[E] " , player ) ,
lambda state : (
state . has ( " D02Z02S05[NW] " , player )
or state . has ( " D02Z02S05[E] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D02Z02S05[NW] " , player ) ,
lambda state : (
state . has ( " D02Z02S05[NW] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D02Z02S05[-CherubsL] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
set_rule ( world . get_entrance ( " D02Z02S05[-CherubsR] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D02Z02S08 (Graveyard of the Peaks)
# Items
set_rule ( world . get_location ( " GotP: Shop cave hidden hole " , player ) ,
lambda state : (
state . has ( " D02Z02S08[CherubsR] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
or can_break_holes ( state , player )
or can_cross_gap ( state , logic , player , 8 )
) )
set_rule ( world . get_location ( " GotP: Shop cave Child of Moonlight " , player ) ,
lambda state : (
state . has ( " D02Z02S08[CherubsR] " , player )
2023-08-16 14:09:49 +00:00
or can_dive_laser ( state , logic , player )
2023-07-06 04:39:26 +00:00
or state . has ( " Blood Perpetuated in Sand " , player )
or pillar ( state , player )
or can_cross_gap ( state , logic , player , 8 )
) )
# No doors
# D02Z02S11 (Graveyard of the Peaks)
# No items
# Doors
set_rule ( world . get_entrance ( " D02Z02S11[E] " , player ) ,
lambda state : (
state . has ( " D02Z02S11[NW] " , player )
or state . has ( " D02Z02S11[NE] " , player )
or can_cross_gap ( state , logic , player , 6 )
) )
set_rule ( world . get_entrance ( " D02Z02S11[NW] " , player ) ,
lambda state : state . has ( " D02Z02S11[NE] " , player ) )
set_rule ( world . get_entrance ( " D02Z02S11[NE] " , player ) ,
lambda state : state . has ( " D02Z02S11[NW] " , player ) )
set_rule ( world . get_entrance ( " D02Z02S11[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D02Z02S14 (Graveyard of the Peaks)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GotP: Amanecida of the Bejeweled Arrow " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : can_beat_boss ( state , " Graveyard " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D02Z02S14[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D02Z03S02 (Convent of Our Lady of the Charred Visage)
# No items
# Doors
set_rule ( world . get_entrance ( " D02Z03S02[W] " , player ) ,
lambda state : (
state . has ( " D02Z03S02[NW] " , player )
or state . has ( " D02Z03S02[NE] " , player )
or state . has ( " D02Z03S02[N] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D02Z03S02[NW] " , player ) ,
lambda state : (
state . has ( " D02Z03S02[NE] " , player )
or state . has ( " D02Z03S02[N] " , player )
) )
set_rule ( world . get_entrance ( " D02Z03S02[NE] " , player ) ,
lambda state : (
state . has ( " D02Z03S02[NW] " , player )
or state . has ( " D02Z03S02[N] " , player )
) )
set_rule ( world . get_entrance ( " D02Z03S02[N] " , player ) ,
lambda state : (
state . has ( " D02Z03S02[NW] " , player )
or state . has ( " D02Z03S02[NE] " , player )
) )
add_rule ( world . get_entrance ( " D02Z03S02[N] " , player ) ,
lambda state : state . has ( " OpenedConventLadder " , player ) )
# D02Z03S03 (Convent of Our Lady of the Charred Visage)
# Items
set_rule ( world . get_location ( " CoOLotCV: Snowy window ledge " , player ) ,
lambda state : (
state . has ( " D02Z03S03[NW] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 3 )
) )
# Doors
set_rule ( world . get_entrance ( " D02Z03S03[NW] " , player ) ,
lambda state : (
state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 3 )
) )
# D02Z03S05 (Convent of Our Lady of the Charred Visage)
# Items
set_rule ( world . get_location ( " CoOLotCV: Center miasma room " , player ) ,
lambda state : (
state . has ( " Dash Ability " , player )
and (
state . has ( " D02Z03S05[S] " , player )
or state . has ( " D02Z03S05[NE] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
)
) )
# Doors
set_rule ( world . get_entrance ( " D02Z03S05[S] " , player ) ,
lambda state : (
state . has ( " D02Z03S05[NE] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D02Z03S05[NE] " , player ) ,
lambda state : (
state . has ( " D02Z03S05[S] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
# D02Z03S10 (Convent of Our Lady of the Charred Visage)
# No items
# Doors
set_rule ( world . get_entrance ( " D02Z03S10[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D02Z03S11 (Convent of Our Lady of the Charred Visage)
# Event
set_rule ( world . get_location ( " OpenedConventLadder " , player ) ,
lambda state : opened_convent_ladder ( state , player ) )
# D02Z03S12 (Convent of Our Lady of the Charred Visage)
# Items
set_rule ( world . get_location ( " CoOLotCV: Lower west statue " , player ) ,
lambda state : (
can_survive_poison ( state , logic , player , 1 )
and state . has ( " Dash Ability " , player )
) )
# No doors
# D02Z03S18 (Convent of Our Lady of the Charred Visage)
# No items
# Doors
set_rule ( world . get_entrance ( " D02Z03S18[NW] " , player ) ,
lambda state : (
state . has ( " D02Z03S18[NE] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D02Z03S18[NE] " , player ) ,
lambda state : (
state . has ( " D02Z03S18[NW] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
# D02Z03S20 (Convent of Our Lady of the Charred Visage)
# Items
set_rule ( world . get_location ( " CoOLotCV: Our Lady of the Charred Visage " , player ) ,
lambda state : can_beat_boss ( state , " Convent " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D02Z03S20[W] " , player ) ,
lambda state : can_beat_boss ( state , " Convent " , logic , player ) )
set_rule ( world . get_entrance ( " D02Z03S20[E] " , player ) ,
lambda state : can_beat_boss ( state , " Convent " , logic , player ) )
# D02Z03S21 (Convent of Our Lady of the Charred Visage)
# Items
set_rule ( world . get_location ( " CoOLotCV: Fountain of burning oil " , player ) ,
lambda state : state . has ( " Empty Golden Thimble " , player ) )
# No doors
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D03Z01S01 (Mountains of the Endless Dusk)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z01S01[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D03Z01S02 (Mountains of the Endless Dusk)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z01S02[W] " , player ) ,
lambda state : (
state . has ( " Wall Climb Ability " , player )
or can_cross_gap ( state , logic , player , 3 )
) )
set_rule ( world . get_entrance ( " D03Z01S02[E] " , player ) ,
lambda state : (
state . has ( " Wall Climb Ability " , player )
or can_cross_gap ( state , logic , player , 7 )
) )
# D03Z01S03 (Mountains of the Endless Dusk)
# Items
set_rule ( world . get_location ( " MotED: Platform above chasm " , player ) ,
lambda state : (
state . has_any ( { " Blood Perpetuated in Sand " , " Purified Hand of the Nun " } , player )
and (
state . has ( " D03Z01S03[W] " , player )
or state . has ( " D03Z01S03[SW] " , player )
or can_cross_gap ( state , logic , player , 9 )
)
) )
set_rule ( world . get_location ( " MotED: 1st meeting with Redento " , player ) ,
lambda state : (
state . has ( " D03Z01S03[W] " , player )
or state . has ( " D03Z01S03[SW] " , player )
or can_cross_gap ( state , logic , player , 9 )
) )
set_rule ( world . get_location ( " MotED: Child of Moonlight, above chasm " , player ) ,
lambda state : (
state . has ( " D03Z01S03[W] " , player )
or state . has ( " D03Z01S03[SW] " , player )
or can_cross_gap ( state , logic , player , 9 )
) )
set_rule ( world . get_location ( " MotED: Amanecida of the Golden Blades " , player ) ,
lambda state : (
can_beat_boss ( state , " Jondo " , logic , player )
and (
state . has ( " D03Z01S03[W] " , player )
or state . has ( " D03Z01S03[SW] " , player )
or can_cross_gap ( state , logic , player , 9 )
)
) )
# Doors
set_rule ( world . get_entrance ( " D03Z01S03[W] " , player ) ,
lambda state : (
state . has ( " Wall Climb Ability " , player )
and (
state . has ( " D03Z01S03[SW] " , player )
or can_cross_gap ( state , logic , player , 9 )
)
) )
set_rule ( world . get_entrance ( " D03Z01S03[E] " , player ) ,
lambda state : state . has ( " Wall Climb Ability " , player ) )
set_rule ( world . get_entrance ( " D03Z01S03[SW] " , player ) ,
lambda state : (
state . has ( " D03Z01S03[W] " , player )
or can_cross_gap ( state , logic , player , 9 )
) )
set_rule ( world . get_entrance ( " D03Z01S03[-WestL] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D03Z01S03[W] " , player )
or state . has ( " D03Z01S03[SW] " , player )
or can_cross_gap ( state , logic , player , 9 )
)
) )
set_rule ( world . get_entrance ( " D03Z01S03[-WestR] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D03Z01S03[W] " , player )
or state . has ( " D03Z01S03[SW] " , player )
or can_cross_gap ( state , logic , player , 9 )
)
) )
set_rule ( world . get_entrance ( " D03Z01S03[-EastL] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D03Z01S03[W] " , player )
or state . has ( " D03Z01S03[SW] " , player )
or can_cross_gap ( state , logic , player , 5 )
)
) )
set_rule ( world . get_entrance ( " D03Z01S03[-EastR] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D03Z01S04 (Mountains of the Endless Dusk)
# Items
set_rule ( world . get_location ( " MotED: Blood platform alcove " , player ) ,
lambda state : (
state . has_any ( { " Blood Perpetuated in Sand " , " Purified Hand of the Nun " } , player )
or upwarp_skips_allowed ( logic )
) )
# No doors
# D03Z01S06 (Mountains of the Endless Dusk)
# Items
set_rule ( world . get_location ( " MotED: Perpetva " , player ) ,
lambda state : can_beat_boss ( state , " Perpetua " , logic , player ) )
set_rule ( world . get_location ( " MotED: Egg hatching " , player ) ,
lambda state : can_beat_boss ( state , " Perpetua " , logic , player ) and \
state . has ( " Egg of Deformity " , player ) )
# Doors
set_rule ( world . get_entrance ( " D03Z01S06[W] " , player ) ,
lambda state : can_beat_boss ( state , " Perpetua " , logic , player ) )
set_rule ( world . get_entrance ( " D03Z01S06[E] " , player ) ,
lambda state : can_beat_boss ( state , " Perpetua " , logic , player ) )
# D03Z02S01 (Jondo)
# Items
set_rule ( world . get_location ( " Jondo: Upper east chest " , player ) ,
lambda state : (
state . has ( " D03Z02S01[Cherubs] " , player )
or can_climb_on_root ( state , player )
or can_cross_gap ( state , logic , player , 8 )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_bounce ( logic , enemy )
) )
# Doors
set_rule ( world . get_entrance ( " D03Z02S01[W] " , player ) ,
lambda state : (
state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_bounce ( logic , enemy )
) )
set_rule ( world . get_entrance ( " D03Z02S01[N] " , player ) ,
lambda state : (
state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
) )
# D03Z02S02 (Jondo)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z02S02[W] " , player ) ,
lambda state : (
state . has ( " D03Z02S02[CherubsL] " , player )
or state . has ( " Purified Hand of the Nun " , player )
and (
state . has ( " D03Z02S02[E] " , player )
or state . has ( " D03Z02S02[CherubsR] " , player )
or state . has ( " Wall Climb Ability " , player )
or can_enemy_bounce ( logic , enemy )
)
) )
set_rule ( world . get_entrance ( " D03Z02S02[E] " , player ) ,
lambda state : (
state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_bounce ( logic , enemy )
) )
# D03Z02S03 (Jondo)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z02S03[W] " , player ) ,
lambda state : (
state . has ( " Dash Ability " , player )
and (
state . has ( " D03Z02S03[E] " , player )
or state . has ( " D03Z02S03[N] " , player )
or state . has ( " D03Z02S03[SE2] " , player )
)
) )
set_rule ( world . get_entrance ( " D03Z02S03[E] " , player ) ,
lambda state : (
(
can_air_stall ( state , logic , player )
or state . has_any ( { " Purified Hand of the Nun " , " Boots of Pleading " } , player )
)
and (
state . has ( " Dash Ability " , player )
or state . has ( " D03Z02S03[N] " , player )
or state . has ( " D03Z02S03[SE2] " , player )
)
) )
set_rule ( world . get_entrance ( " D03Z02S03[N] " , player ) ,
lambda state : (
state . has ( " D03Z02S03[W] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D03Z02S03[E] " , player )
or state . has ( " D03Z02S03[SE2] " , player )
) )
set_rule ( world . get_entrance ( " D03Z02S03[SE2] " , player ) ,
lambda state : (
state . has ( " D03Z02S03[W] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D03Z02S03[E] " , player )
or state . has ( " D03Z02S03[N] " , player )
) )
set_rule ( world . get_entrance ( " D03Z02S03[SW] " , player ) ,
lambda state : (
state . has ( " D03Z02S03[SE] " , player )
or state . has ( " D03Z02S03[SSL] " , player )
or state . has ( " D03Z02S03[SSR] " , player )
or state . has ( " BrokeJondoBellW " , player )
and state . has ( " BrokeJondoBellE " , player )
and (
state . has ( " D03Z02S03[W] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D03Z02S03[E] " , player )
or state . has ( " D03Z02S03[N] " , player )
or state . has ( " D03Z02S03[SE2] " , player )
)
) )
set_rule ( world . get_entrance ( " D03Z02S03[SE] " , player ) ,
lambda state : (
state . has ( " D03Z02S03[SW] " , player )
or state . has ( " D03Z02S03[SSL] " , player )
or state . has ( " D03Z02S03[SSR] " , player )
or state . has ( " BrokeJondoBellW " , player )
and state . has ( " BrokeJondoBellE " , player )
and (
state . has ( " D03Z02S03[W] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D03Z02S03[E] " , player )
or state . has ( " D03Z02S03[N] " , player )
or state . has ( " D03Z02S03[SE2] " , player )
)
) )
set_rule ( world . get_entrance ( " D03Z02S03[SSL] " , player ) ,
lambda state : (
state . has ( " D03Z02S03[SW] " , player )
or state . has ( " D03Z02S03[SE] " , player )
or state . has ( " D03Z02S03[SSR] " , player )
or state . has ( " BrokeJondoBellW " , player )
and state . has ( " BrokeJondoBellE " , player )
and (
state . has ( " D03Z02S03[W] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D03Z02S03[E] " , player )
or state . has ( " D03Z02S03[N] " , player )
or state . has ( " D03Z02S03[SE2] " , player )
)
) )
set_rule ( world . get_entrance ( " D03Z02S03[SSC] " , player ) ,
lambda state : (
state . has ( " D03Z02S03[SW] " , player )
or state . has ( " D03Z02S03[SE] " , player )
or state . has ( " D03Z02S03[SSL] " , player )
or state . has ( " D03Z02S03[SSR] " , player )
or state . has ( " BrokeJondoBellW " , player )
and state . has ( " BrokeJondoBellE " , player )
and (
state . has ( " D03Z02S03[W] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D03Z02S03[E] " , player )
or state . has ( " D03Z02S03[N] " , player )
or state . has ( " D03Z02S03[SE2] " , player )
)
) )
set_rule ( world . get_entrance ( " D03Z02S03[SSR] " , player ) ,
lambda state : (
state . has ( " D03Z02S03[SW] " , player )
or state . has ( " D03Z02S03[SE] " , player )
or state . has ( " D03Z02S03[SSL] " , player )
or state . has ( " BrokeJondoBellW " , player )
and state . has ( " BrokeJondoBellE " , player )
and (
state . has ( " D03Z02S03[W] " , player )
and state . has ( " Dash Ability " , player )
or state . has ( " D03Z02S03[E] " , player )
or state . has ( " D03Z02S03[N] " , player )
or state . has ( " D03Z02S03[SE2] " , player )
)
) )
# D03Z02S04 (Jondo)
# Items
set_rule ( world . get_location ( " Jondo: Lower east under chargers " , player ) ,
lambda state : (
state . has ( " D03Z02S04[NE] " , player )
or state . has ( " D03Z02S04[S] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
# Doors
set_rule ( world . get_entrance ( " D03Z02S04[NW] " , player ) ,
lambda state : state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player ) )
set_rule ( world . get_entrance ( " D03Z02S04[NE] " , player ) ,
lambda state : (
state . has ( " Wall Climb Ability " , player )
or (
state . has ( " D03Z02S04[S] " , player )
and state . has ( " Purified Hand of the Nun " , player )
)
) )
set_rule ( world . get_entrance ( " D03Z02S04[S] " , player ) ,
lambda state : (
state . has ( " D03Z02S04[NE] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
# D03Z02S05 (Jondo)
# Items
set_rule ( world . get_location ( " Jondo: Upper east Child of Moonlight " , player ) ,
lambda state : (
state . has ( " D03Z02S05[E] " , player )
or state . has ( " D03Z02S05[S] " , player )
or can_cross_gap ( state , logic , player , 5 )
or (
can_enemy_bounce ( logic , enemy )
and can_cross_gap ( state , logic , player , 3 )
)
) )
# Doors
set_rule ( world . get_entrance ( " D03Z02S05[E] " , player ) ,
lambda state : (
state . has ( " D03Z02S05[S] " , player )
or can_cross_gap ( state , logic , player , 5 )
or (
can_enemy_bounce ( logic , enemy )
and can_cross_gap ( state , logic , player , 3 )
)
) )
set_rule ( world . get_entrance ( " D03Z02S05[S] " , player ) ,
lambda state : (
state . has ( " D03Z02S05[E] " , player )
or can_cross_gap ( state , logic , player , 5 )
or (
can_enemy_bounce ( logic , enemy )
and can_cross_gap ( state , logic , player , 3 )
)
) )
# Event
set_rule ( world . get_location ( " BrokeJondoBellE " , player ) ,
lambda state : broke_jondo_bell_e ( state , logic , enemy , player ) )
# D03Z02S08 (Jondo)
# Items
set_rule ( world . get_location ( " Jondo: Lower west bell alcove " , player ) ,
lambda state : (
state . has ( " D03Z02S08[N] " , player )
or state . has ( " D03Z02S08[W] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
# Doors
set_rule ( world . get_entrance ( " D03Z02S08[W] " , player ) ,
lambda state : (
state . has ( " D03Z02S08[N] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D03Z02S08[N] " , player ) ,
lambda state : (
state . has ( " D03Z02S08[W] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
# D03Z02S09 (Jondo)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z02S09[W] " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
set_rule ( world . get_entrance ( " D03Z02S09[N] " , player ) ,
lambda state : (
state . has ( " D03Z02S09[S] " , player )
or state . has ( " D03Z02S09[Cherubs] " , player )
or state . has ( " Dash Ability " , player )
) )
set_rule ( world . get_entrance ( " D03Z02S09[S] " , player ) ,
lambda state : (
state . has ( " D03Z02S09[N] " , player )
or state . has ( " D03Z02S09[Cherubs] " , player )
or state . has ( " Dash Ability " , player )
) )
# Event
set_rule ( world . get_location ( " BrokeJondoBellW " , player ) ,
lambda state : broke_jondo_bell_w ( state , player ) )
# D03Z02S10 (Jondo)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z02S10[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D03Z02S11 (Jondo)
# Items
set_rule ( world . get_location ( " Jondo: Spike tunnel statue " , player ) ,
lambda state : (
2023-08-16 14:09:49 +00:00
state . has ( " D03Z02S11[W] " , player )
and state . has ( " Purified Hand of the Nun " , player )
or state . has ( " D03Z02S11[E] " , player )
and state . has ( " Dash Ability " , player )
2023-07-06 04:39:26 +00:00
and (
2023-08-16 14:09:49 +00:00
state . has ( " Wall Climb Ability " , player )
or can_cross_gap ( state , logic , player , 2 )
or precise_skips_allowed ( logic )
and can_cross_gap ( state , logic , player , 1 )
2023-07-06 04:39:26 +00:00
)
) )
set_rule ( world . get_location ( " Jondo: Spike tunnel Child of Moonlight " , player ) ,
lambda state : (
2023-08-16 14:09:49 +00:00
state . has ( " D03Z02S11[W] " , player )
2023-07-06 04:39:26 +00:00
and (
2023-08-16 14:09:49 +00:00
state . has ( " Purified Hand of the Nun " , player )
or state . has ( " Dash Ability " , player )
2023-07-06 04:39:26 +00:00
and (
2023-08-16 14:09:49 +00:00
state . has ( " Wall Climb Ability " , player )
or can_cross_gap ( state , logic , player , 2 )
2023-07-06 04:39:26 +00:00
and can_enemy_bounce ( logic , enemy )
or can_cross_gap ( state , logic , player , 3 )
)
2023-08-16 14:09:49 +00:00
)
or state . has ( " D03Z02S11[E] " , player )
and state . has ( " Dash Ability " , player )
and (
can_cross_gap ( state , logic , player , 1 )
or state . has ( " Wall Climb Ability " , player )
or can_enemy_bounce ( logic , enemy )
2023-07-06 04:39:26 +00:00
)
) )
# Doors
set_rule ( world . get_entrance ( " D03Z02S11[W] " , player ) ,
lambda state : (
state . has ( " Dash Ability " , player )
and (
2023-08-16 14:09:49 +00:00
state . has ( " Wall Climb Ability " , player )
2023-07-06 04:39:26 +00:00
or can_cross_gap ( state , logic , player , 2 )
2023-08-16 14:09:49 +00:00
or precise_skips_allowed ( logic )
and can_cross_gap ( state , logic , player , 1 )
2023-07-06 04:39:26 +00:00
)
) )
set_rule ( world . get_entrance ( " D03Z02S11[E] " , player ) ,
lambda state : (
state . has ( " Dash Ability " , player )
2023-08-16 14:09:49 +00:00
and (
state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
or can_cross_gap ( state , logic , player , 2 )
and can_enemy_bounce ( logic , enemy )
)
2023-07-06 04:39:26 +00:00
) )
# D03Z02S13 (Jondo)
# Items
set_rule ( world . get_location ( " Jondo: Upper west tree root " , player ) ,
lambda state : (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 3 )
) )
# Doors
set_rule ( world . get_entrance ( " D03Z02S13[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D03Z03S01 (Grievance Ascends)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z03S01[NL] " , player ) ,
lambda state : (
state . has ( " D03Z03S01[NR] " , player )
or state . has ( " D03Z03S01[NC] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D03Z03S01[NR] " , player ) ,
lambda state : (
state . has ( " D03Z03S01[NL] " , player )
or state . has ( " D03Z03S01[NC] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
# D03Z03S02 (Grievance Ascends)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GA: Lower west ledge " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : can_survive_poison ( state , logic , player , 1 ) )
# Doors
set_rule ( world . get_entrance ( " D03Z03S02[W] " , player ) ,
lambda state : (
state . has ( " D03Z03S02[NE] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D03Z03S02[NE] " , player ) ,
lambda state : state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player ) )
# D03Z03S03 (Grievance Ascends)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z03S03[W] " , player ) ,
lambda state : state . has ( " D03Z03S03[NE] " , player ) )
set_rule ( world . get_entrance ( " D03Z03S03[NE] " , player ) ,
lambda state : state . has ( " D03Z03S03[W] " , player ) )
# D03Z03S04 (Grievance Ascends)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z03S04[NW] " , player ) ,
lambda state : (
state . has ( " D03Z03S04[NE] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
and (
state . has ( " D03Z03S04[E] " , player )
or state . has ( " D03Z03S04[SW] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 10 )
)
) )
set_rule ( world . get_entrance ( " D03Z03S04[NE] " , player ) ,
lambda state : (
2023-08-16 14:09:49 +00:00
(
state . has ( " Wall Climb Ability " , player )
or state . has ( " Purified Hand of the Nun " , player )
and can_enemy_bounce ( logic , enemy )
)
2023-07-06 04:39:26 +00:00
and (
state . has ( " D03Z03S04[NW] " , player )
or state . has ( " D03Z03S04[E] " , player )
or state . has ( " D03Z03S04[SW] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 10 )
)
) )
set_rule ( world . get_entrance ( " D03Z03S04[E] " , player ) ,
lambda state : (
state . has ( " D03Z03S04[NW] " , player )
or state . has ( " D03Z03S04[NE] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
and (
state . has ( " D03Z03S04[SW] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 10 )
)
) )
set_rule ( world . get_entrance ( " D03Z03S04[SW] " , player ) ,
lambda state : (
state . has ( " D03Z03S04[NW] " , player )
or state . has ( " D03Z03S04[NE] " , player )
or state . has ( " D03Z03S04[E] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 10 )
) )
set_rule ( world . get_entrance ( " D03Z03S04[SE] " , player ) ,
lambda state : state . has ( " Blood Perpetuated in Sand " , player ) )
set_rule ( world . get_entrance ( " D03Z03S04[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D03Z03S05 (Grievance Ascends)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z03S05[NW] " , player ) ,
lambda state : state . has ( " D03Z03S05[NE] " , player ) )
set_rule ( world . get_entrance ( " D03Z03S05[NE] " , player ) ,
lambda state : state . has ( " D03Z03S05[NW] " , player ) )
set_rule ( world . get_entrance ( " D03Z03S05[SW] " , player ) ,
lambda state : state . has ( " D03Z03S05[SE] " , player ) or \
state . has ( " Linen of Golden Thread " , player ) )
set_rule ( world . get_entrance ( " D03Z03S05[SE] " , player ) ,
lambda state : state . has ( " D03Z03S05[SW] " , player ) or \
state . has ( " Linen of Golden Thread " , player ) )
# D03Z03S06 (Grievance Ascends)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GA: Miasma room floor " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : can_survive_poison ( state , logic , player , 1 ) )
set_rule ( world . get_location ( " GA: Miasma room treasure " , player ) ,
lambda state : state . has ( " Wall Climb Ability " , player ) )
set_rule ( world . get_location ( " GA: Miasma room Child of Moonlight " , player ) ,
2023-08-16 14:09:49 +00:00
lambda state : (
state . has ( " Wall Climb Ability " , player )
or can_cross_gap ( state , logic , player , 11 )
and state . has ( " Taranto to my Sister " , player )
and obscure_skips_allowed ( logic )
) )
2023-07-06 04:39:26 +00:00
# No doors
# D03Z03S07 (Grievance Ascends)
# No items
# Doors
set_rule ( world . get_entrance ( " D03Z03S07[NW] " , player ) ,
lambda state : (
state . has ( " D03Z03S07[NE] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D03Z03S07[NE] " , player ) ,
lambda state : (
state . has ( " D03Z03S07[NE] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
# D03Z03S08 (Grievance Ascends)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GA: End of blood bridge " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 11 )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GA: Blood bridge Child of Moonlight " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
(
state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 11 )
)
and (
state . has_any ( { " Purified Hand of the Nun " , " Cante Jondo of the Three Sisters " , " Verdiales of the Forsaken Hamlet " } , player )
or pillar ( state , player )
or tirana ( state , player )
or aubade ( state , player )
and can_air_stall ( state , logic , player )
)
) )
# Doors
set_rule ( world . get_entrance ( " D03Z03S08[-CherubsL] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
set_rule ( world . get_entrance ( " D03Z03S08[-CherubsR] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D03Z03S09 (Grievance Ascends)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GA: Lower east Child of Moonlight " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
can_climb_on_root ( state , player )
or state . has_any ( { " Purified Hand of the Nun " , " Lorquiana " , " Zarabanda of the Safe Haven " , " Cante Jondo of the Three Sisters " } , player )
or pillar ( state , player )
or aubade ( state , player )
or tirana ( state , player )
) )
# No doors
# D03Z03S10 (Grievance Ascends)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GA: Altasgracias ' gift " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_group ( " egg " , player , 3 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " GA: Empty giant egg " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has_group ( " egg " , player , 3 )
and state . has ( " Hatched Egg of Deformity " , player )
and (
state . has ( " D01Z02S01[W] " , player )
or state . has ( " D01Z02S01[E] " , player )
)
) )
# No doors
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D03Z03S15 (Grievance Ascends)
# Items
set_rule ( world . get_location ( " GA: Tres Angustias " , player ) ,
lambda state : can_beat_boss ( state , " Grievance " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D03Z03S15[W] " , player ) ,
lambda state : can_beat_boss ( state , " Grievance " , logic , player ) )
set_rule ( world . get_entrance ( " D03Z03S15[E] " , player ) ,
lambda state : can_beat_boss ( state , " Grievance " , logic , player ) )
# D04Z01S01 (Patio of the Silent Steps)
# Items
set_rule ( world . get_location ( " PotSS: First area ledge " , player ) ,
lambda state : (
state . has ( " D04Z01S01[NE] " , player )
or state . has ( " D04Z01S01[N] " , player )
or can_cross_gap ( state , logic , player , 3 )
) )
# Doors
set_rule ( world . get_entrance ( " D04Z01S01[NE] " , player ) ,
lambda state : (
state . has ( " D04Z01S01[N] " , player )
or can_cross_gap ( state , logic , player , 3 )
) )
set_rule ( world . get_entrance ( " D04Z01S01[N] " , player ) ,
lambda state : (
state . has ( " D04Z01S01[NE] " , player )
or can_cross_gap ( state , logic , player , 3 )
) )
# D04Z01S02 (Patio of the Silent Steps)
# Items
set_rule ( world . get_location ( " PotSS: Second area ledge " , player ) ,
lambda state : (
can_climb_on_root ( state , player )
or can_cross_gap ( state , logic , player , 3 )
) )
# No doors
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D04Z01S03 (Patio of the Silent Steps)
# Items
set_rule ( world . get_location ( " PotSS: Third area upper ledge " , player ) ,
lambda state : (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 3 )
) )
# No doors
# D04Z01S04 (Patio of the Silent Steps)
# Items
set_rule ( world . get_location ( " PotSS: 4th meeting with Redento " , player ) ,
lambda state : redento ( state , blasphemousworld , player , 4 ) )
2023-09-10 21:24:33 +00:00
set_rule ( world . get_location ( " PotSS: Amanecida of the Chiselled Steel " , player ) ,
lambda state : can_beat_boss ( state , " Patio " , logic , player ) )
2023-07-06 04:39:26 +00:00
# No doors
# D04Z01S05 (Patio of the Silent Steps)
# No items
# Doors
set_rule ( world . get_entrance ( " D04Z01S05[N] " , player ) ,
lambda state : (
(
state . has ( " Blood Perpetuated in Sand " , player )
and can_climb_on_root ( state , player )
)
or state . has ( " Purified Hand of the Nun " , player )
and (
state . has ( " Blood Perpetuated in Sand " , player )
or can_climb_on_root ( state , player )
)
) )
set_rule ( world . get_entrance ( " D04Z01S05[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D04Z01S06 (Patio of the Silent Steps)
# No items
# Doors
set_rule ( world . get_entrance ( " D04Z01S06[E] " , player ) ,
lambda state : state . has ( " Purified Hand of the Nun " , player ) )
set_rule ( world . get_entrance ( " D04Z01S06[Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D04Z02S01 (Mother of Mothers)
# Items
if world . purified_hand [ player ] :
set_rule ( world . get_location ( " MoM: Western room ledge " , player ) ,
lambda state : (
state . has ( " D04Z02S01[N] " , player )
or state . has ( " D04Z02S01[NE] " , player )
and state . has ( " Dash Ability " , player )
and state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_location ( " MoM: Lower west Child of Moonlight " , player ) ,
lambda state : (
state . has ( " D04Z02S01[N] " , player )
or pillar ( state , player )
or state . has ( " D04Z02S01[NE] " , player )
and state . has ( " Dash Ability " , player )
and (
state . has ( " Wall Climb Ability " , player )
or can_cross_gap ( state , logic , player , 1 )
)
) )
# Doors
set_rule ( world . get_entrance ( " D04Z02S01[N] " , player ) ,
lambda state : (
state . has ( " D04Z02S04[NE] " , player )
and state . has ( " Dash Ability " , player )
and state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D04Z02S01[NE] " , player ) ,
lambda state : (
state . has ( " D04Z02S01[N] " , player )
or state . has ( " Dash Ability " , player )
and can_cross_gap ( state , logic , player , 1 )
) )
# D04Z02S02 (Mother of Mothers)
# No items
# Doors
set_rule ( world . get_entrance ( " D04Z02S02[NE] " , player ) ,
lambda state : (
(
state . has ( " Purified Hand of the Nun " , player )
and upwarp_skips_allowed ( logic )
)
or (
state . has ( " Purified Hand of the Nun " , player )
and can_enemy_upslash ( state , logic , enemy , player )
)
or (
can_enemy_upslash ( state , logic , enemy , player )
and upwarp_skips_allowed ( logic )
and (
state . has ( " Wall Climb Ability " , player )
or state . has ( " D04Z02S02[N] " , player )
)
)
) )
set_rule ( world . get_entrance ( " D04Z02S02[N] " , player ) ,
lambda state : (
state . has ( " D04Z02S02[NE] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
# D04Z02S04 (Mother of Mothers)
# No items
# Doors
set_rule ( world . get_entrance ( " D04Z02S04[NW] " , player ) ,
lambda state : (
state . has ( " D04Z02S04[NE] " , player )
or state . has ( " D04Z02S04[N] " , player )
or state . has ( " D04Z02S04[Cherubs] " , player )
or state . has_all ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D04Z02S04[NE] " , player ) ,
lambda state : (
state . has ( " D04Z02S04[NW] " , player )
or state . has ( " D04Z02S04[N] " , player )
or state . has ( " D04Z02S04[Cherubs] " , player )
or state . has_all ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D04Z02S04[N] " , player ) ,
lambda state : (
(
state . has ( " D04Z02S04[NW] " , player )
or state . has ( " D04Z02S04[NE] " , player )
or state . has ( " D04Z02S04[Cherubs] " , player )
or state . has_all ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
)
and state . has ( " OpenedMOMLadder " , player )
) )
# D04Z02S06 (Mother of Mothers)
# Items
set_rule ( world . get_location ( " MoM: Outside Cleofas ' room " , player ) ,
lambda state : (
state . has ( " D04Z02S06[NW] " , player )
or state . has ( " D04Z02S06[N] " , player )
or state . has ( " D04Z02S06[NE] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
# Doors
set_rule ( world . get_entrance ( " D04Z02S06[NW] " , player ) ,
lambda state : (
state . has ( " D04Z02S06[N] " , player )
or state . has ( " D04Z02S06[NE] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D04Z02S06[N] " , player ) ,
lambda state : (
(
state . has ( " D04Z02S06[NW] " , player )
or state . has ( " D04Z02S06[NE] " , player )
or state . has ( " Wall Climb Ability " , player )
)
and state . has ( " OpenedARLadder " , player )
) )
set_rule ( world . get_entrance ( " D04Z02S06[NE] " , player ) ,
lambda state : (
state . has ( " D04Z02S06[NW] " , player )
or state . has ( " D04Z02S06[N] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D04Z02S06[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# Event
set_rule ( world . get_location ( " OpenedMOMLadder " , player ) ,
lambda state : opened_mom_ladder ( state , player ) )
# D04Z02S07 (Mother of Mothers)
# Items
set_rule ( world . get_location ( " MoM: East chandelier platform " , player ) ,
lambda state : (
2023-08-16 14:09:49 +00:00
state . has ( " Dash Ability " , player )
and (
state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 3 )
)
2023-07-06 04:39:26 +00:00
) )
# No doors
# D04Z02S09 (Mother of Mothers)
# No items
# Doors
set_rule ( world . get_entrance ( " D04Z02S09[NE] " , player ) ,
lambda state : state . has ( " Blood Perpetuated in Sand " , player ) )
# D04Z02S16 (Mother of Mothers)
# Items
set_rule ( world . get_location ( " MoM: Giant chandelier statue " , player ) ,
lambda state : (
state . has ( " Wall Climb Ability " , player )
and state . has_any ( { " Blood Perpetuated in Sand " , " Purified Hand of the Nun " } , player )
) )
# Doors
set_rule ( world . get_entrance ( " D04Z02S16[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D04Z02S20 (Mother of Mothers)
# No items
# Doors
set_rule ( world . get_entrance ( " D04Z02S20[Redento] " , player ) ,
lambda state : redento ( state , blasphemousworld , player , 5 ) )
# D04Z02S21 (Mother of Mothers)
# No items
# Doors
set_rule ( world . get_entrance ( " D04Z02S21[W] " , player ) ,
lambda state : (
state . has ( " D04Z02S21[NE] " , player )
or state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player )
) )
set_rule ( world . get_entrance ( " D04Z02S21[NE] " , player ) ,
lambda state : state . has_any ( { " Purified Hand of the Nun " , " Wall Climb Ability " } , player ) )
# D04Z02S22 (Mother of Mothers)
# Items
set_rule ( world . get_location ( " MoM: Melquiades, The Exhumed Archbishop " , player ) ,
lambda state : can_beat_boss ( state , " Mothers " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D04Z02S22[W] " , player ) ,
lambda state : can_beat_boss ( state , " Mothers " , logic , player ) )
set_rule ( world . get_entrance ( " D04Z02S22[E] " , player ) ,
lambda state : can_beat_boss ( state , " Mothers " , logic , player ) )
# D04BZ02S01 (Mother of Mothers - Redento)
# Items
set_rule ( world . get_location ( " MoM: Final meeting with Redento " , player ) ,
lambda state : redento ( state , blasphemousworld , player , 5 ) )
# No doors
# D04Z03S02 (Knot of the Three Words)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " KotTW: Gift from the Traitor " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has_all ( { " Severed Right Eye of the Traitor " , " Broken Left Eye of the Traitor " } , player ) )
# No doors
# D04Z04S01 (All the Tears of the Sea)
# Items
set_rule ( world . get_location ( " AtTotS: Miriam ' s gift " , player ) ,
lambda state : (
miriam ( state , player )
and state . has ( " Dash Ability " , player )
and state . has ( " Wall Climb Ability " , player )
) )
# No doors
# D05Z01S03 (Library of the Negated Words)
# No items
# Doors
set_rule ( world . get_entrance ( " D05Z01S03[Frontal] " , player ) ,
lambda state : (
state . has ( " Key Grown from Twisted Wood " , player )
and state . has ( " D05Z01S23[E] " , player )
and (
state . has ( " D05Z01S11[NW] " , player )
or state . has ( " D05Z01S11[NE] " , player )
)
) )
# D05Z01S05 (Library of the Negated Words)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " LotNW: Hidden floor " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : can_break_holes ( state , player ) )
set_rule ( world . get_location ( " LotNW: Root ceiling platform " , player ) ,
lambda state : (
(
can_climb_on_root ( state , player )
or state . has ( " Purified Hand of the Nun " , player )
)
and (
state . has ( " D05Z01S05[NE] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
)
) )
# Doors
set_rule ( world . get_entrance ( " D05Z01S05[NE] " , player ) ,
lambda state : state . has ( " Blood Perpetuated in Sand " , player ) )
# D05Z01S06 (Library of the Negated Words)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " LotNW: Miasma hallway chest " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " D05Z01S06[W] " , player )
or can_survive_poison ( state , logic , player , 3 )
) )
# Doors
set_rule ( world . get_entrance ( " D05Z01S06[W] " , player ) ,
lambda state : can_survive_poison ( state , logic , player , 3 ) )
set_rule ( world . get_entrance ( " D05Z01S06[E] " , player ) ,
lambda state : can_survive_poison ( state , logic , player , 3 ) )
# D05Z01S07 (Library of the Negated Words)
# No items
# Doors
set_rule ( world . get_entrance ( " D05Z01S07[NW] " , player ) ,
lambda state : (
state . has ( " Blood Perpetuated in Sand " , player )
and (
can_climb_on_root ( state , player )
or state . has ( " Purified Hand of the Nun " , player )
)
or (
can_climb_on_root ( state , player )
and can_cross_gap ( state , logic , player , 3 )
)
or can_cross_gap ( state , logic , player , 7 )
) )
# D05Z01S10 (Library of the Negated Words)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " LotNW: Platform puzzle chest " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has_any ( { " Blood Perpetuated in Sand " , " Purified Hand of the Nun " } , player )
or can_enemy_bounce ( logic , enemy )
and can_cross_gap ( state , logic , player , 2 )
) )
# No doors
# D05Z01S11 (Library of the Negated Words)
# Items
set_rule ( world . get_location ( " LotNW: Silence for Diosdado " , player ) ,
lambda state : (
(
state . has ( " D05Z01S11[NW] " , player )
or state . has ( " D05Z01S11[NE] " , player )
)
and state . has ( " D05Z01S23[E] " , player )
) )
set_rule ( world . get_location ( " LotNW: Lowest west upper ledge " , player ) ,
lambda state : (
state . has ( " D05Z01S11[NW] " , player )
or state . has ( " D05Z01S11[NE] " , player )
) )
# Doors
set_rule ( world . get_entrance ( " D05Z01S11[SW] " , player ) ,
lambda state : can_break_tirana ( state , logic , player ) )
set_rule ( world . get_entrance ( " D05Z01S11[NW] " , player ) ,
lambda state : state . has ( " D05Z01S11[NE] " , player ) )
set_rule ( world . get_entrance ( " D05Z01S11[NE] " , player ) ,
lambda state : state . has ( " D05Z01S11[NW] " , player ) )
# D05Z01S21 (Library of the Negated Words)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " LotNW: Elevator Child of Moonlight " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
2023-08-16 14:09:49 +00:00
state . has ( " Blood Perpetuated in Sand " , player )
2023-07-06 04:39:26 +00:00
and (
can_walk_on_root ( state , player )
or state . has ( " Purified Hand of the Nun " , player )
or can_cross_gap ( state , logic , player , 5 )
and pillar ( state , player )
)
2023-08-16 14:09:49 +00:00
or obscure_skips_allowed ( logic )
and (
state . has ( " Zarabanda of the Safe Haven " , player )
or aubade ( state , player )
or state . has ( " Cantina of the Blue Rose " , player )
)
2023-07-06 04:39:26 +00:00
) )
# Doors
set_rule ( world . get_entrance ( " D05Z01S21[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D05Z02S06 (The Sleeping Canvases)
# No items
# Doors
set_rule ( world . get_entrance ( " D05Z02S06[SE] " , player ) ,
lambda state : state . has ( " OpenedTSCGate " , player ) )
# D05Z02S09 (The Sleeping Canvases)
# No items
# Doors
set_rule ( world . get_entrance ( " D05Z02S09[E] " , player ) ,
lambda state : (
state . has ( " Bead of Red Wax " , player , 3 )
and state . has ( " Bead of Blue Wax " , player , 3 )
) )
# D05Z02S10 (The Sleeping Canvases)
# Items
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " TSC: Jocinero ' s 1st reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has ( " Child of Moonlight " , player , 20 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " TSC: Jocinero ' s final reward " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has ( " Child of Moonlight " , player , 38 ) )
# Doors
set_rule ( world . get_entrance ( " D05Z02S10[W] " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D05Z02S11 (The Sleeping Canvases)
# Event
set_rule ( world . get_location ( " OpenedTSCGate " , player ) ,
lambda state : opened_tsc_gate ( state , player ) )
# D05Z02S13 (The Sleeping Canvases)
# No items
# Doors
set_rule ( world . get_entrance ( " D05Z02S13[E] " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
# D05Z02S14 (The Sleeping Canvases)
# Items
set_rule ( world . get_location ( " TSC: Exposito, Scion of Abjuration " , player ) ,
lambda state : can_beat_boss ( state , " Canvases " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D05Z02S14[W] " , player ) ,
lambda state : can_beat_boss ( state , " Canvases " , logic , player ) )
set_rule ( world . get_entrance ( " D05Z02S14[E] " , player ) ,
lambda state : can_beat_boss ( state , " Canvases " , logic , player ) )
# D05Z02S15 (The Sleeping Canvases)
# Items
set_rule ( world . get_location ( " TSC: Swinging blade tunnel " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
# No doors
# D06Z01S01 (Archcathedral Rooftops)
# No items
# Doors
set_rule ( world . get_entrance ( " D06Z01S01[SW] " , player ) ,
lambda state : (
(
state . has ( " D06Z01S01[SE] " , player )
or state . has ( " D06Z01S01[W] " , player )
or state . has ( " D06Z01S01[E] " , player )
or state . has ( " D06Z01S01[NNW] " , player )
or state . has ( " D06Z01S01[NNE] " , player )
or state . has ( " D06Z01S01[N] " , player )
)
or state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[NW] " , player )
or state . has ( " D06Z01S01[NE] " , player )
)
) )
set_rule ( world . get_entrance ( " D06Z01S01[SE] " , player ) ,
lambda state : (
(
state . has ( " D06Z01S01[SW] " , player )
or state . has ( " D06Z01S01[W] " , player )
or state . has ( " D06Z01S01[E] " , player )
or state . has ( " D06Z01S01[NNW] " , player )
or state . has ( " D06Z01S01[NNE] " , player )
or state . has ( " D06Z01S01[N] " , player )
)
or state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[NW] " , player )
or state . has ( " D06Z01S01[NE] " , player )
)
) )
set_rule ( world . get_entrance ( " D06Z01S01[W] " , player ) ,
lambda state : (
(
state . has ( " D06Z01S01[E] " , player )
or state . has ( " D06Z01S01[NNW] " , player )
or state . has ( " D06Z01S01[NNE] " , player )
or state . has ( " D06Z01S01[N] " , player )
)
or state . has_group ( " masks " , player , 1 )
and (
state . has ( " D06Z01S01[SW] " , player )
or state . has ( " D06Z01S01[SE] " , player )
)
or state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[NW] " , player )
or state . has ( " D06Z01S01[NE] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 1 )
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S01[E] " , player ) ,
lambda state : (
(
state . has ( " D06Z01S01[W] " , player )
or state . has ( " D06Z01S01[NNW] " , player )
or state . has ( " D06Z01S01[NNE] " , player )
or state . has ( " D06Z01S01[N] " , player )
)
or state . has_group ( " masks " , player , 1 )
and (
state . has ( " D06Z01S01[SW] " , player )
or state . has ( " D06Z01S01[SE] " , player )
)
or state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[NW] " , player )
or state . has ( " D06Z01S01[NE] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 1 )
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S01[NW] " , player ) ,
lambda state : (
state . has ( " D06Z01S01[NE] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 8 )
)
or state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[NNW] " , player )
or state . has ( " D06Z01S01[NNE] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 3 )
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S01[NE] " , player ) ,
lambda state : (
state . has ( " D06Z01S01[NW] " , player )
or (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 8 )
)
or state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[NNW] " , player )
or state . has ( " D06Z01S01[NNE] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 3 )
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S01[NNW] " , player ) ,
lambda state : (
(
state . has ( " D06Z01S01[NNE] " , player )
or state . has ( " D06Z01S01[N] " , player )
)
or state . has_group ( " masks " , player , 2 )
and (
state . has ( " D06Z01S01[SW] " , player )
or state . has ( " D06Z01S01[SE] " , player )
or state . has ( " D06Z01S01[W] " , player )
or state . has ( " D06Z01S01[E] " , player )
or state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[NW] " , player )
or state . has ( " D06Z01S01[NE] " , player )
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S01[NNE] " , player ) ,
lambda state : (
(
state . has ( " D06Z01S01[NNW] " , player )
or state . has ( " D06Z01S01[N] " , player )
)
or state . has_group ( " masks " , player , 2 )
and (
state . has ( " D06Z01S01[SW] " , player )
or state . has ( " D06Z01S01[SE] " , player )
or state . has ( " D06Z01S01[W] " , player )
or state . has ( " D06Z01S01[E] " , player )
or state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[NW] " , player )
or state . has ( " D06Z01S01[NE] " , player )
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S01[N] " , player ) ,
lambda state : (
state . has_group ( " masks " , player , 3 )
and (
state . has ( " D06Z01S01[SW] " , player )
or state . has ( " D06Z01S01[SE] " , player )
or state . has ( " D06Z01S01[W] " , player )
or state . has ( " D06Z01S01[E] " , player )
or state . has ( " D06Z01S01[NNW] " , player )
or state . has ( " D06Z01S01[NNE] " , player )
or state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[NW] " , player )
or state . has ( " D06Z01S01[NE] " , player )
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S01[-Cherubs] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S01[SW] " , player )
or state . has ( " D06Z01S01[SE] " , player )
or state . has ( " D06Z01S01[W] " , player )
or state . has ( " D06Z01S01[E] " , player )
or state . has ( " D06Z01S01[NW] " , player )
or state . has ( " D06Z01S01[NE] " , player )
or state . has ( " D06Z01S01[NNW] " , player )
or state . has ( " D06Z01S01[NNE] " , player ) )
) )
# D06Z01S03 (Archcathedral Rooftops)
# Items
set_rule ( world . get_location ( " AR: First soldier fight " , player ) ,
lambda state : can_beat_boss ( state , " Legionary " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D06Z01S03[W] " , player ) ,
lambda state : can_beat_boss ( state , " Legionary " , logic , player ) )
set_rule ( world . get_entrance ( " D06Z01S03[E] " , player ) ,
lambda state : can_beat_boss ( state , " Legionary " , logic , player ) )
# D06Z01S04 (Archcathedral Rooftops)
# No items
# Doors
set_rule ( world . get_entrance ( " D06Z01S04[SW] " , player ) ,
lambda state : (
state . has ( " D06Z01S04[W] " , player )
or state . has ( " D06Z01S04[Health] " , player )
) )
set_rule ( world . get_entrance ( " D06Z01S04[W] " , player ) ,
lambda state : (
state . has ( " D06Z01S04[SW] " , player )
or state . has ( " D06Z01S04[Health] " , player )
) )
set_rule ( world . get_entrance ( " D06Z01S04[Health] " , player ) ,
lambda state : (
state . has ( " D06Z01S04[SW] " , player )
or state . has ( " D06Z01S04[W] " , player )
) )
add_rule ( world . get_entrance ( " D06Z01S04[Health] " , player ) ,
lambda state : (
(
state . has ( " Wall Climb Ability " , player )
and can_survive_poison ( state , logic , player , 2 )
and (
state . has ( " Purified Hand of the Nun " , player )
or (
state . has ( " Blood Perpetuated in Sand " , player )
and can_climb_on_root ( state , player )
)
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S04[NW] " , player ) ,
lambda state : (
state . has ( " D06Z01S04[NE] " , player )
or state . has ( " D06Z01S04[Cherubs] " , player )
) )
add_rule ( world . get_entrance ( " D06Z01S04[NW] " , player ) ,
lambda state : (
state . has ( " D06Z01S04[Cherubs] " , player )
or (
state . has ( " D06Z01S04[SW] " , player )
or state . has ( " D06Z01S04[W] " , player )
or state . has ( " D06Z01S04[Health] " , player )
)
and state . has ( " Wall Climb Ability " , player )
and can_survive_poison ( state , logic , player , 2 )
and (
state . has_any ( { " Dash Ability " , " Purified Hand of the Nun " } , player )
and (
can_dawn_jump ( state , logic , player )
or can_climb_on_root ( state , player )
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S04[NE] " , player ) ,
lambda state : (
state . has ( " D06Z01S04[NW] " , player )
or state . has ( " D06Z01S04[Cherubs] " , player )
) )
add_rule ( world . get_entrance ( " D06Z01S04[NE] " , player ) ,
lambda state : (
(
state . has ( " D06Z01S04[SW] " , player )
or state . has ( " D06Z01S04[W] " , player )
or state . has ( " D06Z01S04[Health] " , player )
)
and state . has ( " Wall Climb Ability " , player )
and can_survive_poison ( state , logic , player , 2 )
and (
state . has_any ( { " Dash Ability " , " Purified Hand of the Nun " } , player )
and (
can_dawn_jump ( state , logic , player )
or can_climb_on_root ( state , player )
)
)
) )
# D06Z01S06 (Archcathedral Rooftops)
# Items
set_rule ( world . get_location ( " AR: Second soldier fight " , player ) ,
lambda state : (
can_beat_boss ( state , " Legionary " , logic , player )
and (
state . has ( " D06Z01S06[WW] " , player )
or state . has ( " D06Z01S06[E] " , player )
)
) )
# Doors
set_rule ( world . get_entrance ( " D06Z01S06[WW] " , player ) ,
lambda state : state . has ( " D06Z01S06[E] " , player ) )
add_rule ( world . get_entrance ( " D06Z01S06[WW] " , player ) ,
lambda state : can_beat_boss ( state , " Legionary " , logic , player ) )
set_rule ( world . get_entrance ( " D06Z01S06[E] " , player ) ,
lambda state : state . has ( " D06Z01S06[WW] " , player ) )
add_rule ( world . get_entrance ( " D06Z01S06[E] " , player ) ,
lambda state : can_beat_boss ( state , " Legionary " , logic , player ) )
set_rule ( world . get_entrance ( " D06Z01S06[W] " , player ) ,
lambda state : state . has ( " D06Z01S06[EE] " , player ) )
set_rule ( world . get_entrance ( " D06Z01S06[EE] " , player ) ,
lambda state : state . has ( " D06Z01S06[W] " , player ) )
# D06Z01S08 (Archcathedral Rooftops)
# No items
# Doors
set_rule ( world . get_entrance ( " D06Z01S08[E] " , player ) ,
lambda state : state . has ( " D06Z01S08[N] " , player ) or \
state . has ( " Wall Climb Ability " , player ) )
# D06Z01S09 (Archcathedral Rooftops)
# No items
# Doors
set_rule ( world . get_entrance ( " D06Z01S09[-CherubsL] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
set_rule ( world . get_entrance ( " D06Z01S09[-CherubsR] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D06Z01S10 (Archcathedral Rooftops)
# No items
# Doors
set_rule ( world . get_entrance ( " D06Z01S10[-CherubsL] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
set_rule ( world . get_entrance ( " D06Z01S10[-CherubsR] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D06Z01S12 (Archcathedral Rooftops)
# Items
set_rule ( world . get_location ( " AR: Upper west shaft ledge " , player ) ,
lambda state : (
state . has ( " D06Z01S12[NW] " , player )
or state . has ( " D06Z01S12[NE] " , player )
or state . has ( " D06Z01S12[NE2] " , player )
or state . has ( " D06Z01S12[W] " , player )
or state . has ( " D06Z01S12[E] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_location ( " AR: Upper west shaft chest " , player ) ,
lambda state : (
state . has ( " D06Z01S12[NE2] " , player )
or (
state . has ( " D06Z01S12[NW] " , player )
or state . has ( " D06Z01S12[NE] " , player )
)
and state . has ( " Purified Hand of the Nun " , player )
) )
set_rule ( world . get_location ( " AR: Upper west shaft Child of Moonlight " , player ) ,
lambda state : (
state . has ( " D06Z01S12[W] " , player )
or state . has ( " D06Z01S12[E] " , player )
or state . has ( " D06Z01S12[NW] " , player )
or state . has ( " D06Z01S12[NE] " , player )
or state . has ( " D06Z01S12[NE2] " , player )
or state . has ( " Wall Climb Ability " , player )
and state . has_any ( { " Purified Hand of the Nun " , " Taranto to my Sister " } , player )
) )
# Doors
set_rule ( world . get_entrance ( " D06Z01S12[W] " , player ) ,
lambda state : (
state . has ( " D06Z01S12[NW] " , player )
or state . has ( " D06Z01S12[NE] " , player )
or state . has ( " D06Z01S12[NE2] " , player )
or state . has ( " D06Z01S12[E] " , player )
or state . has_all ( { " Wall Climb Ability " , " Purified Hand of the Nun " } , player )
) )
set_rule ( world . get_entrance ( " D06Z01S12[E] " , player ) ,
lambda state : (
state . has ( " D06Z01S12[NW] " , player )
or state . has ( " D06Z01S12[NE] " , player )
or state . has ( " D06Z01S12[NE2] " , player )
or state . has ( " D06Z01S12[W] " , player )
or state . has_all ( { " Wall Climb Ability " , " Purified Hand of the Nun " } , player )
) )
set_rule ( world . get_entrance ( " D06Z01S12[NW] " , player ) ,
lambda state : (
state . has ( " D06Z01S12[NE] " , player )
or state . has ( " D06Z01S12[NE2] " , player )
) )
add_rule ( world . get_entrance ( " D06Z01S12[NW] " , player ) ,
lambda state : (
state . has ( " D06Z01S12[NE] " , player )
or state . has_any ( { " Wall Climb Ability " , " Purified Hand of the Nun " } , player )
) )
set_rule ( world . get_entrance ( " D06Z01S12[NE] " , player ) ,
lambda state : (
state . has ( " D06Z01S12[NW] " , player )
or state . has ( " D06Z01S12[NE2] " , player )
) )
add_rule ( world . get_entrance ( " D06Z01S12[NE] " , player ) ,
lambda state : (
state . has ( " D06Z01S12[NW] " , player )
or state . has_any ( { " Wall Climb Ability " , " Purified Hand of the Nun " } , player )
) )
# D06Z01S15 (Archcathedral Rooftops)
# Items
set_rule ( world . get_location ( " AR: Upper east shaft ledge " , player ) ,
lambda state : (
state . has ( " D06Z01S15[SW] " , player )
and state . has ( " Wall Climb Ability " , player )
and (
can_cross_gap ( state , logic , player , 10 )
or can_climb_on_root ( state , player )
and (
state . has ( " Blood Perpetuated in Sand " , player )
or state . has ( " Purified Hand of the Nun " , player )
and can_air_stall ( state , logic , player )
)
)
) )
# Doors
set_rule ( world . get_entrance ( " D06Z01S15[NW] " , player ) ,
lambda state : state . has ( " D06Z01S15[NE] " , player ) )
add_rule ( world . get_entrance ( " D06Z01S15[NW] " , player ) ,
lambda state : (
state . has ( " D06Z01S15[SW] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
set_rule ( world . get_entrance ( " D06Z01S15[NE] " , player ) ,
lambda state : state . has ( " D06Z01S15[NW] " , player ) )
add_rule ( world . get_entrance ( " D06Z01S15[NE] " , player ) ,
lambda state : (
state . has ( " D06Z01S15[SW] " , player )
or state . has ( " Wall Climb Ability " , player )
) )
# D06Z01S16 (Archcathedral Rooftops)
# No items
# Doors
set_rule ( world . get_entrance ( " D06Z01S16[W] " , player ) ,
lambda state : (
(
state . has ( " D06Z01S16[CherubsL] " , player )
and (
state . has ( " Purified Hand of the Nun " , player )
or state . has ( " Wall Climb Ability " , player )
and (
can_walk_on_root ( state , player )
or can_air_stall ( state , logic , player )
)
)
)
or (
state . has ( " D06Z01S16[CherubsR] " , player )
and (
state . has ( " Purified Hand of the Nun " , player )
or can_air_stall ( state , logic , player )
and (
can_walk_on_root ( state , player )
or state . has ( " The Young Mason ' s Wheel " , player )
)
and (
state . has ( " Wall Climb Ability " , player )
or can_dawn_jump ( state , logic , player )
)
)
)
or (
state . has ( " D06Z01S16[E] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 7 )
)
and (
state . has ( " Wall Climb Ability " , player ) or
can_cross_gap ( state , logic , player , 5 )
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S16[E] " , player ) ,
lambda state : (
(
(
state . has ( " D06Z01S16[W] " , player )
or state . has ( " D06Z01S16[CherubsL] " , player )
)
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 5 )
)
)
or (
state . has ( " D06Z01S16[CherubsR] " , player )
and (
state . has ( " Purified Hand of the Nun " , player )
or can_air_stall ( state , logic , player )
and (
can_walk_on_root ( state , player )
and state . has ( " The Young Mason ' s Wheel " , player )
)
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S16[-CherubsL] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S16[W] " , player )
or (
state . has ( " D06Z01S16[CherubsR] " , player )
and (
state . has ( " Purified Hand of the Nun " , player )
or can_air_stall ( state , logic , player )
and (
can_walk_on_root ( state , player )
or state . has ( " The Young Mason ' s Wheel " , player )
)
)
)
or (
state . has ( " D06Z01S16[E] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 7 )
)
)
)
) )
set_rule ( world . get_entrance ( " D06Z01S16[-CherubsR] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D06Z01S16[E] " , player )
or (
state . has ( " D06Z01S16[CherubsL] " , player )
and (
can_air_stall ( state , logic , player )
or can_walk_on_root ( state , player )
or state . has ( " Purified Hand of the Nun " , player )
)
)
or (
state . has ( " D06Z01S16[W] " , player )
and (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 1 )
)
)
)
) )
# D06Z01S17 (Archcathedral Rooftops)
# No items
# Doors
set_rule ( world . get_entrance ( " D06Z01S17[W] " , player ) ,
lambda state : (
(
state . has ( " D06Z01S17[E] " , player )
or state . has ( " D06Z01S17[CherubsR] " , player )
)
and state . has ( " Blood Perpetuated in Sand " , player )
or state . has ( " D06Z01S17[CherubsL] " , player )
and state . has ( " Purified Hand of the Nun " , player )
) )
set_rule ( world . get_entrance ( " D06Z01S17[E] " , player ) ,
lambda state : (
state . has ( " D06Z01S17[CherubsR] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
and (
state . has ( " D06Z01S17[W] " , player )
or state . has ( " D06Z01S17[CherubsL] " , player )
and state . has ( " Purified Hand of the Nun " , player )
)
) )
set_rule ( world . get_entrance ( " D06Z01S17[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D06Z01S18 (Archcathedral Rooftops)
# No items
# Doors
set_rule ( world . get_entrance ( " D06Z01S18[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# D06Z01S21 (Archcathedral Rooftops)
# Items
set_rule ( world . get_location ( " AR: Third soldier fight " , player ) ,
lambda state : can_beat_boss ( state , " Legionary " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D06Z01S21[W] " , player ) ,
lambda state : can_beat_boss ( state , " Legionary " , logic , player ) )
set_rule ( world . get_entrance ( " D06Z01S21[E] " , player ) ,
lambda state : can_beat_boss ( state , " Legionary " , logic , player ) )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D06Z01S23 (Archcathedral Rooftops)
# Event
set_rule ( world . get_location ( " OpenedARLadder " , player ) ,
lambda state : opened_ar_ladder ( state , player ) )
# D06Z01S25 (Archcathedral Rooftops)
# Items
set_rule ( world . get_location ( " AR: Crisanta of the Wrapped Agony " , player ) ,
lambda state : can_beat_boss ( state , " Rooftops " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D06Z01S25[W] " , player ) ,
lambda state : can_beat_boss ( state , " Rooftops " , logic , player ) )
set_rule ( world . get_entrance ( " D06Z01S25[E] " , player ) ,
lambda state : can_beat_boss ( state , " Rooftops " , logic , player ) )
# D08Z01S01 (Bridge of the Three Cavalries)
# Items
set_rule ( world . get_location ( " BotTC: Esdras, of the Anointed Legion " , player ) ,
lambda state : (
state . has_group ( " wounds " , player , 3 )
and can_beat_boss ( state , " Bridge " , logic , player )
) )
set_rule ( world . get_location ( " BotTC: Esdras ' gift " , player ) ,
lambda state : (
state . has_group ( " wounds " , player , 3 )
and can_beat_boss ( state , " Bridge " , logic , player )
) )
# Doors
set_rule ( world . get_entrance ( " D08Z01S01[W] " , player ) ,
lambda state : can_beat_boss ( state , " Bridge " , logic , player ) )
set_rule ( world . get_entrance ( " D08Z01S01[E] " , player ) ,
lambda state : (
state . has_group ( " wounds " , player , 3 )
and (
state . has ( " D08Z01S01[Cherubs] " , player )
or can_beat_boss ( state , " Bridge " , logic , player )
)
) )
# D08Z01S02 (Bridge of the Three Cavalries)
# No items
# Items
set_rule ( world . get_entrance ( " D08Z01S02[-Cherubs] " , player ) ,
lambda state : state . has ( " Linen of Golden Thread " , player ) )
# Event
set_rule ( world . get_location ( " BrokeBOTTCStatue " , player ) ,
lambda state : broke_bottc_statue ( state , player ) )
# D08Z02S03 (Ferrous Tree)
# No items
# Doors
set_rule ( world . get_entrance ( " D08Z02S03[W] " , player ) ,
lambda state : state . has ( " OpenedBOTTCStatue " , player ) )
# D08Z03S01 (Hall of the Dawning)
# No items
# Doors
set_rule ( world . get_entrance ( " D08Z03S01[E] " , player ) ,
lambda state : state . has ( " Verses Spun from Gold " , player , 4 ) )
# D08Z03S02 (Hall of the Dawning)
# No items
# Doors
set_rule ( world . get_entrance ( " D08Z03S02[NW] " , player ) ,
lambda state : state . has ( " Wall Climb Ability " , player ) )
# D08Z03S03 (Hall of the Dawning)
# Items
set_rule ( world . get_location ( " HotD: Laudes, the First of the Amanecidas " , player ) ,
lambda state : can_beat_boss ( state , " Hall " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D08Z03S03[W] " , player ) ,
lambda state : can_beat_boss ( state , " Hall " , logic , player ) )
set_rule ( world . get_entrance ( " D08Z03S03[E] " , player ) ,
lambda state : can_beat_boss ( state , " Hall " , logic , player ) )
# D09Z01S01 (Wall of the Holy Prohibitions)
# Items
set_rule ( world . get_location ( " WotHP: Amanecida of the Molten Thorn " , player ) ,
lambda state : can_beat_boss ( state , " Wall " , logic , player ) )
# No doors
# D09Z01S02 (Wall of the Holy Prohibitions)
# Items
set_rule ( world . get_location ( " WotHP: Upper east room, center gold cell " , player ) ,
lambda state : state . has ( " D09Z01S02[Cell5] " , player ) )
set_rule ( world . get_location ( " WotHP: Upper east room, lift puzzle " , player ) ,
lambda state : (
state . has ( " D09Z01S02[NW] " , player )
or state . has ( " D09Z01S02[N] " , player )
or state . has ( " D09Z01S02[Cell1] " , player )
or state . has ( " D09Z01S02[Cell6] " , player )
or state . has ( " D09Z01S02[Cell4] " , player )
or state . has ( " D09Z01S02[Cell3] " , player )
or state . has ( " D09Z01S02[Cell22] " , player )
or state . has ( " D09Z01S02[Cell23] " , player )
) )
# Doors
set_rule ( world . get_entrance ( " D09Z01S02[SW] " , player ) ,
lambda state : state . has ( " D09Z01S02[Cell2] " , player ) )
set_rule ( world . get_entrance ( " D09Z01S02[NW] " , player ) ,
lambda state : (
state . has ( " D09Z01S02[N] " , player )
or state . has ( " D09Z01S02[Cell1] " , player )
or state . has ( " D09Z01S02[Cell6] " , player )
or state . has ( " D09Z01S02[Cell4] " , player )
or state . has ( " D09Z01S02[Cell3] " , player )
or state . has ( " D09Z01S02[Cell22] " , player )
or state . has ( " D09Z01S02[Cell23] " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S02[N] " , player ) ,
lambda state : (
state . has ( " D09Z01S02[NW] " , player )
or state . has ( " D09Z01S02[Cell1] " , player )
or state . has ( " D09Z01S02[Cell6] " , player )
or state . has ( " D09Z01S02[Cell4] " , player )
or state . has ( " D09Z01S02[Cell3] " , player )
or state . has ( " D09Z01S02[Cell22] " , player )
or state . has ( " D09Z01S02[Cell23] " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S02[Cell1] " , player ) ,
lambda state : (
state . has ( " D09Z01S02[NW] " , player )
or state . has ( " D09Z01S02[N] " , player )
or state . has ( " D09Z01S02[Cell6] " , player )
or state . has ( " D09Z01S02[Cell4] " , player )
or state . has ( " D09Z01S02[Cell3] " , player )
or state . has ( " D09Z01S02[Cell22] " , player )
or state . has ( " D09Z01S02[Cell23] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S02[Cell1] " , player ) ,
lambda state : state . has ( " Key of the Secular " , player ) )
set_rule ( world . get_entrance ( " D09Z01S02[Cell6] " , player ) ,
lambda state : (
state . has ( " D09Z01S02[NW] " , player )
or state . has ( " D09Z01S02[N] " , player )
or state . has ( " D09Z01S02[Cell1] " , player )
or state . has ( " D09Z01S02[Cell4] " , player )
or state . has ( " D09Z01S02[Cell3] " , player )
or state . has ( " D09Z01S02[Cell22] " , player )
or state . has ( " D09Z01S02[Cell23] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S02[Cell6] " , player ) ,
lambda state : state . has ( " Key of the Scribe " , player ) )
set_rule ( world . get_entrance ( " D09Z01S02[Cell4] " , player ) ,
lambda state : (
state . has ( " D09Z01S02[NW] " , player )
or state . has ( " D09Z01S02[N] " , player )
or state . has ( " D09Z01S02[Cell1] " , player )
or state . has ( " D09Z01S02[Cell6] " , player )
or state . has ( " D09Z01S02[Cell3] " , player )
or state . has ( " D09Z01S02[Cell22] " , player )
or state . has ( " D09Z01S02[Cell23] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S02[Cell4] " , player ) ,
lambda state : state . has ( " Key of the Inquisitor " , player ) )
set_rule ( world . get_entrance ( " D09Z01S02[Cell2] " , player ) ,
lambda state : state . has ( " D09Z01S02[SW] " , player ) )
set_rule ( world . get_entrance ( " D09Z01S02[Cell3] " , player ) ,
lambda state : (
state . has ( " D09Z01S02[NW] " , player )
or state . has ( " D09Z01S02[N] " , player )
or state . has ( " D09Z01S02[Cell1] " , player )
or state . has ( " D09Z01S02[Cell6] " , player )
or state . has ( " D09Z01S02[Cell4] " , player )
or state . has ( " D09Z01S02[Cell22] " , player )
or state . has ( " D09Z01S02[Cell23] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S02[Cell3] " , player ) ,
lambda state : state . has ( " Key of the Secular " , player ) )
set_rule ( world . get_entrance ( " D09Z01S02[Cell22] " , player ) ,
lambda state : (
state . has ( " D09Z01S02[NW] " , player )
or state . has ( " D09Z01S02[N] " , player )
or state . has ( " D09Z01S02[Cell1] " , player )
or state . has ( " D09Z01S02[Cell6] " , player )
or state . has ( " D09Z01S02[Cell4] " , player )
or state . has ( " D09Z01S02[Cell3] " , player )
or state . has ( " D09Z01S02[Cell23] " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S02[Cell23] " , player ) ,
lambda state : (
state . has ( " D09Z01S02[NW] " , player )
or state . has ( " D09Z01S02[N] " , player )
or state . has ( " D09Z01S02[Cell1] " , player )
or state . has ( " D09Z01S02[Cell6] " , player )
or state . has ( " D09Z01S02[Cell4] " , player )
or state . has ( " D09Z01S02[Cell3] " , player )
or state . has ( " D09Z01S02[Cell22] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S02[Cell23] " , player ) ,
lambda state : state . has ( " Key of the Secular " , player ) )
# D09Z01S03 (Wall of the Holy Prohibitions)
# Items
set_rule ( world . get_location ( " WotHP: Quirce, Returned By The Flames " , player ) ,
lambda state : can_beat_boss ( state , " Prison " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D09Z01S03[W] " , player ) ,
lambda state : (
state . has ( " D09Z01S03[N] " , player )
and can_beat_boss ( state , " Prison " , logic , player )
) )
# D09Z01S05 (Wall of the Holy Prohibitions)
# Event
set_rule ( world . get_location ( " OpenedWOTHPGate " , player ) ,
lambda state : opened_wothp_gate ( state , player ) )
# D09Z01S06 (Wall of the Holy Prohibitions)
# No items
# Doors
set_rule ( world . get_entrance ( " D09Z01S06[-E] " , player ) ,
lambda state : state . has ( " Key of the High Peaks " , player ) )
# D09Z01S07 (Wall of the Holy Prohibitions)
# No items
# Doors
set_rule ( world . get_entrance ( " D09Z01S07[SW] " , player ) ,
lambda state : (
state . has ( " D09Z01S07[SE] " , player )
or state . has ( " D09Z01S07[W] " , player )
or state . has ( " D09Z01S07[E] " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S07[SE] " , player ) ,
lambda state : (
state . has ( " D09Z01S07[SW] " , player )
or state . has ( " D09Z01S07[W] " , player )
or state . has ( " D09Z01S07[E] " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S07[W] " , player ) ,
lambda state : (
state . has ( " D09Z01S07[SW] " , player )
or state . has ( " D09Z01S07[SE] " , player )
or state . has ( " D09Z01S07[E] " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S07[E] " , player ) ,
lambda state : (
state . has ( " D09Z01S07[SW] " , player )
or state . has ( " D09Z01S07[SE] " , player )
or state . has ( " D09Z01S07[W] " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S07[NW] " , player ) ,
lambda state : state . has ( " D09Z01S07[N] " , player ) )
set_rule ( world . get_entrance ( " D09Z01S07[N] " , player ) ,
lambda state : state . has ( " D09Z01S07[NW] " , player ) )
set_rule ( world . get_entrance ( " D09Z01S07[NE] " , player ) ,
lambda state : (
state . has ( " D09Z01S07[SW] " , player )
or state . has ( " D09Z01S07[SE] " , player )
or state . has ( " D09Z01S07[W] " , player )
or state . has ( " D09Z01S07[E] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S07[NE] " , player ) ,
lambda state : state . has ( " Blood Perpetuated in Sand " , player ) )
# D09Z01S08 (Wall of the Holy Prohibitions)
# Items
set_rule ( world . get_location ( " WotHP: Collapsing floor ledge " , player ) ,
lambda state : (
(
state . has ( " D09Z01S08[W] " , player )
or state . has ( " D09Z01S08[Cell18] " , player )
)
and state . has ( " OpenedWOTHPGate " , player )
) )
# Doors
set_rule ( world . get_entrance ( " D09Z01S08[W] " , player ) ,
lambda state : state . has ( " D09Z01S08[Cell14] " , player ) )
add_rule ( world . get_entrance ( " D09Z01S08[W] " , player ) ,
lambda state : state . has ( " OpenedWOTHPGate " , player ) )
set_rule ( world . get_entrance ( " D09Z01S08[S] " , player ) ,
lambda state : (
state . has ( " D09Z01S08[W] " , player )
or state . has ( " D09Z01S08[Cell14] " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S08[SE] " , player ) ,
lambda state : (
state . has ( " D09Z01S08[Cell15] " , player )
or state . has ( " D09Z01S08[Cell16] " , player )
or state . has ( " D09Z01S08[Cell18] " , player )
or state . has ( " D09Z01S08[Cell17] " , player )
and state . has ( " Dash Ability " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S08[NE] " , player ) ,
lambda state : (
state . has ( " D09Z01S08[Cell7] " , player )
or state . has ( " D09Z01S08[Cell17] " , player )
and state . has ( " Dash Ability " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S08[Cell14] " , player ) ,
lambda state : state . has ( " D09Z01S08[W] " , player ) )
set_rule ( world . get_entrance ( " D09Z01S08[Cell15] " , player ) ,
lambda state : (
state . has ( " Key of the Scribe " , player )
and (
state . has ( " D09Z01S08[SE] " , player )
or state . has ( " D09Z01S08[Cell16] " , player )
or state . has ( " D09Z01S08[Cell18] " , player )
or state . has ( " D09Z01S08[Cell17] " , player )
and state . has ( " Dash Ability " , player )
)
) )
set_rule ( world . get_entrance ( " D09Z01S08[Cell7] " , player ) ,
lambda state : (
state . has ( " Key of the Inquisitor " , player )
and (
state . has ( " D09Z01S08[NE] " , player )
or state . has ( " D09Z01S08[Cell17] " , player )
and state . has ( " Dash Ability " , player )
)
) )
set_rule ( world . get_entrance ( " D09Z01S08[Cell16] " , player ) ,
lambda state : (
state . has ( " Key of the Inquisitor " , player )
and (
state . has ( " D09Z01S08[SE] " , player )
or state . has ( " D09Z01S08[Cell15] " , player )
or state . has ( " D09Z01S08[Cell18] " , player )
or state . has ( " D09Z01S08[Cell17] " , player )
and state . has ( " Dash Ability " , player )
)
) )
set_rule ( world . get_entrance ( " D09Z01S08[Cell18] " , player ) ,
lambda state : (
state . has ( " Key of the Scribe " , player )
and (
state . has ( " D09Z01S08[SE] " , player )
or state . has ( " D09Z01S08[Cell15] " , player )
or state . has ( " D09Z01S08[Cell16] " , player )
or state . has ( " D09Z01S08[Cell17] " , player )
and state . has ( " Dash Ability " , player )
)
) )
# D09Z01S09 (Wall of the Holy Prohibitions)
# Items
set_rule ( world . get_location ( " WotHP: Lower west room, top ledge " , player ) ,
lambda state : (
state . has ( " D09Z01S09[Cell24] " , player )
or state . has ( " Dash Ability " , player )
and (
state . has ( " D09Z01S09[NW] " , player )
or state . has ( " D09Z01S09[Cell19] " , player )
2023-08-16 14:09:49 +00:00
or state . has ( " Purified Hand of the Nun " , player )
and (
can_air_stall ( state , logic , player )
or can_dawn_jump ( state , logic , player )
)
2023-07-06 04:39:26 +00:00
)
) )
# Doors
set_rule ( world . get_entrance ( " D09Z01S09[SW] " , player ) ,
lambda state : (
state . has ( " D09Z01S09[Cell21] " , player )
or state . has ( " D09Z01S09[Cell20] " , player )
or state . has ( " D09Z01S09[E] " , player )
or state . has ( " Dash Ability " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S09[NW] " , player ) ,
lambda state : (
state . has ( " D09Z01S09[Cell19] " , player )
or state . has ( " D09Z01S09[Cell24] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S09[NW] " , player ) ,
lambda state : (
state . has ( " D09Z01S09[Cell19] " , player )
or state . has ( " Dash Ability " , player )
2023-08-16 14:09:49 +00:00
and (
state . has ( " D09Z01S09[Cell24] " , player )
or state . has ( " Purified Hand of the Nun " , player )
and (
can_air_stall ( state , logic , player )
or can_dawn_jump ( state , logic , player )
)
)
2023-07-06 04:39:26 +00:00
) )
set_rule ( world . get_entrance ( " D09Z01S09[E] " , player ) ,
lambda state : (
state . has ( " D09Z01S09[Cell21] " , player )
or state . has ( " D09Z01S09[Cell20] " , player )
or state . has ( " D09Z01S09[SW] " , player )
or state . has ( " Dash Ability " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S09[Cell24] " , player ) ,
lambda state : (
state . has ( " D09Z01S09[NW] " , player )
or state . has ( " D09Z01S09[Cell19] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S09[Cell24] " , player ) ,
2023-08-16 14:09:49 +00:00
lambda state : (
state . has ( " Dash Ability " , player )
and (
state . has ( " D09Z01S09[NW] " , player )
or state . has ( " D09Z01S09[Cell19] " , player )
or state . has ( " Purified Hand of the Nun " , player )
and (
can_air_stall ( state , logic , player )
or can_dawn_jump ( state , logic , player )
)
)
) )
set_rule ( world . get_entrance ( " D09Z01S09[Cell19] " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " D09Z01S09[NW] " , player )
or state . has ( " D09Z01S09[Cell24] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S09[Cell19] " , player ) ,
lambda state : (
state . has ( " D09Z01S09[NW] " , player )
or state . has ( " Dash Ability " , player )
2023-08-16 14:09:49 +00:00
and (
state . has ( " D09Z01S09[Cell24] " , player )
or state . has ( " Purified Hand of the Nun " , player )
and (
can_air_stall ( state , logic , player )
or can_dawn_jump ( state , logic , player )
)
)
2023-07-06 04:39:26 +00:00
) )
set_rule ( world . get_entrance ( " D09Z01S09[Cell20] " , player ) ,
lambda state : (
state . has ( " Key of the Scribe " , player )
and (
state . has ( " D09Z01S09[Cell21] " , player )
or state . has ( " D09Z01S09[SW] " , player )
or state . has ( " D09Z01S09[E] " , player )
or state . has ( " Dash Ability " , player )
)
) )
set_rule ( world . get_entrance ( " D09Z01S09[Cell21] " , player ) ,
lambda state : (
state . has ( " Key of the Inquisitor " , player )
and (
state . has ( " D09Z01S09[Cell20] " , player )
or state . has ( " D09Z01S09[SW] " , player )
or state . has ( " D09Z01S09[E] " , player )
or state . has ( " Dash Ability " , player )
)
) )
# D09Z01S10 (Wall of the Holy Prohibitions)
# Items
set_rule ( world . get_location ( " WotHP: Lower east room, top bronze cell " , player ) ,
lambda state : state . has ( " D09Z01S10[Cell13] " , player ) )
set_rule ( world . get_location ( " WotHP: Lower east room, hidden ledge " , player ) ,
lambda state : (
state . has ( " D09Z01S10[W] " , player )
or state . has ( " D09Z01S10[Cell12] " , player )
or state . has ( " D09Z01S10[Cell10] " , player )
or state . has ( " D09Z01S10[Cell11] " , player )
) )
# Doors
set_rule ( world . get_entrance ( " D09Z01S10[W] " , player ) ,
lambda state : (
state . has ( " D09Z01S10[Cell12] " , player )
or state . has ( " D09Z01S10[Cell10] " , player )
or state . has ( " D09Z01S10[Cell11] " , player )
) )
set_rule ( world . get_entrance ( " D09Z01S10[Cell12] " , player ) ,
lambda state : (
state . has ( " D09Z01S10[W] " , player ) or \
state . has ( " D09Z01S10[Cell10] " , player ) or \
state . has ( " D09Z01S10[Cell11] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S10[Cell12] " , player ) ,
lambda state : state . has ( " Key of the Secular " , player ) )
set_rule ( world . get_entrance ( " D09Z01S10[Cell10] " , player ) ,
lambda state : (
state . has ( " D09Z01S10[W] " , player )
or state . has ( " D09Z01S10[Cell12] " , player )
or state . has ( " D09Z01S10[Cell11] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S10[Cell10] " , player ) ,
lambda state : state . has ( " Key of the Scribe " , player ) )
set_rule ( world . get_entrance ( " D09Z01S10[Cell11] " , player ) ,
lambda state : (
state . has ( " D09Z01S10[W] " , player )
or state . has ( " D09Z01S10[Cell12] " , player )
or state . has ( " D09Z01S10[Cell10] " , player )
) )
add_rule ( world . get_entrance ( " D09Z01S10[Cell11] " , player ) ,
lambda state : state . has ( " Key of the Scribe " , player ) )
# D09BZ01S01 (Wall of the Holy Prohibitions - Inside cells)
# Items
set_rule ( world . get_location ( " WotHP: Upper east room, center cell ledge " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell22] " , player ) )
set_rule ( world . get_location ( " WotHP: Upper east room, center cell floor " , player ) ,
lambda state : (
state . has ( " D09BZ01S01[Cell22] " , player )
or state . has ( " D09BZ01S01[Cell23] " , player )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " WotHP: Upper east room, top bronze cell " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has ( " D09BZ01S01[Cell1] " , player ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " WotHP: Upper east room, top silver cell " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has ( " D09BZ01S01[Cell6] " , player ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " WotHP: Upper west room, top silver cell " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " D09BZ01S01[Cell14] " , player )
or state . has ( " D09BZ01S01[Cell15] " , player )
) )
set_rule ( world . get_location ( " WotHP: Upper west room, center gold cell " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell16] " , player ) )
2023-05-18 11:40:00 +00:00
set_rule ( world . get_location ( " WotHP: Lower west room, bottom gold cell " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " D09BZ01S01[Cell21] " , player )
and state . has ( " Blood Perpetuated in Sand " , player )
and can_climb_on_root ( state , player )
and can_survive_poison ( state , logic , player , 2 )
and state . has ( " Dash Ability " , player )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " WotHP: Lower east room, top silver cell " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : state . has ( " D09BZ01S01[Cell10] " , player ) )
set_rule ( world . get_location ( " WotHP: Lower east room, bottom silver cell " , player ) ,
lambda state : (
state . has ( " D09BZ01S01[Cell11] " , player )
and (
can_survive_poison ( state , logic , player , 1 )
and state . has ( " Dash Ability " , player )
or state . has_any ( { " Debla of the Lights " , " Taranto to my Sister " , " Cante Jondo of the Three Sisters " , " Verdiales of the Forsaken Hamlet " , " Cantina of the Blue Rose " } , player )
or aubade ( state , player )
)
) )
# Doors
set_rule ( world . get_entrance ( " D09BZ01S01[Cell2] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell3] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell3] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell2] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell4] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell5] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell5] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell5] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell12] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell13] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell13] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell12] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell14] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell15] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell15] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell14] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell17] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell18] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell19] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell20] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell20] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell19] " , player ) )
set_rule ( world . get_entrance ( " D09BZ01S01[Cell23] " , player ) ,
lambda state : state . has ( " D09BZ01S01[Cell22] " , player ) )
add_rule ( world . get_entrance ( " D09BZ01S01[Cell23] " , player ) ,
lambda state : state . has ( " Key of the Secular " , player ) )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D17Z01S01 (Brotherhood of the Silent Sorrow)
set_rule ( world . get_location ( " BotSS: Starting room ledge " , player ) ,
lambda state : state . has ( " D17Z01S01[Cherubs3] " , player ) )
set_rule ( world . get_location ( " BotSS: Starting room Child of Moonlight " , player ) ,
lambda state : (
state . has ( " D17Z01S01[Cherubs1] " , player )
or state . has ( " Taranto to my Sister " , player )
or (
can_climb_on_root ( state , player )
or can_cross_gap ( state , logic , player , 9 )
)
and (
state . has_any ( { " Blood Perpetuated in Sand " , " Purified Hand of the Nun " , " Debla of the Lights " , " Verdiales of the Forsaken Hamlet " , " Cloistered Ruby " } , player )
or tirana ( state , player )
)
) )
2023-02-24 06:33:09 +00:00
2023-07-06 04:39:26 +00:00
# D17Z01S02 (Brotherhood of the Silent Sorrow)
# No items
# Doors
set_rule ( world . get_entrance ( " D17Z01S02[W] " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
set_rule ( world . get_entrance ( " D17Z01S02[E] " , player ) ,
lambda state : (
state . has ( " D17Z01S02[N] " , player )
or state . has ( " Dash Ability " , player )
) )
set_rule ( world . get_entrance ( " D17Z01S02[N] " , player ) ,
lambda state : (
state . has ( " Blood Perpetuated in Sand " , player )
and (
state . has ( " D17Z01S02[E] " , player )
or state . has ( " D17Z01S02[W] " , player )
and state . has ( " Dash Ability " , player )
)
) )
# D17Z01S03 (Brotherhood of the Silent Sorrow)
# No items
# Doors
set_rule ( world . get_entrance ( " D17Z01S03[relic] " , player ) ,
lambda state : state . has ( " Key to the Chamber of the Eldest Brother " , player ) )
# D17Z01S04 (Brotherhood of the Silent Sorrow)
# Items
if world . boots_of_pleading [ player ] :
set_rule ( world . get_location ( " BotSS: 2nd meeting with Redento " , player ) ,
lambda state : redento ( state , blasphemousworld , player , 2 ) )
# Doors
set_rule ( world . get_entrance ( " D17Z01S04[N] " , player ) ,
lambda state : state . has ( " D17Z01S04[FrontR] " , player ) )
set_rule ( world . get_entrance ( " D17Z01S04[FrontR] " , player ) ,
lambda state : state . has ( " D17Z01S04[N] " , player ) )
# Event
set_rule ( world . get_location ( " OpenedBOTSSLadder " , player ) ,
lambda state : opened_botss_ladder ( state , player ) )
# D17Z01S05 (Brotherhood of the Silent Sorrow)
# No items
# Doors
set_rule ( world . get_entrance ( " D17Z01S05[S] " , player ) ,
lambda state : state . has ( " OpenedBOTSSLadder " , player ) )
# D17Z01S10 (Brotherhood of the Silent Sorrow)
# No items
# Doors
set_rule ( world . get_entrance ( " D17Z01S10[W] " , player ) ,
lambda state : state . has_any ( { " Blood Perpetuated in Sand " , " Purified Hand of the Nun " } , player ) )
# D17Z01S11 (Brotherhood of the Silent Sorrow)
# Items
set_rule ( world . get_location ( " BotSS: Warden of the Silent Sorrow " , player ) ,
lambda state : can_beat_boss ( state , " Brotherhood " , logic , player ) )
# Doors
set_rule ( world . get_entrance ( " D17Z01S11[W] " , player ) ,
lambda state : can_beat_boss ( state , " Brotherhood " , logic , player ) )
set_rule ( world . get_entrance ( " D17Z01S11[E] " , player ) ,
lambda state : can_beat_boss ( state , " Brotherhood " , logic , player ) )
# D17Z01S14 (Brotherhood of the Silent Sorrow)
# Items
set_rule ( world . get_location ( " BotSS: Outside church " , player ) ,
lambda state : (
state . has ( " D17Z01S14[W] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
) )
# Doors
set_rule ( world . get_entrance ( " D17Z01S14[W] " , player ) ,
lambda state : (
state . has ( " Incomplete Scapular " , player )
and state . has ( " Blood Perpetuated in Sand " , player )
) )
set_rule ( world . get_entrance ( " D17Z01S14[E] " , player ) ,
lambda state : state . has ( " Blood Perpetuated in Sand " , player ) )
set_rule ( world . get_entrance ( " D17Z01S14[-Cherubs1] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D17Z01S14[W] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
or can_cross_gap ( state , logic , player , 11 )
)
) )
set_rule ( world . get_entrance ( " D17Z01S14[-Cherubs2] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D17Z01S14[E] " , player )
and can_cross_gap ( state , logic , player , 8 )
or state . has ( " D17Z01S14[W] " , player )
and can_cross_gap ( state , logic , player , 10 )
or state . has ( " Blood Perpetuated in Sand " , player )
)
) )
set_rule ( world . get_entrance ( " D17Z01S14[-Cherubs3] " , player ) ,
lambda state : (
state . has ( " Linen of Golden Thread " , player )
and (
state . has ( " D17Z01S14[E] " , player )
or state . has ( " Blood Perpetuated in Sand " , player )
)
) )
# D17Z01S15 (Brotherhood of the Silent Sorrow)
# Items
set_rule ( world . get_location ( " BotSS: Esdras ' final gift " , player ) ,
lambda state : (
can_beat_boss ( state , " Bridge " , logic , player )
and state . has_group ( " wounds " , player , 3 )
) )
set_rule ( world . get_location ( " BotSS: Crisanta ' s gift " , player ) ,
lambda state : (
can_beat_boss ( state , " Rooftops " , logic , player )
and state . has ( " Apodictic Heart of Mea Culpa " , player )
) )
# No doors
# D17BZ02S01 (Brotherhood of the Silent Sorrow - Platforming challenge)
# Items
set_rule ( world . get_location ( " BotSS: Platforming gauntlet " , player ) ,
lambda state : (
2023-09-30 19:03:55 +00:00
#state.has("D17BZ02S01[FrontR]", player) or
# TODO: actually fix this once door rando is real
state . has_all ( { " Dash Ability " , " Wall Climb Ability " } , player )
2023-07-06 04:39:26 +00:00
) )
# Doors
set_rule ( world . get_entrance ( " D17BZ02S01[FrontR] " , player ) ,
lambda state : state . has_all ( { " Dash Ability " , " Wall Climb Ability " } , player ) )
# D20Z01S04 (Echoes of Salt)
# No items
# Doors
set_rule ( world . get_entrance ( " D20Z01S04[E] " , player ) ,
lambda state : state . has ( " OpenedDCGateW " , player ) )
# D20Z01S09 (Echoes of Salt)
# Items
set_rule ( world . get_location ( " EoS: Lantern jump near elevator " , player ) ,
lambda state : (
state . has ( " D20Z01S09[W] " , player )
or state . has ( " Dash Ability " , player )
) )
# Doors
set_rule ( world . get_entrance ( " D20Z01S09[W] " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
set_rule ( world . get_entrance ( " D20Z01S09[E] " , player ) ,
lambda state : state . has_all ( { " Blood Perpetuated in Sand " , " Dash Ability " } , player ) )
# D20Z01S10 (Echoes of Salt)
# No items
# Doors
set_rule ( world . get_entrance ( " D20Z01S10[W] " , player ) ,
lambda state : state . has_all ( { " Blood Perpetuated in Sand " , " Dash Ability " } , player ) )
set_rule ( world . get_entrance ( " D20Z01S10[E] " , player ) ,
lambda state : state . has_all ( { " Blood Perpetuated in Sand " , " Dash Ability " } , player ) )
# D20Z02S03 (Mourning and Havoc)
# No items
# Doors
set_rule ( world . get_entrance ( " D20Z02S03[NE] " , player ) ,
lambda state : (
can_walk_on_root ( state , player )
or can_cross_gap ( state , logic , player , 5 )
) )
# D20Z02S04 (Mourning and Havoc)
# No items
# Doors
set_rule ( world . get_entrance ( " D20Z02S04[W] " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
set_rule ( world . get_entrance ( " D20Z02S04[E] " , player ) ,
lambda state : state . has ( " Dash Ability " , player ) )
# D20Z02S05 (Mourning and Havoc)
# No items
# Doors
set_rule ( world . get_entrance ( " D20Z02S05[NW] " , player ) ,
lambda state : (
state . has ( " Nail Uprooted from Dirt " , player )
or can_cross_gap ( state , logic , player , 3 )
) )
# D20Z02S06 (Mourning and Havoc)
# No items
# Doors
set_rule ( world . get_entrance ( " D20Z02S06[NW] " , player ) ,
lambda state : (
state . has ( " D20Z02S06[NE] " , player )
or state . has ( " Purified Hand of the Nun " , player )
or can_climb_on_root ( state , player )
or can_dive_laser ( state , logic , player )
) )
set_rule ( world . get_entrance ( " D20Z02S06[NE] " , player ) ,
lambda state : (
state . has ( " D20Z02S06[NW] " , player )
or state . has ( " Purified Hand of the Nun " , player )
or can_climb_on_root ( state , player )
or can_dive_laser ( state , logic , player )
) )
# D20Z02S08 (Mourning and Havoc)
# Items
set_rule ( world . get_location ( " MaH: Sierpes " , player ) ,
lambda state : can_beat_boss ( state , " Mourning " , logic , player ) )
set_rule ( world . get_location ( " MaH: Sierpes ' eye " , player ) ,
lambda state : can_beat_boss ( state , " Mourning " , logic , player ) )
# No doors
# D20Z02S11 (Mourning and Havoc)
# No items
# Doors
set_rule ( world . get_entrance ( " D20Z02S11[NW] " , player ) ,
lambda state : state . has ( " D20Z02S11[E] " , player ) )
set_rule ( world . get_entrance ( " D20Z02S11[NW] " , player ) ,
lambda state : (
mourning_skips_allowed ( logic )
and (
state . has ( " Purified Hand of the Nun " , player )
or can_break_tirana ( state , logic , player )
or state . has ( " D20Z02S11[E] " , player )
)
) )
set_rule ( world . get_entrance ( " D20Z02S11[E] " , player ) ,
lambda state : (
mourning_skips_allowed ( logic )
and (
state . has ( " Purified Hand of the Nun " , player )
or can_break_tirana ( state , logic , player )
or state . has ( " D20Z02S11[NW] " , player )
and can_cross_gap ( state , logic , player , 5 )
)
) )
# Misc Items
set_rule ( world . get_location ( " Second red candle " , player ) ,
lambda state : (
state . has ( " Bead of Red Wax " , player )
and (
state . can_reach ( world . get_region ( " D02Z03S06 " , player ) , player )
or state . has ( " D05Z01S02[W] " , player )
)
) )
set_rule ( world . get_location ( " Third red candle " , player ) ,
lambda state : (
state . has ( " Bead of Red Wax " , player )
and state . has ( " D05Z01S02[W] " , player )
and state . can_reach ( world . get_region ( " D02Z03S06 " , player ) , player )
) )
set_rule ( world . get_location ( " Second blue candle " , player ) ,
lambda state : (
state . has ( " Bead of Blue Wax " , player )
and (
state . has ( " OpenedBOTSSLadder " , player )
or state . can_reach ( world . get_region ( " D01Z04S16 " , player ) , player )
)
) )
set_rule ( world . get_location ( " Third blue candle " , player ) ,
lambda state : (
state . has ( " Bead of Blue Wax " , player )
and state . has ( " OpenedBOTSSLadder " , player )
and state . can_reach ( world . get_region ( " D01Z04S16 " , player ) , player )
) )
set_rule ( world . get_location ( " Defeat 1 Amanecida " , player ) ,
lambda state : amanecida_rooms ( state , logic , player , 1 ) )
set_rule ( world . get_location ( " Defeat 2 Amanecidas " , player ) ,
lambda state : amanecida_rooms ( state , logic , player , 2 ) )
set_rule ( world . get_location ( " Defeat 3 Amanecidas " , player ) ,
lambda state : amanecida_rooms ( state , logic , player , 3 ) )
set_rule ( world . get_location ( " Defeat 4 Amanecidas " , player ) ,
lambda state : amanecida_rooms ( state , logic , player , 4 ) )
set_rule ( world . get_location ( " Defeat all Amanecidas " , player ) ,
lambda state : amanecida_rooms ( state , logic , player , 4 ) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Confessor Dungeon 1 main " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 1 )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Confessor Dungeon 2 main " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 2 )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Confessor Dungeon 3 main " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 3 )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Confessor Dungeon 4 main " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 4 )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Confessor Dungeon 5 main " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 5 )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Confessor Dungeon 6 main " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 6 )
) )
2023-02-24 06:33:09 +00:00
set_rule ( world . get_location ( " Confessor Dungeon 7 main " , player ) ,
2023-07-06 04:39:26 +00:00
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 7 )
) )
set_rule ( world . get_location ( " Confessor Dungeon 1 extra " , player ) ,
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 1 )
) )
set_rule ( world . get_location ( " Confessor Dungeon 2 extra " , player ) ,
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 2 )
) )
set_rule ( world . get_location ( " Confessor Dungeon 3 extra " , player ) ,
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 3 )
) )
set_rule ( world . get_location ( " Confessor Dungeon 4 extra " , player ) ,
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 4 )
) )
set_rule ( world . get_location ( " Confessor Dungeon 5 extra " , player ) ,
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 5 )
) )
set_rule ( world . get_location ( " Confessor Dungeon 6 extra " , player ) ,
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 6 )
) )
set_rule ( world . get_location ( " Confessor Dungeon 7 extra " , player ) ,
lambda state : (
state . has ( " Weight of True Guilt " , player )
and guilt_rooms ( state , player , 7 )
) )
set_rule ( world . get_location ( " Skill 1, Tier 1 " , player ) ,
lambda state : sword_rooms ( state , player , 1 ) )
set_rule ( world . get_location ( " Skill 1, Tier 2 " , player ) ,
lambda state : sword_rooms ( state , player , 2 ) )
set_rule ( world . get_location ( " Skill 1, Tier 3 " , player ) ,
lambda state : sword_rooms ( state , player , 4 ) )
set_rule ( world . get_location ( " Skill 2, Tier 1 " , player ) ,
lambda state : sword_rooms ( state , player , 1 ) )
set_rule ( world . get_location ( " Skill 2, Tier 2 " , player ) ,
lambda state : sword_rooms ( state , player , 3 ) )
set_rule ( world . get_location ( " Skill 2, Tier 3 " , player ) ,
lambda state : sword_rooms ( state , player , 6 ) )
set_rule ( world . get_location ( " Skill 3, Tier 1 " , player ) ,
lambda state : sword_rooms ( state , player , 2 ) )
set_rule ( world . get_location ( " Skill 3, Tier 2 " , player ) ,
lambda state : sword_rooms ( state , player , 5 ) )
set_rule ( world . get_location ( " Skill 3, Tier 3 " , player ) ,
lambda state : sword_rooms ( state , player , 7 ) )
set_rule ( world . get_location ( " Skill 4, Tier 1 " , player ) ,
lambda state : sword_rooms ( state , player , 1 ) )
set_rule ( world . get_location ( " Skill 4, Tier 2 " , player ) ,
lambda state : sword_rooms ( state , player , 3 ) )
set_rule ( world . get_location ( " Skill 4, Tier 3 " , player ) ,
lambda state : sword_rooms ( state , player , 6 ) )
set_rule ( world . get_location ( " Skill 5, Tier 1 " , player ) ,
lambda state : sword_rooms ( state , player , 1 ) )
set_rule ( world . get_location ( " Skill 5, Tier 2 " , player ) ,
lambda state : sword_rooms ( state , player , 2 ) )
set_rule ( world . get_location ( " Skill 5, Tier 3 " , player ) ,
lambda state : sword_rooms ( state , player , 4 ) )