z_mirror/Krastorio2

git clone https://git.raiguard.me/z_mirror/Krastorio2

Caleb Wishartfix: support space platform built and mine entity (#440)dcf364ab

santichu95/patch-1
2.3 KiB85 linesraw
1local flib_migration = require("__flib__.migration")
2
3local function ensure_turret_force()
4  if not game.forces["kr-internal-turrets"] then
5    game.create_force("kr-internal-turrets")
6  end
7end
8
9local migrations = {}
10
11migrations.on_init = ensure_turret_force
12
13function migrations.on_configuration_changed(e)
14  if flib_migration.on_config_changed(e, migrations.versions) then
15    ensure_turret_force()
16  end
17end
18
19migrations.events = {
20  [defines.events.on_technology_effects_reset] = function(e)
21    if game.finished or game.finished_but_continuing then
22      e.force.technologies["kr-logo"].enabled = true
23    end
24  end,
25}
26
27migrations.versions = {
28  ["1.3.0"] = function()
29    if game.finished or game.finished_but_continuing then
30      for _, force in pairs(game.forces) do
31        force.technologies["kr-logo"].enabled = true
32      end
33    end
34  end,
35  ["1.3.8"] = function()
36    -- Clean up any invalid roboport GUIs
37    local new = {}
38    for player_index, player_gui in pairs(storage.roboport_guis) do
39      if player_gui.valid then
40        new[player_index] = player_gui
41      end
42    end
43    storage.roboport_guis = new
44  end,
45  ["1.3.10"] = function()
46    -- Clean up any orphaned internal entities
47    local valid_unit_numbers = {}
48    for _, data in pairs(storage.tesla_coil.towers) do
49      for _, entity in pairs(data.entities) do
50        if entity.valid then
51          valid_unit_numbers[entity.unit_number or 0] = true
52        end
53      end
54    end
55    --- @diagnostic disable-next-line
56    for _, data in pairs(storage.planetary_teleporter.data) do
57      for _, entity in pairs(data.entities) do
58        if entity.valid then
59          valid_unit_numbers[entity.unit_number or 0] = true
60        end
61      end
62    end
63    for _, surface in pairs(game.surfaces) do
64      for _, entity in
65        pairs(surface.find_entities_filtered({
66          name = {
67            "kr-planetary-teleporter-turret",
68            "kr-planetary-teleporter-front-layer",
69            "kr-planetary-teleporter-collision-1",
70            "kr-planetary-teleporter-collision-2",
71            "kr-planetary-teleporter-collision-3",
72            "kr-tesla-coil-turret",
73            "kr-tesla-coil-collision",
74          },
75        }))
76      do
77        if entity.valid and not valid_unit_numbers[entity.unit_number] then
78          entity.destroy()
79        end
80      end
81    end
82  end,
83}
84
85return migrations