2022-01-21 22:42:11 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  typing  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . . generic . Rules  import  add_rule  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . Regions  import  connect_regions  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-25 23:17:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  _has_trinket_range ( state , player , start , end )  - >  bool :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  i  in  range ( start , end ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( not  state . has ( " Trinket  "  +  str ( i + 1 ) . zfill ( 2 ) ,  player ) ) : 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-21 22:42:11 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            return  False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  True 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  set_rules ( world , player ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connect_regions ( world ,  player ,  " Menu " ,  " Laboratory " ,       lambda  state :  _has_trinket_range ( state , player , 0 , world . DoorCost [ player ] . value ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connect_regions ( world ,  player ,  " Menu " ,  " The Tower " ,        lambda  state :  _has_trinket_range ( state , player , world . DoorCost [ player ] . value , world . DoorCost [ player ] . value * 2 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connect_regions ( world ,  player ,  " Menu " ,  " Space Station 2 " ,  lambda  state :  _has_trinket_range ( state , player , world . DoorCost [ player ] . value * 2 , world . DoorCost [ player ] . value * 3 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connect_regions ( world ,  player ,  " Menu " ,  " Warp Zone " ,        lambda  state :  _has_trinket_range ( state , player , world . DoorCost [ player ] . value * 3 , world . DoorCost [ player ] . value * 4 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-23 13:10:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    #Special Rule for V 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_rule ( world . get_location ( " V " , player ) ,  lambda  state  :  state . can_reach ( " Laboratory " , ' Region ' , player )  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                            state . can_reach ( " The Tower " , ' Region ' , player )  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                            state . can_reach ( " Space Station 2 " , ' Region ' , player )  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                            state . can_reach ( " Warp Zone " , ' Region ' , player ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-21 22:42:11 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-25 23:17:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    #Special Rule for NPC Trinket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_rule ( world . get_location ( " NPC Trinket " , player ) ,  lambda  state :  state . can_reach ( " Laboratory " , ' Region ' , player )  or  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                                     state . can_reach ( " Space Station 2 " , ' Region ' , player ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-21 22:42:11 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    connect_regions ( world ,  player ,   " Laboratory " ,  " Menu " ,  lambda  state :  True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connect_regions ( world ,  player ,   " The Tower " ,  " Menu " ,  lambda  state :  True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connect_regions ( world ,  player ,   " Space Station 2 " ,  " Menu " ,  lambda  state :  True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    connect_regions ( world ,  player ,   " Warp Zone " ,  " Menu " ,  lambda  state :  True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-23 13:10:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    world . completion_condition [ player ]  =  lambda  state :  state . can_reach ( " V " , ' Location ' , player )