diff --git a/FactorioClient.py b/FactorioClient.py index af321dbc..8d89e153 100644 --- a/FactorioClient.py +++ b/FactorioClient.py @@ -5,6 +5,8 @@ import json import string import copy import subprocess +import time + import factorio_rcon import colorama @@ -109,9 +111,11 @@ class FactorioContext(CommonContext): async def game_watcher(ctx: FactorioContext): bridge_logger = logging.getLogger("FactorioWatcher") from worlds.factorio.Technologies import lookup_id_to_name + last_bridge = time.perf_counter() try: while not ctx.exit_event.is_set(): - if ctx.awaiting_bridge and ctx.rcon_client: + if ctx.awaiting_bridge and ctx.rcon_client and time.perf_counter() + 1 < last_bridge: + last_bridge = time.perf_counter() ctx.awaiting_bridge = False data = json.loads(ctx.rcon_client.send_command("/ap-sync")) if data["slot_name"] != ctx.auth: @@ -135,7 +139,7 @@ async def game_watcher(ctx: FactorioContext): f"{[lookup_id_to_name[rid] for rid in research_data - ctx.locations_checked]}") ctx.locations_checked = research_data await ctx.send_msgs([{"cmd": 'LocationChecks', "locations": tuple(research_data)}]) - await asyncio.sleep(1) + await asyncio.sleep(0.1) except Exception as e: logging.exception(e) diff --git a/MultiServer.py b/MultiServer.py index 7c797094..3bf14524 100644 --- a/MultiServer.py +++ b/MultiServer.py @@ -915,7 +915,7 @@ class ClientMessageProcessor(CommonCommandProcessor): " You can ask the server admin for a /forfeit") return False - def _cmd_forfeit(self) -> bool: + def _cmd_collect(self) -> bool: """Send your remaining items to yourself""" if "enabled" in self.ctx.collect_mode: collect_player(self.ctx, self.client.team, self.client.slot) diff --git a/inno_setup_38.iss b/inno_setup_38.iss index 55f2c8d8..c0ec9c4b 100644 --- a/inno_setup_38.iss +++ b/inno_setup_38.iss @@ -74,7 +74,7 @@ Source: "{#sourcepath}\ArchipelagoServer.exe"; DestDir: "{app}"; Flags: ignoreve Source: "{#sourcepath}\ArchipelagoFactorioClient.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/factorio Source: "{#sourcepath}\ArchipelagoTextClient.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/text Source: "{#sourcepath}\ArchipelagoLttPClient.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/lttp -Source: "{#sourcepath}\ArchipelagoLttPAdjuster.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/lttp +Source: "{#sourcepath}\ArchipelagoLttPAdjuster.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/lttp or generator/lttp Source: "{#sourcepath}\ArchipelagoMinecraftClient.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: client/minecraft Source: "vc_redist.x64.exe"; DestDir: {tmp}; Flags: deleteafterinstall @@ -96,7 +96,7 @@ Name: "{commondesktop}\{#MyAppName} Factorio Client"; Filename: "{app}\Archipela [Run] Filename: "{tmp}\vc_redist.x64.exe"; Parameters: "/passive /norestart"; Check: IsVCRedist64BitNeeded; StatusMsg: "Installing VC++ redistributable..." -Filename: "{app}\ArchipelagoLttPAdjuster"; Parameters: "--update_sprites"; StatusMsg: "Updating Sprite Library..."; Components: client/lttp or generator +Filename: "{app}\ArchipelagoLttPAdjuster"; Parameters: "--update_sprites"; StatusMsg: "Updating Sprite Library..."; Components: client/lttp or generator/lttp Filename: "{app}\jre8\bin\java.exe"; Parameters: "-jar ""{app}\forge-installer.jar"" --installServer ""{app}\Minecraft Forge server"""; Flags: runhidden; Check: IsForgeNeeded(); StatusMsg: "Installing Forge Server..."; Components: client/minecraft [UninstallDelete] diff --git a/worlds/factorio/data/mod_template/control.lua b/worlds/factorio/data/mod_template/control.lua index ccc78222..1cd87c96 100644 --- a/worlds/factorio/data/mod_template/control.lua +++ b/worlds/factorio/data/mod_template/control.lua @@ -57,7 +57,6 @@ function on_force_created(event) local data = {} data['earned_samples'] = {{ dict_to_lua(starting_items) }} data["victory"] = 0 - data["checked_technologies"] = {} global.forcedata[event.force] = data {%- if silo == 2 %} check_spawn_silo(force) @@ -202,9 +201,7 @@ script.on_event(defines.events.on_research_finished, function(event) local technology = event.research if technology.researched and string.find(technology.name, "ap%-") == 1 then -- check if it came from the server anyway, then we don't need to double send. - if global.forcedata[technology.force.name]["checked_technologies"][technology.name] ~= nil then - dumpInfo(technology.force) --is sendable - end + dumpInfo(technology.force) --is sendable else if FREE_SAMPLES == 0 then return -- Nothing else to do @@ -393,7 +390,6 @@ commands.add_command("ap-get-technology", "Grant a technology, used by the Archi if index == -1 then -- for coop sync and restoring from an older savegame tech = force.technologies[item_name] if tech.researched ~= true then - global.forcedata[force.name]["checked_technologies"][tech.name] = 1 -- mark as don't send again game.print({"", "Received [technology=" .. tech.name .. "] as it is already checked."}) game.play_sound({path="utility/research_completed"}) tech.researched = true