fixed crash

This commit is contained in:
mamoniot
2023-02-05 18:49:52 -05:00
parent f679f6b72f
commit 95833e68ee
2 changed files with 38 additions and 26 deletions

View File

@@ -13,7 +13,8 @@
"~/.steam/steam/steamapps/common/Factorio/data/core/lualib", "~/.steam/steam/steamapps/common/Factorio/data/core/lualib",
"./.vscode/factorio", "./.vscode/factorio",
"./.vscode/flib", "./.vscode/flib",
"/home/mami/.config/Code/User/workspaceStorage/fdae937c5189f993d370b36f3104188f/justarandomgeek.factoriomod-debug/sumneko-3rd/factorio/library" "/home/mami/.config/Code/User/workspaceStorage/fdae937c5189f993d370b36f3104188f/justarandomgeek.factoriomod-debug/sumneko-3rd/factorio/library",
"/home/mami/.config/Code/User/workspaceStorage/95c2a8450056100ba3db30ac2a468857/justarandomgeek.factoriomod-debug/sumneko-3rd/factorio/library"
], ],
"Lua.workspace.userThirdParty": [ "Lua.workspace.userThirdParty": [
"/home/mami/.config/Code/User/workspaceStorage/fdae937c5189f993d370b36f3104188f/justarandomgeek.factoriomod-debug/sumneko-3rd", "/home/mami/.config/Code/User/workspaceStorage/fdae937c5189f993d370b36f3104188f/justarandomgeek.factoriomod-debug/sumneko-3rd",
@@ -34,9 +35,9 @@
"Lua.runtime.special": { "Lua.runtime.special": {
"__object_name": "type" "__object_name": "type"
}, },
"Lua.runtime.plugin": "/home/mami/.config/Code/User/workspaceStorage/fdae937c5189f993d370b36f3104188f/justarandomgeek.factoriomod-debug/sumneko-3rd/factorio/plugin.lua", "Lua.runtime.plugin": "/home/mami/.config/Code/User/workspaceStorage/95c2a8450056100ba3db30ac2a468857/justarandomgeek.factoriomod-debug/sumneko-3rd/factorio/plugin.lua",
"Lua.diagnostics.disable": [ "Lua.diagnostics.disable": [
"lowercase-global" "lowercase-global"
], ],
"Lua.workspace.checkThirdParty": false "Lua.workspace.checkThirdParty": true
} }

View File

@@ -682,38 +682,49 @@ end
function tick_poll_entities(map_data, mod_settings) function tick_poll_entities(map_data, mod_settings)
local tick_data = map_data.tick_data local tick_data = map_data.tick_data
--NOTE: the following have undefined behaviour if the item on tick_data is deleted
if map_data.total_ticks%5 == 0 then if map_data.total_ticks%5 == 0 then
local train_id, train = next(map_data.trains, tick_data.last_train) if tick_data.last_train == nil or map_data.trains[tick_data.last_train] then
tick_data.last_train = train_id local train_id, train = next(map_data.trains, tick_data.last_train)
if train then tick_data.last_train = train_id
if train.manifest and not train.se_is_being_teleported and train.last_manifest_tick + mod_settings.stuck_train_time*mod_settings.tps < map_data.total_ticks then if train then
if mod_settings.stuck_train_alert_enabled then if train.manifest and not train.se_is_being_teleported and train.last_manifest_tick + mod_settings.stuck_train_time*mod_settings.tps < map_data.total_ticks then
send_alert_stuck_train(map_data, train.entity) if mod_settings.stuck_train_alert_enabled then
send_alert_stuck_train(map_data, train.entity)
end
interface_raise_train_stuck(train_id)
end end
interface_raise_train_stuck(train_id)
end end
else
tick_data.last_train = nil
end end
local refueler_id, _ = next(map_data.each_refuelers, tick_data.last_refueler) if tick_data.last_refueler == nil or map_data.each_refuelers[tick_data.last_refueler] then
tick_data.last_refueler = refueler_id local refueler_id, _ = next(map_data.each_refuelers, tick_data.last_refueler)
if refueler_id then tick_data.last_refueler = refueler_id
local refueler = map_data.refuelers[refueler_id] if refueler_id then
if refueler.entity_stop.valid and refueler.entity_comb.valid then local refueler = map_data.refuelers[refueler_id]
set_refueler_from_comb(map_data, mod_settings, refueler_id, refueler) if refueler.entity_stop.valid and refueler.entity_comb.valid then
else set_refueler_from_comb(map_data, mod_settings, refueler_id, refueler)
on_refueler_broken(map_data, refueler_id, refueler) else
on_refueler_broken(map_data, refueler_id, refueler)
end
end end
else
tick_data.last_refueler = nil
end end
else else
local comb_id, comb = next(map_data.to_comb, tick_data.last_comb) if tick_data.last_comb == nil or map_data.to_comb[tick_data.last_comb] then
tick_data.last_comb = comb_id local comb_id, comb = next(map_data.to_comb, tick_data.last_comb)
if comb then tick_data.last_comb = comb_id
if comb.valid then if comb then
combinator_update(map_data, comb, true) if comb.valid then
else combinator_update(map_data, comb, true)
map_data.to_comb[comb_id] = nil else
map_data.to_comb[comb_id] = nil
end
end end
else
tick_data.last_comb = nil
end end
end end
end end