Advertisement
electronic_steve

Force field generator

Apr 20th, 2014
422
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.22 KB | None | 0 0
  1. local ESMD = elements.allocate("ESMD", "FFGE")
  2. elements.element(elements.ESMD_PT_FFGE, elements.element(tpt.element("INSL")))
  3. elements.property(elements.ESMD_PT_FFGE, "Name", "FFGE")
  4. elements.property(elements.ESMD_PT_FFGE, "Description", "Force field generator.")
  5. elements.property(elements.ESMD_PT_FFGE, "MenuVisible", 1)
  6. elements.property(elements.ESMD_PT_FFGE, "MenuSection", 2)
  7. elements.property(elements.ESMD_PT_FFGE, "Advection", 0)
  8. elements.property(elements.ESMD_PT_FFGE, "AirDrag", 0.01)
  9. elements.property(elements.ESMD_PT_FFGE, "AirLoss", 0)
  10. elements.property(elements.ESMD_PT_FFGE, "Loss", 0)
  11. elements.property(elements.ESMD_PT_FFGE, "Collision", 0)
  12. elements.property(elements.ESMD_PT_FFGE, "Gravity", 0)
  13. elements.property(elements.ESMD_PT_FFGE, "Diffusion", 0)
  14. elements.property(elements.ESMD_PT_FFGE, "Falldown", 2)
  15. elements.property(elements.ESMD_PT_FFGE, "Flammable", 0)
  16. elements.property(elements.ESMD_PT_FFGE, "Temperature", 273.15)
  17. elements.property(elements.ESMD_PT_FFGE, "Hardness", 0)
  18. elements.property(elements.ESMD_PT_FFGE, "HeatConduct", 0)
  19. elements.property(elements.ESMD_PT_FFGE, "Properties", TYPE_SOLID)
  20. elements.property(elements.ESMD_PT_FFGE, "Colour", 0xFF591B69)
  21.  
  22. local function ForceFieldGeneratorFunction(i, x, y, s, n)
  23.  local generatortemp= math.floor(tpt.get_property("temp",i))
  24.  
  25.  
  26.  
  27. local goforce = false
  28. if tpt.get_property("type", x+(math.random(-3,3)),y+(math.random(-3,3))) == 15 then goforce = true
  29. end
  30.  
  31.  
  32. if goforce then goforce = false
  33. sim.createLine(x,y,x,y,generatortemp/4,generatortemp/4,tpt.element('FFLR'))
  34. sim.createLine(x,y,x,y,generatortemp/4+1,generatortemp/4+1,tpt.element('FSPW'))
  35. end
  36. end
  37.  
  38.  
  39. tpt.element_func(ForceFieldGeneratorFunction,tpt.element('FFGE'))
  40. local ESMD = elements.allocate("ESMD", "FFLR")
  41.  
  42. elements.property(elements.ESMD_PT_FFLR, "Name", "FFLR")
  43. elements.property(elements.ESMD_PT_FFLR, "Description", "Force Field filler")
  44. elements.property(elements.ESMD_PT_FFLR, "MenuVisible", 0)
  45. elements.property(elements.ESMD_PT_FFLR, "MenuSection", 0)
  46. elements.property(elements.ESMD_PT_FFLR, "Advection", 0)
  47. elements.property(elements.ESMD_PT_FFLR, "AirDrag", 0)
  48. elements.property(elements.ESMD_PT_FFLR, "AirLoss", 0)
  49. elements.property(elements.ESMD_PT_FFLR, "Loss", 0)
  50. elements.property(elements.ESMD_PT_FFLR, "Collision", 0)
  51. elements.property(elements.ESMD_PT_FFLR, "Gravity", 0)
  52. elements.property(elements.ESMD_PT_FFLR, "Diffusion", 0)
  53. elements.property(elements.ESMD_PT_FFLR, "Falldown", 0)
  54. elements.property(elements.ESMD_PT_FFLR, "Flammable", 0)
  55. elements.property(elements.ESMD_PT_FFLR, "Temperature", 0)
  56. elements.property(elements.ESMD_PT_FFLR, "Explosive", 0)
  57. elements.property(elements.ESMD_PT_FFLR, "Meltable", 0)
  58. elements.property(elements.ESMD_PT_FFLR, "Hardness", 0)
  59. elements.property(elements.ESMD_PT_FFLR, "Weight", 0)
  60. elements.property(elements.ESMD_PT_FFLR, "HeatConduct", 0)
  61. elements.property(elements.ESMD_PT_FFLR, "Properties", TYPE_SOLID)
  62. elements.property(elements.ESMD_PT_FFLR, "HighPressure", 0)
  63. elements.property(elements.ESMD_PT_FFLR, "Colour", 0xFF000000)
  64.  
  65. local update = 1
  66. local function ForceFiller(i, x, y, s, n)
  67.  
  68. update = update + 1
  69. if update >=5 then tpt.delete(x,y)
  70. end
  71. end
  72. tpt.element_func(ForceFiller,tpt.element('FFLR'))
  73.  
  74.  
  75.  
  76. local ESMD = elements.allocate("ESMD", "FSPW")
  77. elements.element(elements.ESMD_PT_FSPW, elements.element(tpt.element("QRTZ")))
  78. elements.property(elements.ESMD_PT_FSPW, "Name", "FSPW")
  79. elements.property(elements.ESMD_PT_FSPW, "Description", "Force Field Spawner")
  80. elements.property(elements.ESMD_PT_FSPW, "MenuVisible", 0)
  81. elements.property(elements.ESMD_PT_FSPW, "MenuSection", 0)
  82. elements.property(elements.ESMD_PT_FSPW, "Properties", TYPE_SOLID)
  83. elements.property(elements.ESMD_PT_FSPW, "HighPressure", 999999)
  84. elements.property(elements.ESMD_PT_FSPW, "Colour", 0xFF127BC1)
  85. local ESMD = elements.allocate("ESMD", "FOFI")
  86. elements.element(elements.ESMD_PT_FOFI, elements.element(tpt.element("DMND")))
  87. elements.property(elements.ESMD_PT_FOFI, "Name", "FOFI")
  88. elements.property(elements.ESMD_PT_FOFI, "Description", "Force field")
  89. elements.property(elements.ESMD_PT_FOFI, "MenuVisible", 0)
  90. elements.property(elements.ESMD_PT_FOFI, "MenuSection", 0)
  91. elements.property(elements.ESMD_PT_FOFI, "Properties", TYPE_SOLID)
  92. elements.property(elements.ESMD_PT_FOFI, "HighPressure", 999999)
  93. elements.property(elements.ESMD_PT_FOFI, "Colour", 0xFF127BC1)
  94.  
  95. local function ForceFieldSpawner(i, x, y, s, n)
  96. if math.random(1,50) == 1 then tpt.delete(x,y) end
  97. local RX = x+(math.random(-3,3))
  98. local RY = y+(math.random(-3,3))
  99. if math.random(1,50) == 1 then sim.createLine(x+math.random(-3,3),y+math.random(-3,3),x+math.random(-3,3),y+math.random(-3,3),0,0,tpt.element('FOFI')) end
  100. if  tpt.get_property("type", RX,RY) == tpt.element('FOFI')  then else tpt.delete(RX,RY)  end
  101. end
  102. tpt.element_func(ForceFieldSpawner,tpt.element('FSPW'))
  103.  
  104. local function ForceFieldDelete(i, x, y, s, n)
  105. if  tpt.get_property("type", RX,RY) == tpt.element('FOFI')  then else tpt.delete(RX,RY)  end
  106. if math.random(1,20) == 1 then tpt.delete(x,y) end
  107. end
  108. tpt.element_func(ForceFieldDelete,tpt.element('FOFI'))
  109.  
  110.  local function glow(i, colr, colg, colb)
  111. return 1,0x0000008,255,122,153,181,255,122,153,181
  112. end
  113. tpt.graphics_func(glow,tpt.element('FOFI'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement