fusion-lab/control.lua

Wed, 27 Aug 2025 10:26:12 +0300

author
Teemu Piippo <teemu.s.piippo@gmail.com>
date
Wed, 27 Aug 2025 10:26:12 +0300
changeset 19
adbc5c74f279
parent 10
101603241531
permissions
-rw-r--r--

Lots of stuff

19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
1 ---@class FusionLabStorageData
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
2 ---@field heat_interface LuaEntity heat buffer shadowing this entity
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
3
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
4 ---@class FusionLabStorage
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
5 ---@field fusion_labs table<LuaEntity, FusionLabStorageData>?
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
6 storage = {}
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
7
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
8 ---@param heat_interface LuaEntity
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
9 local function init_heat_interface(heat_interface)
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
10 heat_interface.custom_status = {diode=defines.entity_status_diode.green, label={"entity-status.normal"}}
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
11 end
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
12
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
13 local function init_storage()
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
14 if storage.fusion_labs == nil
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
15 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
16 storage.fusion_labs = {}
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
17 local num_labs = 0
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
18 for _, surface in pairs(game.surfaces)
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
19 do
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
20 for _, lab in pairs(surface.find_entities_filtered{name="fusion-lab"})
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
21 do
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
22 if lab.valid
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
23 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
24 num_labs = num_labs + 1
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
25 local heat_interfaces = surface.find_entities_filtered{
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
26 name='fusion-lab-heat-interface',
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
27 position=lab.position,
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
28 limit = 1,
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
29 }
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
30 local heat_interface
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
31 if #heat_interfaces == 0
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
32 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
33 heat_interfaces = {lab.surface.create_entity{
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
34 name='fusion-lab-heat-interface',
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
35 position=lab.position,
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
36 force=lab.force,
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
37 }}
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
38 heat_interfaces[1].temperature = 15
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
39 heat_interfaces[1].destructible = false
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
40 heat_interfaces[1].active = false
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
41 init_heat_interface(heat_interfaces[1])
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
42 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
43 storage.fusion_labs[lab] = {
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
44 heat_interface = heat_interfaces[1],
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
45 }
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
46 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
47 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
48 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
49 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
50 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
51
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
52 local function cleanup_labs()
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
53 local new_storage_fusion_labs = {}
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
54 for lab, lab_info in pairs(storage.fusion_labs or {})
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
55 do
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
56 if lab.valid
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
57 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
58 new_storage_fusion_labs[lab] = lab_info
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
59 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
60 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
61 storage.fusion_labs = new_storage_fusion_labs
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
62 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
63
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
64 script.on_nth_tick(31, function(event)
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
65 init_storage()
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
66 local need_cleanup = false
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
67 for lab, lab_info in pairs(storage.fusion_labs or {})
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
68 do
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
69 if not lab.valid
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
70 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
71 need_cleanup = true
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
72 elseif lab.status == defines.entity_status.working
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
73 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
74 local heat_interface = lab_info.heat_interface
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
75
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
76 if not heat_interface.valid
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
77 then
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
78 -- (╯°□°)╯︵ ┻━┻
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
79 game.print("[Fusion lab] Heat interface data corrupt, rebuilding")
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
80 storage.fusion_labs = nil
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
81 init_storage()
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
82 return
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
83 end
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
84
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
85 lab.minable = (heat_interface.temperature <= 900)
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
86 -- A cryogenic plant cooling hot fluoroketone voids 1320kW
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
87 -- of heat energy, so the fusion lab with no modules just happens
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
88 -- to conveniently radiate exactly half of that energy rate.
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
89 --
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
90 -- The 0.341 here is 31/60*0.66 = 0.341 degrees of heat increase
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
91 -- every 31 ticks, for 0.66 ℃/sec. it's written out as 0.341 to
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
92 -- avoid potential floating point rounding errors.
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
93 heat_interface.temperature = heat_interface.temperature + (1 + lab.consumption_bonus) * 0.341
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
94 if heat_interface.temperature > 600
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
95 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
96 lab.surface.create_entity{
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
97 name = 'fusion-lab-smoke-source',
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
98 position={lab.position.x + 3.5 * (math.random() - 0.5), lab.position.y + 3.5 * (math.random() - 0.5)},
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
99 force=lab.force,
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
100 }
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
101 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
102 if heat_interface.temperature > 710.0
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
103 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
104 lab.surface.create_entity{
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
105 name = 'crash-site-fire-flame',
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
106 position={lab.position.x + 3.5 * (math.random() - 0.5), lab.position.y + 3.5 * (math.random() - 0.5)},
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
107 force=game.forces.neutral,
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
108 }
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
109 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
110 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
111 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
112 if need_cleanup
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
113 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
114 cleanup_labs()
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
115 end
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
116 for _, player in pairs(game.players)
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
117 do
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
118 if player.gui.relative.fusion_lab_gui and player.opened and player.opened.name == "fusion-lab"
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
119 then
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
120 for lab, lab_info in pairs(storage.fusion_labs)
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
121 do
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
122 if lab == player.opened
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
123 then
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
124 local heat_interface = lab_info.heat_interface
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
125 local gui = player.gui.relative.fusion_lab_gui
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
126 gui.heat.value = heat_interface.temperature / 700
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
127 gui.heat.caption = {"format-degrees", string.format("%.2f", heat_interface.temperature)}
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
128 end
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
129 end
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
130 end
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
131 end
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
132 end)
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
133
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
134 script.on_event(defines.events.on_entity_died, function(event)
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
135 local lab = event.entity
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
136 event.entity.force = game.forces.neutral
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
137 -- we can't rely on storage here; search for the heat interface on the map
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
138 local heat_interfaces = lab.surface.find_entities_filtered{
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
139 name = 'fusion-lab-heat-interface',
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
140 position = lab.position,
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
141 limit = 1,
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
142 }
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
143 if #heat_interfaces > 0
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
144 then
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
145 local heat_interface = heat_interfaces[1]
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
146 if heat_interface.temperature > 700
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
147 then
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
148 for _, ofs in pairs{
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
149 {0, 0},
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
150 {5, 0},
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
151 {-5, 0},
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
152 {0, 5},
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
153 {0, -5},
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
154 {1.5, 1.5},
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
155 {-1.5, 1.5},
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
156 {-1.5, -1.5},
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
157 {1.5, -1.5}}
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
158 do
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
159 local pos = {
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
160 x = lab.position.x + ofs[1],
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
161 y = lab.position.y + ofs[2]}
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
162 lab.surface.create_entity{
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
163 name = 'artillery-projectile',
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
164 position = pos,
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
165 target = pos,
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
166 force = game.forces.neutral,
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
167 cause = event.entity,
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
168 }
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
169 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
170 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
171 heat_interface.destroy()
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
172 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
173 end, {{filter="name", name="fusion-lab"}})
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
174
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
175 ---@param event EventData
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
176 local function on_fusion_lab_mined(event)
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
177 init_storage()
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
178 local entity = event.entity ---@type LuaEntity
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
179 for _, heat_interface in pairs(entity.surface.find_entities_filtered{
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
180 name='fusion-lab-heat-interface',
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
181 position = entity.position
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
182 })
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
183 do
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
184 heat_interface.destroy()
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
185 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
186 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
187
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
188 local function on_fusion_lab_built(event)
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
189 init_storage()
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
190 local lab = event.entity
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
191 heat_interface = lab.surface.create_entity{
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
192 name='fusion-lab-heat-interface',
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
193 position=lab.position,
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
194 force=lab.force,
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
195 }
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
196 heat_interface.temperature = 15
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
197 heat_interface.destructible = false
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
198 heat_interface.active = false
10
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
199 storage.fusion_labs[lab] = {heat_interface = heat_interface}
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
200 end
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
201
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
202 script.on_event(defines.events.on_player_mined_entity, on_fusion_lab_mined, {{filter="name", name="fusion-lab"}})
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
203 script.on_event(defines.events.on_robot_mined_entity, on_fusion_lab_mined, {{filter="name", name="fusion-lab"}})
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
204 script.on_event(defines.events.on_space_platform_mined_entity, on_fusion_lab_mined, {{filter="name", name="fusion-lab"}})
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
205 script.on_event(defines.events.on_built_entity, on_fusion_lab_built, {{filter="name", name="fusion-lab"}})
101603241531 Add fusion lab (currently v1.2.3)
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
diff changeset
206 script.on_event(defines.events.on_robot_built_entity, on_fusion_lab_built, {{filter="name", name="fusion-lab"}})
19
adbc5c74f279 Lots of stuff
Teemu Piippo <teemu.s.piippo@gmail.com>
parents: 10
diff changeset
207 script.on_event(defines.events.on_space_platform_built_entity, on_fusion_lab_built, {{filter="name", name="fusion-lab"}})

mercurial