Advertisement
ShinQdan

Arena

Apr 6th, 2020
521
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.43 KB | None | 0 0
  1. local term = require("term")
  2. local event = require("event")
  3. local text = require("text")
  4. local comp = require("component")
  5. local red = comp.redstone
  6. local gpu = comp.gpu
  7. local sides = require("sides")
  8. local colors = require("colors")
  9.  
  10. local resX, resY = gpu.getResolution()
  11.  
  12. local function init()
  13.   term.clear()
  14.   --gpu.setResolution(7,8)
  15. end
  16.  
  17. local function spawnMob(loc)
  18.   red.setBundledOutput(sides.bottom, {[colors.silver+loc-1] = 255}) --silver==lightgray
  19.   os.sleep(0.5)
  20.   red.setBundledOutput(sides.bottom, {[colors.silver+loc-1] = 0})
  21.   os.sleep(0.5)
  22. end
  23.  
  24. local function spawn(x)
  25.   term.clear()
  26.   print("Wave:\n"..x)
  27.   for i=1,3+x do
  28.     p = math.random(4)
  29.     spawnMob(p)
  30.   end
  31. end
  32.  
  33. local function checkMobs()
  34.   os.sleep(1)
  35.   red.setBundledOutput(sides.bottom, {[colors.orange] = 255})
  36.   os.sleep(1)
  37.   red.setBundledOutput(sides.bottom, {[colors.orange] = 0})
  38.   return red.getBundledInput(sides.bottom, colors.magenta) == 0
  39. end
  40.  
  41. local function checkPlayers()
  42.   os.sleep(1)
  43.   red.setBundledOutput(sides.bottom, {[colors.lightblue] = 255})
  44.   os.sleep(1)
  45.   red.setBundledOutput(sides.bottom, {[colors.lightblue] = 0})
  46.   return red.getBundledInput(sides.bottom, colors.yellow) == 0
  47. end
  48.  
  49. local function wave(x)
  50.   term.clear()
  51.   print("Next\nWave\n"..x)
  52.   if x>1 then
  53.     print("-------")
  54.     print("End")
  55.   end
  56.   _, _, xc, yc = event.pullMultiple("touch")
  57.   if yc<5 or x==1 then
  58.     red.setBundledOutput(sides.bottom, {[colors.gray] = 255})
  59.     spawn(x)
  60.     repeat until checkMobs() or checkPlayers()
  61.     return checkMobs() and not checkPlayers()
  62.   else
  63.     return false
  64.   end
  65. end
  66.  
  67. local function rewards(wave)
  68.   while not checkPlayers() do
  69.     term.clear()
  70.     print("Click\nto\nget\nrewards")
  71.     event.pullMultiple("touch")
  72.     red.setBundledOutput(sides.bottom, {[colors.lime] = 5+math.floor(wave/5)})
  73.     term.clear()
  74.     os.sleep(1)
  75.     red.setBundledOutput(sides.bottom, {[colors.lime] = 0})
  76.   end
  77. end
  78.  
  79. local function reset()
  80.     for i=0,3 do
  81.       red.setBundledOutput(sides.bottom, {[colors.pink] = 255})
  82.       os.sleep(1)
  83.       red.setBundledOutput(sides.bottom, {[colors.pink] = 0})
  84.       os.sleep(1)
  85.     end
  86.     red.setBundledOutput(sides.bottom, {[colors.gray] = 0})
  87. end
  88.  
  89. local function arena()
  90.   init()
  91.   i = 0
  92.   flag = true
  93.   while flag do
  94.     i = i+1
  95.     flag = wave(i)
  96.   end
  97.   rewards(i)
  98.   reset()
  99. end
  100.  
  101. while true do
  102.   arena()
  103. end
  104.  
  105. gpu.setResolution(resX, resY)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement