Advertisement
Guest User

forcefield generator suggested edits

a guest
May 13th, 2014
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 7.64 KB | None | 0 0
  1. --- poopforcefield.lua  2014-05-13 20:31:25 +0300
  2. +++ element-forcefield.lua  2014-05-13 20:26:36 +0300
  3. @@ -1,74 +1,123 @@
  4. -local ESMD = elements.allocate("ESMD", "FFGE")
  5. -elements.element(elements.ESMD_PT_FFGE, elements.element(tpt.element("INSL")))
  6. -elements.property(elements.ESMD_PT_FFGE, "Name", "FFGE")
  7. -elements.property(elements.ESMD_PT_FFGE, "Description", "Force field generator.")
  8. -elements.property(elements.ESMD_PT_FFGE, "MenuVisible", 1)
  9. -elements.property(elements.ESMD_PT_FFGE, "MenuSection", 2)
  10. -elements.property(elements.ESMD_PT_FFGE, "Advection", 0)
  11. -elements.property(elements.ESMD_PT_FFGE, "AirDrag", 0.01)
  12. -elements.property(elements.ESMD_PT_FFGE, "AirLoss", 0)
  13. -elements.property(elements.ESMD_PT_FFGE, "Loss", 0)
  14. -elements.property(elements.ESMD_PT_FFGE, "Collision", 0)
  15. -elements.property(elements.ESMD_PT_FFGE, "Gravity", 0)
  16. -elements.property(elements.ESMD_PT_FFGE, "Diffusion", 0)
  17. -elements.property(elements.ESMD_PT_FFGE, "Falldown", 2)
  18. -elements.property(elements.ESMD_PT_FFGE, "Flammable", 0)
  19. -elements.property(elements.ESMD_PT_FFGE, "Temperature", -200+273.15)
  20. -elements.property(elements.ESMD_PT_FFGE, "Hardness", 0)
  21. -elements.property(elements.ESMD_PT_FFGE, "HeatConduct", 0)
  22. -elements.property(elements.ESMD_PT_FFGE, "Properties", TYPE_SOLID)
  23. -elements.property(elements.ESMD_PT_FFGE, "Colour", 0xFF591B69)
  24. -local angle =0
  25. +-- Force field generator element for TPT.
  26. +-- by http://tpt.io/@electronic_steve
  27. +-- modifications and rearrangements though
  28. +
  29. +
  30. +local FFGE = elem.allocate("ESMD", "FFGE")
  31. +local FOFI = elem.allocate("ESMD", "FOFI")
  32. +local FSPW = elem.allocate("ESMD", "FSPW")
  33. +
  34. + elem.element(FFGE, elem.element(elem.DEFAULT_PT_INSL))
  35. +elem.property(FFGE, "Name",        "FFGE")
  36. +elem.property(FFGE, "Description", "Force field generator.")
  37. +elem.property(FFGE, "MenuVisible", 1)
  38. +elem.property(FFGE, "MenuSection", 2)
  39. +elem.property(FFGE, "Advection",   0)
  40. +elem.property(FFGE, "AirDrag",     0.01)
  41. +elem.property(FFGE, "AirLoss",     0)
  42. +elem.property(FFGE, "Loss",        0)
  43. +elem.property(FFGE, "Collision",   0)
  44. +elem.property(FFGE, "Gravity",     0)
  45. +elem.property(FFGE, "Diffusion",   0)
  46. +elem.property(FFGE, "Falldown",    2)
  47. +elem.property(FFGE, "Flammable",   0)
  48. +elem.property(FFGE, "Temperature", 73.15)
  49. +elem.property(FFGE, "Hardness",    0)
  50. +elem.property(FFGE, "HeatConduct", 0)
  51. +elem.property(FFGE, "Properties",  elem.TYPE_SOLID)
  52. +elem.property(FFGE, "Colour",      0xFF591B69)
  53. +
  54. +
  55. +local angle = 0
  56.  local function ForceFieldGeneratorFunction(i, x, y, s, n)
  57. -local generatortemp= math.floor(tpt.get_property("temp",i))
  58. -local goforce = 1
  59. -if goforce == 1 and tpt.get_property("type", x+(math.random(-3,3)),y+(math.random(-3,3))) == 15 then goforce = 2
  60. -end
  61. -if goforce==2 then goforce = 1
  62. -if angle>=360 then angle=0 end
  63. -local   z=360
  64. -for angle=0,z do
  65. -local x2=x+( generatortemp*(math.cos(angle/2)))
  66. -local y2=y+( generatortemp*(math.sin(angle/2)))
  67. -if x2<0 or x>611 or y2<0 or y2>383 then else
  68. -tpt.create(x2, y2,tpt.element("fspw"))
  69. -end
  70. -end
  71. -end
  72. -end
  73. -tpt.element_func(ForceFieldGeneratorFunction,tpt.element('FFGE'))
  74. -local ESMD = elements.allocate("ESMD", "FSPW")
  75. -elements.element(elements.ESMD_PT_FSPW, elements.element(tpt.element("QRTZ")))
  76. -elements.property(elements.ESMD_PT_FSPW, "Name", "FSPW")
  77. -elements.property(elements.ESMD_PT_FSPW, "Description", "Force Field Spawner")
  78. -elements.property(elements.ESMD_PT_FSPW, "MenuVisible", 0)
  79. -elements.property(elements.ESMD_PT_FSPW, "MenuSection", 0)
  80. -elements.property(elements.ESMD_PT_FSPW, "Properties", TYPE_SOLID)
  81. -elements.property(elements.ESMD_PT_FSPW, "HighPressure", 999999)
  82. -elements.property(elements.ESMD_PT_FSPW, "Colour", 0xFF127BC1)
  83. -local ESMD = elements.allocate("ESMD", "FOFI")
  84. -elements.element(elements.ESMD_PT_FOFI, elements.element(tpt.element("DMND")))
  85. -elements.property(elements.ESMD_PT_FOFI, "Name", "FOFI")
  86. -elements.property(elements.ESMD_PT_FOFI, "Description", "Force field")
  87. -elements.property(elements.ESMD_PT_FOFI, "MenuVisible", 0)
  88. -elements.property(elements.ESMD_PT_FOFI, "MenuSection", 0)
  89. -elements.property(elements.ESMD_PT_FOFI, "Properties", TYPE_SOLID)
  90. -elements.property(elements.ESMD_PT_FOFI, "HighPressure", 999999)
  91. -elements.property(elements.ESMD_PT_FOFI, "Colour", 0xFF127BC1)
  92. +  local generatortemp = math.floor(tpt.get_property("temp",i))
  93. +
  94. +  local goforce = 1
  95. +  if goforce == 1 and tpt.get_property("type",
  96. +        x+(math.random(-3,3)),
  97. +        y+(math.random(-3,3))) == 15 then
  98. +    goforce = 2
  99. +  end
  100. +
  101. +  if goforce==2 then
  102. +    goforce = 1
  103. +    if angle>=360 then
  104. +      angle=0
  105. +    end
  106. +    -- create a circle of FSPW around the particle, with range generatortemp
  107. +    for angle=0,360 do
  108. +      local x2 = x + generatortemp * math.cos(angle/2)
  109. +      local y2 = y + generatortemp * math.sin(angle/2)
  110. +      if not (x2 < 0 or x > 611 or y2 < 0 or y2 > 383) then
  111. +        tpt.create(x2, y2,tpt.element("fspw"))
  112. +      end
  113. +    end
  114. +
  115. +  end
  116. +end
  117. +tpt.element_func(ForceFieldGeneratorFunction, FFGE)
  118. +
  119. +--
  120. +-- Forcefield Spawner
  121. +--
  122. +
  123. + elem.element(FSPW, elem.element(tpt.element("QRTZ")))
  124. +elem.property(FSPW, "Name", "FSPW")
  125. +elem.property(FSPW, "Description", "Force Field Spawner")
  126. +elem.property(FSPW, "MenuVisible", 0)
  127. +elem.property(FSPW, "MenuSection", 0)
  128. +elem.property(FSPW, "Properties", TYPE_SOLID)
  129. +elem.property(FSPW, "HighPressure", 999999)
  130. +elem.property(FSPW, "Colour", 0xFF127BC1)
  131. +
  132.  local function ForceFieldSpawner(i, x, y, s, n)
  133. -if math.random(1,50000) == 2500 then tpt.delete(x,y) end
  134. -local RX = x+(math.random(-3,3))
  135. -local RY = y+(math.random(-3,3))
  136. -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
  137. -if  tpt.get_property("type", RX,RY) == tpt.element('FOFI')  then else tpt.delete(RX,RY)  end
  138. -end
  139. -tpt.element_func(ForceFieldSpawner,tpt.element('FSPW'))
  140. +  if math.random(1,50000) == 2500 then
  141. +    tpt.delete(x,y)
  142. +  end
  143. +  local RX = x + math.random(-3,3)
  144. +  local RY = y + math.random(-3,3)
  145. +  if math.random(1,50) == 1 then
  146. +    sim.createLine(x + math.random(-3,3),
  147. +                   y + math.random(-3,3),
  148. +                   x + math.random(-3,3),
  149. +                   y + math.random(-3,3),
  150. +                   0,0,tpt.element('FOFI'))
  151. +  end
  152. +  if tpt.get_property("type", RX,RY) ~= FOFI then
  153. +    tpt.delete(RX,RY)
  154. +  end
  155. +end
  156. +tpt.element_func(ForceFieldSpawner,FSPW)
  157. +
  158. +--
  159. +-- Force field particle
  160. +--
  161. +
  162. + elem.element(FOFI, elem.element(elem.DEFAULT_PT_DMND))
  163. +elem.property(FOFI, "Name", "FOFI")
  164. +elem.property(FOFI, "Description", "Force field")
  165. +elem.property(FOFI, "MenuVisible", 0)
  166. +elem.property(FOFI, "MenuSection", 0)
  167. +elem.property(FOFI, "Properties", elem.TYPE_SOLID)
  168. +elem.property(FOFI, "Colour", 0xFF127BC1)
  169. +
  170.  local function ForceFieldDelete(i, x, y, s, n)
  171. -if  tpt.get_property("type", RX,RY) == tpt.element('FOFI')  then else tpt.delete(RX,RY)  end
  172. -if math.random(1,20) == 1 then tpt.delete(x,y) end
  173. -end
  174. -tpt.element_func(ForceFieldDelete,tpt.element('FOFI'))
  175. - local function glow(i, colr, colg, colb)
  176. -return 1,0x0000008,255,122,153,181,255,122,153,181
  177. +  if tpt.get_property("type", RX,RY) ~= FOFI then
  178. +    tpt.delete(RX,RY)
  179. +  end
  180. +
  181. +  if math.random(1,20) == 1 then
  182. +    tpt.delete(x,y)
  183. +  end
  184. +end
  185. +tpt.element_func(ForceFieldDelete, FOFI)
  186. +
  187. +--
  188. +-- Set pixel mode to PMODE_GLOW = 8
  189. +-- among color things (cached)
  190. +--
  191. +
  192. +local function glowfunc(i, colr, colg, colb)
  193. +  return 1,8,255, 122,153,181, 255,122,153,181
  194.  end
  195. -tpt.graphics_func(glow,tpt.element('FOFI'))
  196. \ No newline at end of file
  197. +tpt.graphics_func(glowfunc, FOFI)
  198. \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement