Fix up no logic entrance rules - create all the OWG transitions, but don't apply any logic
This commit is contained in:
		
							parent
							
								
									ca1740121e
								
							
						
					
					
						commit
						e15aad356a
					
				| 
						 | 
				
			
			@ -218,6 +218,24 @@ def get_invalid_bunny_revival_dungeons():
 | 
			
		|||
    yield 'Sanctuary'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def no_logic_rules(world, player):
 | 
			
		||||
    """
 | 
			
		||||
    Add OWG transitions to no logic player's world
 | 
			
		||||
    """
 | 
			
		||||
    create_no_logic_connections(player, world, get_boots_clip_exits_lw(world.mode[player] == 'inverted'))
 | 
			
		||||
    create_no_logic_connections(player, world, get_boots_clip_exits_dw(world.mode[player] == 'inverted', player))
 | 
			
		||||
 | 
			
		||||
    # Glitched speed drops.
 | 
			
		||||
    create_no_logic_connections(player, world, get_glitched_speed_drops_dw(world.mode[player] == 'inverted'))
 | 
			
		||||
 | 
			
		||||
    # Mirror clip spots.
 | 
			
		||||
    if world.mode[player] != 'inverted':
 | 
			
		||||
        create_no_logic_connections(player, world, get_mirror_clip_spots_dw())
 | 
			
		||||
        create_no_logic_connections(player, world, get_mirror_offset_spots_dw())
 | 
			
		||||
    else:
 | 
			
		||||
        create_no_logic_connections(player, world, get_mirror_offset_spots_lw(player))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def overworld_glitches_rules(world, player):
 | 
			
		||||
 | 
			
		||||
    # Boots-accessible locations.
 | 
			
		||||
| 
						 | 
				
			
			@ -257,6 +275,14 @@ def add_alternate_rule(entrance, rule):
 | 
			
		|||
    entrance.access_rule = lambda state: old_rule(state) or rule(state)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def create_no_logic_connections(player, world, connections):
 | 
			
		||||
    for entrance, parent_region, target_region, *rule_override in connections:
 | 
			
		||||
        parent = world.get_region(parent_region, player)
 | 
			
		||||
        target = world.get_region(target_region, player)
 | 
			
		||||
        connection = Entrance(player, entrance, parent)
 | 
			
		||||
        parent.exits.append(connection)
 | 
			
		||||
        connection.connect(target)
 | 
			
		||||
 | 
			
		||||
def create_owg_connections(player, world, connections, default_rule):
 | 
			
		||||
    for entrance, parent_region, target_region, *rule_override in connections:
 | 
			
		||||
        parent = world.get_region(parent_region, player)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								Rules.py
								
								
								
								
							
							
						
						
									
										3
									
								
								Rules.py
								
								
								
								
							| 
						 | 
				
			
			@ -3,7 +3,7 @@ import logging
 | 
			
		|||
import OverworldGlitchRules
 | 
			
		||||
from BaseClasses import RegionType, World, Entrance
 | 
			
		||||
from Items import ItemFactory
 | 
			
		||||
from OverworldGlitchRules import overworld_glitches_rules
 | 
			
		||||
from OverworldGlitchRules import overworld_glitches_rules, no_logic_rules
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def set_rules(world, player):
 | 
			
		||||
| 
						 | 
				
			
			@ -11,6 +11,7 @@ def set_rules(world, player):
 | 
			
		|||
    if world.logic[player] == 'nologic':
 | 
			
		||||
        logging.getLogger('').info('WARNING! Seeds generated under this logic often require major glitches and may be impossible!')
 | 
			
		||||
        world.get_region('Menu', player).can_reach_private = lambda state: True
 | 
			
		||||
        no_logic_rules(world, player)
 | 
			
		||||
        for exit in world.get_region('Menu', player).exits:
 | 
			
		||||
            exit.hide_path = True
 | 
			
		||||
        return
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue