Advertisement
Ulthean

api_digTunnels

Jan 12th, 2013
12,025
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.01 KB | None | 0 0
  1. -- VALUES FOR THE DIRECTIONS
  2. local up = "up"
  3. local down = "down"
  4. local forward = "forward"
  5. local back  = "back"
  6. local right = "right"
  7. local left = "left"
  8.  
  9. -- LOAD FUNCTIONS FROM THE OTHER FILES
  10. os.loadAPI("api_sharedFunctions")
  11. os.loadAPI("api_turtleExt")
  12.  
  13. -- --------------------------------------------- --
  14. -- START OF THE FUNCTIONS SPECIFIC TO digTunnels --
  15. -- --------------------------------------------- --
  16.  
  17. -- DIGS A SEGMENT (FROM ONE SHAFT TO THE NEXT) DIGGING OUT THE SIDES ASWELL
  18. function digSegmentAndSides(configuration, slices)
  19.   local torchOffset=0
  20.   if ((configuration.currentL % 2 == 0) and (configuration.currentS == 0)) then
  21.     torchOffset=configuration.evenLevelOffset
  22.   end
  23.   api_turtleExt.digAndMove(forward, 1, 0)
  24.   api_turtleExt.digAndMove(down, 1, 0)
  25.   for i=1, slices do
  26.     if i~=1 then
  27.       api_turtleExt.digAndMove(forward, 1, 0)
  28.     end
  29.     api_turtleExt.turnTo(left)
  30.     api_turtleExt.dig(up)
  31.     api_turtleExt.dig(down)
  32.     api_turtleExt.digAndMove(forward, 1, 0)
  33.     api_turtleExt.dig(down)
  34.     api_turtleExt.dig(forward)
  35.     api_turtleExt.digAndMove(up, 1, 0)
  36.     api_turtleExt.dig(forward)
  37.     if configuration.placeTorches and ((i+torchOffset) % (configuration.blocksBetweenShafts+1) == math.floor((configuration.blocksBetweenShafts+1)/2)) then
  38.       api_turtleExt.place(forward, 1)
  39.     end
  40.     if configuration.height == 3 then
  41.       api_turtleExt.digAndMove(up, 1, 0)
  42.       api_turtleExt.dig(forward)
  43.     end
  44.     api_turtleExt.dig(up)
  45.     api_turtleExt.turnTo(back)
  46.     api_turtleExt.digAndMove(forward, 1, 0)
  47.     api_turtleExt.dig(up)
  48.     api_turtleExt.digAndMove(forward, 1, 0)
  49.     api_turtleExt.dig(up)
  50.     api_turtleExt.dig(forward)
  51.     if configuration.height == 3 then
  52.       api_turtleExt.digAndMove(down, 1, 0)
  53.       api_turtleExt.dig(forward)
  54.     end
  55.     api_turtleExt.digAndMove(down, 1, 0)
  56.     api_turtleExt.dig(forward)
  57.     api_turtleExt.dig(down)
  58.     if configuration.placeTorches and ((i+torchOffset) % (configuration.blocksBetweenShafts+1) == (configuration.blocksBetweenShafts+1)/2) then
  59.       api_turtleExt.digAndMove(up, 1, 0)
  60.       api_turtleExt.place(forward, 1)
  61.       api_turtleExt.digAndMove(down, 1, 0)
  62.     end
  63.     api_turtleExt.turnTo(back)
  64.     api_turtleExt.digAndMove(forward, 1, 0)
  65.     api_turtleExt.turnTo(right)
  66.   end
  67.   api_turtleExt.digAndMove(up, 1, 0)
  68.   configuration.currentS = configuration.currentS + 1
  69. end
  70.  
  71. -- DIGS A SEGMENT (FROM ONE SHAFT TO THE NEXT) LEAVING THE SIDES INTACT
  72. function digSegmentNoSides(configuration, slices)
  73.   api_turtleExt.digAndMove(forward, 1, 0)
  74.   api_turtleExt.digAndMove(left, 1, 0)
  75.   local dir = right
  76.   for i=1, slices do
  77.     if i~=1 then
  78.       api_turtleExt.digAndMove(forward, 1, 0)
  79.     end
  80.     api_turtleExt.turnTo(dir)
  81.     if configuration.height == 3 then
  82.       api_turtleExt.dig(up)
  83.     end
  84.     api_turtleExt.dig(down)
  85.     api_turtleExt.digAndMove(forward, 1, 0)
  86.     if configuration.height == 3 then
  87.       api_turtleExt.dig(up)
  88.     end
  89.     api_turtleExt.dig(down)
  90.     api_turtleExt.digAndMove(forward, 1, 0)
  91.     if configuration.height == 3 then
  92.       api_turtleExt.dig(up)
  93.     end
  94.     api_turtleExt.dig(down)
  95.     api_turtleExt.turnFrom(dir)
  96.     dir=api_turtleExt.reverseDir(dir)
  97.   end
  98.   api_turtleExt.turnTo(dir)
  99.   api_turtleExt.digAndMove(forward, 1, 0)
  100.   api_turtleExt.turnFrom(dir)
  101.   configuration.currentS = configuration.currentS + 1
  102.   if configuration.placeTorches then
  103.     api_turtleExt.place(down, 1)
  104.   end
  105. end
  106.  
  107. -- DIGS A SEGMENT (FROM ONE SHAFT TO THE NEXT)
  108. function digSegment(configuration)
  109.   local slices = api_sharedFunctions.calculateMoves(configuration, configuration.currentL, configuration.currentS, configuration.currentS+1)
  110.   if slices == 0 then
  111.     return
  112.   end
  113.   if configuration.digSidesToo then
  114.     digSegmentAndSides(configuration, slices)
  115.   else
  116.     digSegmentNoSides(configuration, slices)
  117.   end
  118. end
  119.  
  120. -- ------------------------------------------- --
  121. -- END OF THE FUNCTIONS SPECIFIC TO digTunnels --
  122. -- ------------------------------------------- --
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement