Factorio: sync already cleared locations to local world
This commit is contained in:
		
							parent
							
								
									4b38cb4c2e
								
							
						
					
					
						commit
						cd8452d839
					
				| 
						 | 
					@ -109,6 +109,12 @@ class FactorioContext(CommonContext):
 | 
				
			||||||
            self.rcon_client.send_command(f"/ap-print [font=default-large-bold]Archipelago:[/font] "
 | 
					            self.rcon_client.send_command(f"/ap-print [font=default-large-bold]Archipelago:[/font] "
 | 
				
			||||||
                                          f"{text}")
 | 
					                                          f"{text}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def on_package(self, cmd: str, args: dict):
 | 
				
			||||||
 | 
					        if cmd == "Connected":
 | 
				
			||||||
 | 
					            # catch up sync anything that is already cleared.
 | 
				
			||||||
 | 
					            for tech in args["checked_locations"]:
 | 
				
			||||||
 | 
					                item_name = f"ap-{tech}-"
 | 
				
			||||||
 | 
					                self.rcon_client.send_command(f'/ap-get-technology {item_name}\t-1')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async def game_watcher(ctx: FactorioContext):
 | 
					async def game_watcher(ctx: FactorioContext):
 | 
				
			||||||
    bridge_logger = logging.getLogger("FactorioWatcher")
 | 
					    bridge_logger = logging.getLogger("FactorioWatcher")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -373,7 +373,15 @@ commands.add_command("ap-get-technology", "Grant a technology, used by the Archi
 | 
				
			||||||
    local item_name = chunks[1]
 | 
					    local item_name = chunks[1]
 | 
				
			||||||
    local index = chunks[2]
 | 
					    local index = chunks[2]
 | 
				
			||||||
    local source = chunks[3] or "Archipelago"
 | 
					    local source = chunks[3] or "Archipelago"
 | 
				
			||||||
    if progressive_technologies[item_name] ~= nil then
 | 
					    if index == -1 then -- for coop sync and restoring from an older savegame
 | 
				
			||||||
 | 
					        tech = force.technologies[item_name]
 | 
				
			||||||
 | 
					        if tech.researched ~= true then
 | 
				
			||||||
 | 
					            game.print({"", "Received [technology=" .. tech.name .. "] as it is already checked.")
 | 
				
			||||||
 | 
					            game.play_sound({path="utility/research_completed"})
 | 
				
			||||||
 | 
					            tech.researched = true
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					    elif progressive_technologies[item_name] ~= nil then
 | 
				
			||||||
        if global.index_sync[index] == nil then -- not yet received prog item
 | 
					        if global.index_sync[index] == nil then -- not yet received prog item
 | 
				
			||||||
            global.index_sync[index] = item_name
 | 
					            global.index_sync[index] = item_name
 | 
				
			||||||
            local tech_stack = progressive_technologies[item_name]
 | 
					            local tech_stack = progressive_technologies[item_name]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue