View difference between Paste ID: uwcsGdes and wivbrj8n
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
turbine = peripheral.wrap("BigReactors-Turbine_0")
13
reactor = peripheral.wrap("back")
14
monitor = peripheral.wrap("monitor_2")
15
16
monitor.setTextScale(1)
17
monitor.setBackgroundColor(colors.black)
18
19
--Functions
20
21
function wipeScreen()
22
   term.clear()
23
   term.setCursorPos(1, 1)
24
end
25
26
function delayPrint(pause,msg)
27
   print(msg)
28
   sleep(pause)
29
end
30
31
--Program
32
33
wipeScreen()
34
print("System Control Startup")
35
sleep(1)
36
while true do
37
 reactor.getConnected()
38
 
39
monitor.clear()
40
 monitor.setCursorPos(9,1)
41
 monitor.setTextColor(colors.white)
42
 monitor.write('Reactor System Monitor')
43
 monitor.setCursorPos(1,2)
44
 monitor.write('Fuel Level:')
45
 monitor.setCursorPos(1,3)
46
 monitor.setTextColor(colors.yellow)
47
 monitor.write(math.floor((((reactor.getFuelAmount())/(reactor.getFuelAmountMax()))*100)+0.5)..'% Fuel')
48
 monitor.setCursorPos(1,4)
49
 monitor.setTextColor(colors.lightBlue)
50
 monitor.write(math.floor((((reactor.getWasteAmount())/(reactor.getFuelAmountMax()))*100)+0.5)..'% Waste')
51
 
52
 monitor.setCursorPos(15,2)
53
monitor.setTextColor(colors.white)
54
monitor.write('Steam:')
55
monitor.setCursorPos(13,3)
56
monitor.setTextColor(colors.green)
57
monitor.write('Steam Pressure: '..reactor.getHotFluidAmount()..' mb')
58
59
if reactor.getHotFluidAmount()>=30000 and reactor.getHotFluidAmount()<20000 then
60
    monitor.setTextColor(colors.orange)
61
end
62
 
63
if reactor.getHotFluidAmount()>=40000 then
64
    monitor.setTextColor(colors.red)
65
end
66
67
 
68
 
69
 monitor.setCursorPos(1,6)
70
 monitor.setTextColor(colors.white)
71
  monitor.setTextColor(colors.white)
72
 monitor.write('Temperature:')
73
 monitor.setCursorPos(1,7)
74
  if reactor.getFuelTemperature()>=650 then
75
    monitor.setTextColor(colors.purple)
76
    else if reactor.getFuelTemperature()>=1000 then
77
        monitor.setTextColor(colors.red)
78
    else
79
        monitor.setTextColor(colors.green)
80
    end
81
 end
82
 monitor.write('Fuel: '..reactor.getFuelTemperature()..'C    Casing: '..reactor.getCasingTemperature()..'C')
83
 
84
 monitor.setCursorPos(1,9)
85
 monitor.setTextColor(colors.white)
86
 monitor.write('Control Rod Levels:')
87
 monitor.setTextColor(colors.green)
88
 monitor.setCursorPos(1,10)
89
 monitor.write('Rods  1-24:  '..(100-(reactor.getControlRodLevel(0)))..'%')
90
 
91
 monitor.setCursorPos(20,10)
92
 monitor.write('Rods   24-48:  '..(100-(reactor.getControlRodLevel(1)))..'%')
93
 
94
 monitor.setCursorPos(1,11)
95
 monitor.write('Rods 72-96:  '..(100-(reactor.getControlRodLevel(2)))..'%')
96
 
97
 monitor.setCursorPos(20,11)
98
 monitor.write('Rods 120-144:  '..(100-(reactor.getControlRodLevel(3)))..'%')
99
 
100
 monitor.setCursorPos(1,14)
101
 monitor.setTextColor(colors.white)
102
 monitor.write('Reactor Radioactivity')
103
 
104
 monitor.setCursorPos(24,14)
105
 monitor.write('Fuel Usage')
106
 
107
 monitor.setTextColor(colors.green)
108
 monitor.setCursorPos(1,15)
109
 monitor.write(''..reactor.getFuelReactivity()..'%')
110
 monitor.setCursorPos(24,15)
111
 monitor.write(''..reactor.getFuelConsumedLastTick()..' mb/t')
112
 
113
 monitor.setCursorPos(1,16)
114
monitor.setTextColor(colors.orange)
115
monitor.write('Status:')
116
 
117
if flashflag==0 then
118
  flashflag=1
119
  if offlineflag==1 then
120
    monitor.setCursorPos(1,17)
121
    monitor.setTextColor(colors.lightGray)
122
    monitor.write('OFFLINE - Manual Override')
123
  end
124
  if emptyflag==1 then
125
    monitor.setCursorPos(1,17)
126
    monitor.setTextColor(colors.pink)
127
    monitor.write('OFFLINE - Fuel Exhausted')
128
  end
129
  if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)>75 then
130
    monitor.setCursorPos(1,17)
131
    monitor.setTextColor(colors.yellow)
132
    monitor.write('ONLINE - Low Power Mode')
133
  end
134
  if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)<=75 then
135
    monitor.setCursorPos(1,17)
136
    monitor.setTextColor(colors.orange)
137
    monitor.write('ONLINE - High Power Mode')
138
  end
139
else
140
  flashflag=0
141
  monitor.setCursorPos(1,17)
142
  monitor.clearLine()
143
end
144
145-
if reactor.getHotFluidAmount()<=10000 then
145+
if reactor.getEnergyProducedLastTick<=5999 then
146-
    reactor.setAllControlRodLevels(0+(math.floor(reactor.getHotFluidAmount()/50000)))
146+
    reactor.setAllControlRodLevels(0+(math.floor(reactor.getEnergyProducedLastTick()/6000)))
147
148-
elseif reactor.getHotFluidAmount()>=45000 then
148+
elseif reactor.getEnergyProducedLastTick()>=6000 then
149
	reactor.setAllControlRodLevels(100)
150
else
151
	reactor.setAllControlRodLevels(0)
152
end
153
154
if (reactor.getFuelAmount()<=100) and offlineflag==0 then
155
    reactor.setAllControlRodLevels(100)
156
    reactor.setActive(false)
157
    emptyflag=1
158
else
159
    emptyflag=0
160
end
161
162
if rs.getInput('bottom')==false and emptyflag==0 then
163
    reactor.setActive(true)
164
    offlineflag=0
165
end
166
167
if rs.getInput('bottom')==true and emptyflag==0 then
168
    reactor.setActive(false)
169
    reactor.setAllControlRodLevels(100)
170
    offlineflag=1
171
end    
172
sleep(1)
173
end