Landstalker: Fix paths Lantern logic affecting other Landstalker worlds (#4394)
The data from `WORLD_PATHS_JSON` is supposed to be constant logic data shared by all Landstalker worlds, but `add_path_requirements()` was modifying this data such that after adding a `Lantern` requirement for a dark region, subsequent Landstalker worlds to have their logic set could also be affected by this `Lantern` requirement and previous Landstalker worlds without damage boosting logic could also be affected by this `Lantern` requirement because they could all be using the same list instances. This issue would only occur for paths that have `"requiredItems"` because all paths without required items would create a new empty list, avoiding the problem. The items in `data["itemsPlacedWhenCrossing"]` were also getting added once for each Landstalker player, but there are no paths that have both `"itemsPlacedWhenCrossing"` and `"requiredItems"`, so all such cases would start from a new empty list of required items and avoid modifying `WORLD_PATHS_JSON`.
This commit is contained in:
		
							parent
							
								
									5578ccd578
								
							
						
					
					
						commit
						6c1dc5f645
					
				| 
						 | 
				
			
			@ -37,7 +37,8 @@ def add_path_requirements(world: "LandstalkerWorld"):
 | 
			
		|||
        name = data["fromId"] + " -> " + data["toId"]
 | 
			
		||||
 | 
			
		||||
        # Determine required items to reach this region
 | 
			
		||||
        required_items = data["requiredItems"] if "requiredItems" in data else []
 | 
			
		||||
        # WORLD_PATHS_JSON is shared by all Landstalker worlds, so a copy is made to prevent modifying the original
 | 
			
		||||
        required_items = data["requiredItems"].copy() if "requiredItems" in data else []
 | 
			
		||||
        if "itemsPlacedWhenCrossing" in data:
 | 
			
		||||
            required_items += data["itemsPlacedWhenCrossing"]
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue