bigtwisty

WellMaster

Apr 17th, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. local r = require( "robot" )
  2. local term = require( "term" )
  3. local event = require( "event" )
  4. local computer = require( "computer" )
  5. local sides = require( "sides" )
  6.  
  7. local well = 1
  8. local pwr = 2
  9. local charger = 3
  10. local dirt = 4
  11. local waste = 5
  12.  
  13. local chunksWide = 1
  14. local chunksDeep = 1
  15.  
  16. local maxEnergy = computer.maxEnergy() * 0.9
  17. local minEnergy = maxEnergy * 0.1
  18.  
  19. local swingFunc = { [sides.forward] = r.swing, [sides.up] = r.swingUp, [sides.down] = r.swingDown }
  20. local moveFunc = { [sides.forward] = r.forward, [sides.up] = r.up, [sides.down] = r.down }
  21. local detectFunc = { [sides.forward] = r.detect, [sides.up] = r.detectUp, [sides.down] = r.detectDown }
  22. local placeFunc = { [sides.forward] = r.place, [sides.up] = r.placeUp, [sides.down] = r.placeDown }
  23.  
  24. local phase =
  25. {
  26. turn =
  27. {
  28. r.turnRight,
  29. r.turnRight,
  30. r.turnLeft,
  31. r.turnLeft
  32. },
  33. steps =
  34. {
  35. chunksDeep * 16, 1, chunksDeep * 16, 1
  36. }
  37. }
  38.  
  39. local function dig( slot, side )
  40. if side == nil then side = sides.forward end
  41. if slot ~= nil then r.select( slot ) end
  42. if detectFunc[side]() then swingFunc[side]() end
  43. end
  44.  
  45. local function place( slot, side )
  46. if side == nil then side = sides.forward end
  47. dig( waste, side )
  48. r.select( slot )
  49. placeFunc[side]()
  50. end
  51.  
  52. local function move( side )
  53. if side == nil then side = sides.forward end
  54. dig( waste, side )
  55. a, b = moveFunc[side]()
  56. if a == nil then
  57. print( "Move failed: "..b )
  58. end
  59. end
  60.  
  61. local function loadSlot( str )
  62. print( "Shift click "..str )
  63. event.pull( "inventory_changed" )
  64. end
  65.  
  66. term.clear()
  67. term.setCursor( 1, 1 )
  68. print( "WellMaster (1.0)\n" )
  69. loadSlot( "pickaxe then mining well" )
  70. loadSlot( "dimensional transceiver" )
  71. loadSlot( "charger")
  72. loadSlot( "dirt stack" )
  73.  
  74. print( "Mining!!!" )
  75.  
  76. for x = 1, chunksWide * 8 do
  77. for p = 1, 4 do
  78. for i = 1, phase.steps[p] do
  79. r.select( dirt )
  80. r.placeDown()
  81. place( well )
  82. move( sides.up )
  83. place( pwr )
  84. if computer.energy() < minEnergy then
  85. move( sides.up )
  86. place( charger )
  87. while computer.energy() < maxEnergy() do os.sleep( 1 ) end
  88. dig( charger )
  89. move( sides.down )
  90. else
  91. os.sleep( 10 )
  92. end
  93. dig( pwr )
  94. move( sides.down )
  95. dig( well )
  96. move( sides.forward )
  97. end
  98. phase.turn[p]()
  99. end
  100. end
Advertisement
Add Comment
Please, Sign In to add comment