40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
from BaseClasses import MultiWorld
 | 
						|
from ..AutoWorld import LogicMixin
 | 
						|
from ..generic.Rules import set_rule
 | 
						|
 | 
						|
 | 
						|
class ArchipIDLELogic(LogicMixin):
 | 
						|
    def _archipidle_location_is_accessible(self, player_id, items_required):
 | 
						|
        items_received = 0
 | 
						|
        for item in self.prog_items:
 | 
						|
            if item[1] == player_id:
 | 
						|
                items_received += 1
 | 
						|
 | 
						|
        return items_received >= items_required
 | 
						|
 | 
						|
 | 
						|
def set_rules(world: MultiWorld, player: int):
 | 
						|
    for i in range(1, 16):
 | 
						|
        set_rule(
 | 
						|
            world.get_location(f"IDLE for {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
 | 
						|
            lambda state: state._archipidle_location_is_accessible(player, 0)
 | 
						|
        )
 | 
						|
 | 
						|
    for i in range(16, 31):
 | 
						|
        set_rule(
 | 
						|
            world.get_location(f"IDLE for {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
 | 
						|
            lambda state: state._archipidle_location_is_accessible(player, 4)
 | 
						|
        )
 | 
						|
 | 
						|
    for i in range(31, 51):
 | 
						|
        set_rule(
 | 
						|
            world.get_location(f"IDLE for {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
 | 
						|
            lambda state: state._archipidle_location_is_accessible(player, 10)
 | 
						|
        )
 | 
						|
 | 
						|
    for i in range(51, 101):
 | 
						|
        set_rule(
 | 
						|
            world.get_location(f"IDLE for {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
 | 
						|
            lambda state: state._archipidle_location_is_accessible(player, 20)
 | 
						|
        )
 |