Advertisement
BigBlow_

FusionLaserController

Jul 6th, 2025 (edited)
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.33 KB | None | 0 0
  1. -- Configuration
  2. local chargePower = 7           -- Signal strength required to cut power
  3. local shootPower = 8            -- Signal strength required to fire the laser
  4. local faceLaser = "top"         -- Face used to detect laser amplifier charge and to send fire pulse
  5. local facePower = "right"       -- Face used to cut/restore power
  6. local faceReset1 = "front"      -- Reset signal face 1
  7. local faceReset2 = "bottom"     -- Reset signal face 2
  8. local faceAlarm = "left"        -- Face to emit redstone when laser is firing
  9.  
  10. -- Initialization
  11. print("Initialising system...")
  12. redstone.setOutput(facePower, true)
  13. os.sleep(1)
  14. redstone.setOutput(facePower, false)
  15.  
  16. -- Variable to track if power has been cut
  17. local isPowered = false
  18.  
  19. -- Startup message
  20. print("Program starting...")
  21. print("Waiting for redstone signal on " .. faceLaser .. " to charge the Laser Amplifier")
  22.  
  23. -- Main loop
  24. while true do
  25.     -- Get redstone analog input from laser amplifier face
  26.     local signalPower = redstone.getAnalogInput(faceLaser)
  27.     print("Signal strength on " .. faceLaser .. ": " .. signalPower)
  28.  
  29.     if signalPower == shootPower then
  30.         -- If signal strength is equal to shootPower, fire the laser
  31.         redstone.setOutput(faceLaser, true)
  32.         redstone.setOutput(faceAlarm, true)
  33.         print("Laser Amplifier activated, firing!")
  34.         os.sleep(1)
  35.         redstone.setOutput(faceLaser, false)
  36.         redstone.setOutput(faceAlarm, false)
  37.  
  38.         -- Wait until signal drops to chargePower before cutting power
  39.         while true do
  40.             signalPower = redstone.getAnalogInput(faceLaser)
  41.             if signalPower == chargePower then
  42.                 redstone.setOutput(facePower, true)
  43.                 print("Laser Amplifier power cut.")
  44.                 isPowered = true
  45.                 break
  46.             end
  47.             os.sleep(0.1)
  48.         end
  49.  
  50.     else
  51.         os.sleep(0.1)
  52.     end
  53.  
  54.     -- Monitor reset signals
  55.     if redstone.getInput(faceReset1) or redstone.getInput(faceReset2) then
  56.         print("Reset signal received on " .. faceReset1 .. " or " .. faceReset2 .. ". Resetting the power...")
  57.  
  58.         if isPowered then
  59.             redstone.setOutput(facePower, false)
  60.             print("Laser Amplifier power restored.")
  61.             isPowered = false
  62.         end
  63.  
  64.         os.sleep(0.5)
  65.     end
  66. end
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement