View difference between Paste ID: xPBUXLqK and Myz4MDiS
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()<=45000 then
145+
if reactor.getHotFluidAmount()<=10000 then
146-
    reactor.setAllControlRodLevels(0)
146+
    reactor.setAllControlRodLevels(0+(math.floor(reactor.getHotFluidAmount()/50000)))
147
148
elseif reactor.getHotFluidAmount()>=45000
149
	reactor.setAllControlRodLevels(100)
150
end
151
152
if (reactor.getFuelAmount()<=100) and offlineflag==0 then
153
    reactor.setAllControlRodLevels(100)
154
    reactor.setActive(false)
155
    emptyflag=1
156
else
157
    emptyflag=0
158
end
159
160
if rs.getInput('bottom')==false and emptyflag==0 then
161
    reactor.setActive(true)
162
    offlineflag=0
163
end
164
165
if rs.getInput('bottom')==true and emptyflag==0 then
166
    reactor.setActive(false)
167
    reactor.setAllControlRodLevels(100)
168
    offlineflag=1
169
end    
170
sleep(1)
171
end