Catch plando errors that will never resolve at mystery rolling time.
This commit is contained in:
		
							parent
							
								
									b7f41e8991
								
							
						
					
					
						commit
						bf5930e193
					
				
							
								
								
									
										13
									
								
								Mystery.py
								
								
								
								
							
							
						
						
									
										13
									
								
								Mystery.py
								
								
								
								
							| 
						 | 
				
			
			@ -18,6 +18,8 @@ from EntranceRandomizer import parse_arguments
 | 
			
		|||
from Main import main as ERmain
 | 
			
		||||
from Main import get_seed, seeddigits
 | 
			
		||||
from Items import item_name_groups, item_table
 | 
			
		||||
from Regions import location_table
 | 
			
		||||
from Text import TextTable
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def mystery_argparse():
 | 
			
		||||
| 
						 | 
				
			
			@ -559,17 +561,26 @@ def roll_settings(weights, plando_options: typing.Set[str] = frozenset(("bosses"
 | 
			
		|||
        for placement in options:
 | 
			
		||||
            if roll_percentage(get_choice("percentage", placement, 100)):
 | 
			
		||||
                item = get_choice("item", placement)
 | 
			
		||||
                if item not in item_table:
 | 
			
		||||
                    raise Exception(f"Could not plando item {item} as the item was not recognized")
 | 
			
		||||
                location = get_choice("location", placement)
 | 
			
		||||
                if location not in location_table:
 | 
			
		||||
                    raise Exception(f"Could not plando item {item} at location {location} as the location was not recognized")
 | 
			
		||||
                from_pool = get_choice("from_pool", placement, True)
 | 
			
		||||
                location_world = get_choice("world", placement, False)
 | 
			
		||||
                ret.plando_items.append(PlandoItem(item, location, location_world, from_pool))
 | 
			
		||||
 | 
			
		||||
    ret.plando_texts = {}
 | 
			
		||||
    if "texts" in plando_options:
 | 
			
		||||
        tt = TextTable()
 | 
			
		||||
        tt.removeUnwantedText()
 | 
			
		||||
        options = weights.get("plando_texts", [])
 | 
			
		||||
        for placement in options:
 | 
			
		||||
            if roll_percentage(get_choice("percentage", placement, 100)):
 | 
			
		||||
                ret.plando_texts[str(get_choice("at", placement))] = str(get_choice("text", placement))
 | 
			
		||||
                at = str(get_choice("at", placement))
 | 
			
		||||
                if at not in tt:
 | 
			
		||||
                    raise Exception(f"No text target \"{at}\" found.")
 | 
			
		||||
                ret.plando_texts[at] = str(get_choice("text", placement))
 | 
			
		||||
 | 
			
		||||
    ret.plando_connections = []
 | 
			
		||||
    if "connections" in plando_options:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue