View difference between Paste ID: LaTMpzZx and FUdbKAXD
SHOW: | | - or go back to the newest paste.
1
--Initialize Variables
2
3
local reactor
4
local monitor
5
local State
6
local Temp
7
local Fuel
8
local Waste
9
emptyflag=0
10
offlineflag=0
11
flashflag=0
12
local turbine1
13
local turbine2
14
local turbine3
15
turbine1 = peripheral.wrap("BigReactors-Turbine_1")
16
turbine2 = peripheral.wrap("BigReactors-Turbine_2")
17
turbine3 = peripheral.wrap("BigReactors-Turbine_3")
18
reactor = peripheral.wrap("back")
19
monitor = peripheral.wrap("monitor_2")
20
21
monitor.setTextScale(1)
22
monitor.setBackgroundColor(colors.black)
23
24
--Functions
25
26
function wipeScreen()
27
   term.clear()
28
   term.setCursorPos(1, 1)
29
end
30
31
function delayPrint(pause,msg)
32
   print(msg)
33
   sleep(pause)
34
end
35
36
--Program
37
38
wipeScreen()
39
print("System Control Startup")
40
sleep(1)
41
while true do
42
sleep(1)
43
 reactor.getConnected()
44
 
45
monitor.clear()
46
 monitor.setCursorPos(9,1)
47
 monitor.setTextColor(colors.white)
48
 monitor.write('Reactor System Monitor')
49
 monitor.setCursorPos(1,2)
50
 monitor.write('Fuel Level:')
51
 monitor.setCursorPos(1,3)
52
 monitor.setTextColor(colors.yellow)
53
 monitor.write(math.floor((((reactor.getFuelAmount())/(reactor.getFuelAmountMax()))*100)+0.5)..'% Fuel')
54
 monitor.setCursorPos(1,4)
55
 monitor.setTextColor(colors.lightBlue)
56
 monitor.write(math.floor((((reactor.getWasteAmount())/(reactor.getFuelAmountMax()))*100)+0.5)..'% Waste')
57
 
58
 monitor.setCursorPos(15,2)
59
monitor.setTextColor(colors.white)
60
monitor.write('Steam:')
61
monitor.setCursorPos(13,3)
62
monitor.setTextColor(colors.green)
63
64
65
if reactor.getHotFluidAmount()>=30000 and reactor.getHotFluidAmount()<20000 then
66
    monitor.setTextColor(colors.orange)
67
end
68
69
if reactor.getHotFluidAmount()>=40000 then
70
    monitor.setTextColor(colors.red)
71
end
72
73
monitor.write('Steam Pressure: '..reactor.getHotFluidAmount()..' mb')
74
75
monitor.setCursorPos(13,3)
76
monitor.write('       Outlet: '..reactor.getEnergyProducedLastTick()..' mb/t')
77
 
78
 
79
 monitor.setCursorPos(1,6)
80
 monitor.setTextColor(colors.white)
81
  monitor.setTextColor(colors.white)
82
 monitor.write('Temperature:')
83
 monitor.setCursorPos(1,7)
84
  if reactor.getFuelTemperature()>=650 then
85
    monitor.setTextColor(colors.purple)
86
    elseif reactor.getFuelTemperature()>=1000 then
87
        monitor.setTextColor(colors.red)
88
    else
89
        monitor.setTextColor(colors.green)
90
  end
91
	
92
 monitor.write('Fuel: '..reactor.getFuelTemperature()..'C   Casing: '..reactor.getCasingTemperature()..'C')
93
 
94
 
95
 monitor.setCursorPos(40,1)
96
 monitor.setTextColor(colors.white)
97
if (turbine1.getConnected()) then
98
 
99
100
 monitor.write('Turbine 1 Status')
101
 monitor.setCursorPos(40,2)
102
 if turbine1.getFluidFlowRate()>=1999 then
103
  monitor.setTextColor(colors.green)
104
  elseif turbine1.getFluidFlowRate()>=1500 then
105
   monitor.setTextColor(colors.orange)
106
  else
107
   monitor.setTextColor(colors.red)
108
 end
109
 
110
  monitor.write('Flow Rate: '..turbine1.getFluidFlowRate()..'mb/t')
111
  
112
monitor.setCursorPos(40,3)
113
if turbine1.getRotorSpeed()>=1700 and turbine1.getRotorSpeed()<=1900 then
114
 monitor.setTextColor(colors.green)  
115
 else
116
 monitor.setTextColor(colors.red)
117
end
118
 
119
 
120
monitor.write('Rotor Speed: '..turbine1.getRotorSpeed()..' rpm')
121
122
monitor.setCursorPos(40,4)
123
if turbine1.getEnergyProducedLastTick()>= 25000 then
124
 monitor.setTextColor(colors.green)
125
 else
126
 monitor.setTextColor(colors.red)
127
end
128
129
monitor.write('Generation: '..turbine1.getEnergyProducedLastTick()..' rf/t')
130
131
else
132
return nil
133
monitor.setTextColor(colors.red)
134
monitor.write('Turbine 1 Disconnected From SYS')
135
end
136
137
 monitor.setCursorPos(40,6)
138
 monitor.setTextColor(colors.white)
139
if (turbine2.getConnected()) then
140
  
141
 monitor.write('Turbine 2 Status')
142
 monitor.setCursorPos(40,7)
143
 if turbine2.getFluidFlowRate()>=1999 then
144
  monitor.setTextColor(colors.green)
145
  elseif turbine2.getFluidFlowRate()>=1500 then
146
   monitor.setTextColor(colors.orange)
147
  else
148
   monitor.setTextColor(colors.red)
149
 end
150
  monitor.write('Flow Rate: '..turbine2.getFluidFlowRate()..'mb/t')
151
  
152
monitor.setCursorPos(40,8)
153
if turbine2.getRotorSpeed()>=1700 and turbine2.getRotorSpeed()<=1900 then
154
 monitor.setTextColor(colors.green)  
155
 else
156
 monitor.setTextColor(colors.red)
157
end
158
 
159
monitor.write('Rotor Speed: '..turbine2.getRotorSpeed()..' rpm')
160
161
monitor.setCursorPos(40,9)
162
if turbine2.getEnergyProducedLastTick()>= 25000 then
163
 monitor.setTextColor(colors.green)
164
 else
165
 monitor.setTextColor(colors.red)
166
end
167
monitor.write('Generation: '..turbine2.getEnergyProducedLastTick()..' rf/t')
168
169
else
170
monitor.setTextColor(colors.red)
171
monitor.write('Turbine 2 Disconnected From SYS')
172
end
173
174
 monitor.setCursorPos(40,11)
175
 monitor.setTextColor(colors.white)
176
 
177
 if (turbine3.getConnected()) then
178
 
179
 monitor.write('Turbine 3 Status')
180
 monitor.setCursorPos(40,12)
181
 if turbine3.getFluidFlowRate()>=1999 then
182
  monitor.setTextColor(colors.green)
183
  elseif turbine3.getFluidFlowRate()>=1500 then
184
   monitor.setTextColor(colors.orange)
185
  else
186
   monitor.setTextColor(colors.red)
187
 end
188
  monitor.write('Flow Rate: '..turbine3.getFluidFlowRate()..'mb/t')
189
  
190
monitor.setCursorPos(40,13)
191
if turbine3.getRotorSpeed()>=1700 and turbine3.getRotorSpeed()<=1900 then
192
 monitor.setTextColor(colors.green)  
193
 else
194
 monitor.setTextColor(colors.red)
195
end
196
 
197
monitor.write('Rotor Speed: '..turbine3.getRotorSpeed()..' rpm')
198
199
monitor.setCursorPos(40,14)
200
if turbine3.getEnergyProducedLastTick()>= 25000 then
201
 monitor.setTextColor(colors.green)
202
 else
203
 monitor.setTextColor(colors.red)
204
end
205
monitor.write('Generation: '..turbine3.getEnergyProducedLastTick()..' rf/t')
206
207
else
208
 monitor.setTextColor(colors.red)
209
monitor.write('Turbine 3 Disconnected From SYS')
210
end
211
212
monitor.setCursorPos(40,16)
213
monitor.setTextColor(colors.white)
214
monitor.write('Capacitor Banks:')
215
216
if (turbine1.getConnected()) then
217
monitor.setCursorPos(40,17)
218
if turbine1.getEnergyStored()>=9900000 then
219
 monitor.setTextColor(colors.red)
220
 else
221
 monitor.setTextColor(colors.green)
222
end
223
monitor.write('Turbine 1: '..turbine1.getEnergyStored()..' RF')
224
else
225
return nil
226
end
227
228
if (turbine2.getConnected()) then
229
monitor.setCursorPos(40,18)
230
if turbine2.getEnergyStored()>=9900000 then
231
 monitor.setTextColor(colors.red)
232
 else
233
 monitor.setTextColor(colors.green)
234
end
235
monitor.write('Turbine 2: '..turbine2.getEnergyStored()..' RF')
236
end
237
238
if (turbine3.getConnected()) then
239
monitor.setCursorPos(40,19)
240
if turbine3.getEnergyStored()>=9900000 then
241
 monitor.setTextColor(colors.red)
242
 else
243
 monitor.setTextColor(colors.green)
244
end
245
monitor.write('Turbine 3: '..turbine3.getEnergyStored()..' RF')
246
end
247
 
248
 
249
 
250
 monitor.setCursorPos(1,9)
251
 monitor.setTextColor(colors.white)
252
 monitor.write('Control Rod Levels:')
253
 monitor.setTextColor(colors.green)
254
 monitor.setCursorPos(1,10)
255
 monitor.write('Rods  1-24:  '..(100-(reactor.getControlRodLevel(0)))..'%')
256
 
257
 monitor.setCursorPos(20,10)
258
 monitor.write('Rods   24-48:  '..(100-(reactor.getControlRodLevel(1)))..'%')
259
 
260
 monitor.setCursorPos(1,11)
261
 monitor.write('Rods 72-96:  '..(100-(reactor.getControlRodLevel(2)))..'%')
262
 
263
 monitor.setCursorPos(20,11)
264
 monitor.write('Rods 120-144:  '..(100-(reactor.getControlRodLevel(3)))..'%')
265
 
266
 monitor.setCursorPos(1,14)
267
 monitor.setTextColor(colors.white)
268
 monitor.write('Reactor Radioactivity')
269
 
270
 monitor.setCursorPos(24,14)
271
 monitor.write('Fuel Usage')
272
 
273
 monitor.setTextColor(colors.green)
274
 monitor.setCursorPos(1,15)
275
 monitor.write(''..reactor.getFuelReactivity()..'%')
276
 monitor.setCursorPos(24,15)
277
 monitor.write(''..reactor.getFuelConsumedLastTick()..' mb/t')
278
 
279
 monitor.setCursorPos(1,16)
280
monitor.setTextColor(colors.orange)
281
monitor.write('Status:')
282
 
283
if flashflag==0 then
284
  flashflag=1
285
  if offlineflag==1 then
286
    monitor.setCursorPos(1,17)
287
    monitor.setTextColor(colors.lightGray)
288
    monitor.write('OFFLINE - Manual Override')
289
  end
290
  if emptyflag==1 then
291
    monitor.setCursorPos(1,17)
292
    monitor.setTextColor(colors.pink)
293
    monitor.write('OFFLINE - Fuel Exhausted')
294
  end
295
  if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)>75 then
296
    monitor.setCursorPos(1,17)
297
    monitor.setTextColor(colors.yellow)
298
    monitor.write('ONLINE - Low Power Mode')
299
  end
300
  if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)<=75 then
301
    monitor.setCursorPos(1,17)
302
    monitor.setTextColor(colors.orange)
303
    monitor.write('ONLINE - High Power Mode')
304
  end
305
else
306
  flashflag=0
307
end
308
309
310
311
312
if reactor.getEnergyProducedLastTick()<=5999 then
313
    reactor.setAllControlRodLevels(0+(math.floor(reactor.getEnergyProducedLastTick()/6000)))
314
315
elseif reactor.getEnergyProducedLastTick()>=6000 then
316
	reactor.setAllControlRodLevels(100)
317
else
318
	reactor.setAllControlRodLevels(0)
319
end
320
321
if (reactor.getFuelAmount()<=100) and offlineflag==0 then
322
    reactor.setAllControlRodLevels(100)
323
    reactor.setActive(false)
324
    emptyflag=1
325
else
326
    emptyflag=0
327
end
328
329
if rs.getInput('bottom')==false and emptyflag==0 then
330
    reactor.setActive(true)
331
    offlineflag=0
332
end
333
334
if rs.getInput('bottom')==true and emptyflag==0 then
335
    reactor.setActive(false)
336
    reactor.setAllControlRodLevels(100)
337
    offlineflag=1
338
end    
339
sleep(0)
340
end