Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- poopforcefield.lua 2014-05-13 20:31:25 +0300
- +++ element-forcefield.lua 2014-05-13 20:26:36 +0300
- @@ -1,74 +1,123 @@
- -local ESMD = elements.allocate("ESMD", "FFGE")
- -elements.element(elements.ESMD_PT_FFGE, elements.element(tpt.element("INSL")))
- -elements.property(elements.ESMD_PT_FFGE, "Name", "FFGE")
- -elements.property(elements.ESMD_PT_FFGE, "Description", "Force field generator.")
- -elements.property(elements.ESMD_PT_FFGE, "MenuVisible", 1)
- -elements.property(elements.ESMD_PT_FFGE, "MenuSection", 2)
- -elements.property(elements.ESMD_PT_FFGE, "Advection", 0)
- -elements.property(elements.ESMD_PT_FFGE, "AirDrag", 0.01)
- -elements.property(elements.ESMD_PT_FFGE, "AirLoss", 0)
- -elements.property(elements.ESMD_PT_FFGE, "Loss", 0)
- -elements.property(elements.ESMD_PT_FFGE, "Collision", 0)
- -elements.property(elements.ESMD_PT_FFGE, "Gravity", 0)
- -elements.property(elements.ESMD_PT_FFGE, "Diffusion", 0)
- -elements.property(elements.ESMD_PT_FFGE, "Falldown", 2)
- -elements.property(elements.ESMD_PT_FFGE, "Flammable", 0)
- -elements.property(elements.ESMD_PT_FFGE, "Temperature", -200+273.15)
- -elements.property(elements.ESMD_PT_FFGE, "Hardness", 0)
- -elements.property(elements.ESMD_PT_FFGE, "HeatConduct", 0)
- -elements.property(elements.ESMD_PT_FFGE, "Properties", TYPE_SOLID)
- -elements.property(elements.ESMD_PT_FFGE, "Colour", 0xFF591B69)
- -local angle =0
- +-- Force field generator element for TPT.
- +-- by http://tpt.io/@electronic_steve
- +-- modifications and rearrangements though
- +
- +
- +local FFGE = elem.allocate("ESMD", "FFGE")
- +local FOFI = elem.allocate("ESMD", "FOFI")
- +local FSPW = elem.allocate("ESMD", "FSPW")
- +
- + elem.element(FFGE, elem.element(elem.DEFAULT_PT_INSL))
- +elem.property(FFGE, "Name", "FFGE")
- +elem.property(FFGE, "Description", "Force field generator.")
- +elem.property(FFGE, "MenuVisible", 1)
- +elem.property(FFGE, "MenuSection", 2)
- +elem.property(FFGE, "Advection", 0)
- +elem.property(FFGE, "AirDrag", 0.01)
- +elem.property(FFGE, "AirLoss", 0)
- +elem.property(FFGE, "Loss", 0)
- +elem.property(FFGE, "Collision", 0)
- +elem.property(FFGE, "Gravity", 0)
- +elem.property(FFGE, "Diffusion", 0)
- +elem.property(FFGE, "Falldown", 2)
- +elem.property(FFGE, "Flammable", 0)
- +elem.property(FFGE, "Temperature", 73.15)
- +elem.property(FFGE, "Hardness", 0)
- +elem.property(FFGE, "HeatConduct", 0)
- +elem.property(FFGE, "Properties", elem.TYPE_SOLID)
- +elem.property(FFGE, "Colour", 0xFF591B69)
- +
- +
- +local angle = 0
- local function ForceFieldGeneratorFunction(i, x, y, s, n)
- -local generatortemp= math.floor(tpt.get_property("temp",i))
- -local goforce = 1
- -if goforce == 1 and tpt.get_property("type", x+(math.random(-3,3)),y+(math.random(-3,3))) == 15 then goforce = 2
- -end
- -if goforce==2 then goforce = 1
- -if angle>=360 then angle=0 end
- -local z=360
- -for angle=0,z do
- -local x2=x+( generatortemp*(math.cos(angle/2)))
- -local y2=y+( generatortemp*(math.sin(angle/2)))
- -if x2<0 or x>611 or y2<0 or y2>383 then else
- -tpt.create(x2, y2,tpt.element("fspw"))
- -end
- -end
- -end
- -end
- -tpt.element_func(ForceFieldGeneratorFunction,tpt.element('FFGE'))
- -local ESMD = elements.allocate("ESMD", "FSPW")
- -elements.element(elements.ESMD_PT_FSPW, elements.element(tpt.element("QRTZ")))
- -elements.property(elements.ESMD_PT_FSPW, "Name", "FSPW")
- -elements.property(elements.ESMD_PT_FSPW, "Description", "Force Field Spawner")
- -elements.property(elements.ESMD_PT_FSPW, "MenuVisible", 0)
- -elements.property(elements.ESMD_PT_FSPW, "MenuSection", 0)
- -elements.property(elements.ESMD_PT_FSPW, "Properties", TYPE_SOLID)
- -elements.property(elements.ESMD_PT_FSPW, "HighPressure", 999999)
- -elements.property(elements.ESMD_PT_FSPW, "Colour", 0xFF127BC1)
- -local ESMD = elements.allocate("ESMD", "FOFI")
- -elements.element(elements.ESMD_PT_FOFI, elements.element(tpt.element("DMND")))
- -elements.property(elements.ESMD_PT_FOFI, "Name", "FOFI")
- -elements.property(elements.ESMD_PT_FOFI, "Description", "Force field")
- -elements.property(elements.ESMD_PT_FOFI, "MenuVisible", 0)
- -elements.property(elements.ESMD_PT_FOFI, "MenuSection", 0)
- -elements.property(elements.ESMD_PT_FOFI, "Properties", TYPE_SOLID)
- -elements.property(elements.ESMD_PT_FOFI, "HighPressure", 999999)
- -elements.property(elements.ESMD_PT_FOFI, "Colour", 0xFF127BC1)
- + local generatortemp = math.floor(tpt.get_property("temp",i))
- +
- + local goforce = 1
- + if goforce == 1 and tpt.get_property("type",
- + x+(math.random(-3,3)),
- + y+(math.random(-3,3))) == 15 then
- + goforce = 2
- + end
- +
- + if goforce==2 then
- + goforce = 1
- + if angle>=360 then
- + angle=0
- + end
- + -- create a circle of FSPW around the particle, with range generatortemp
- + for angle=0,360 do
- + local x2 = x + generatortemp * math.cos(angle/2)
- + local y2 = y + generatortemp * math.sin(angle/2)
- + if not (x2 < 0 or x > 611 or y2 < 0 or y2 > 383) then
- + tpt.create(x2, y2,tpt.element("fspw"))
- + end
- + end
- +
- + end
- +end
- +tpt.element_func(ForceFieldGeneratorFunction, FFGE)
- +
- +--
- +-- Forcefield Spawner
- +--
- +
- + elem.element(FSPW, elem.element(tpt.element("QRTZ")))
- +elem.property(FSPW, "Name", "FSPW")
- +elem.property(FSPW, "Description", "Force Field Spawner")
- +elem.property(FSPW, "MenuVisible", 0)
- +elem.property(FSPW, "MenuSection", 0)
- +elem.property(FSPW, "Properties", TYPE_SOLID)
- +elem.property(FSPW, "HighPressure", 999999)
- +elem.property(FSPW, "Colour", 0xFF127BC1)
- +
- local function ForceFieldSpawner(i, x, y, s, n)
- -if math.random(1,50000) == 2500 then tpt.delete(x,y) end
- -local RX = x+(math.random(-3,3))
- -local RY = y+(math.random(-3,3))
- -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
- -if tpt.get_property("type", RX,RY) == tpt.element('FOFI') then else tpt.delete(RX,RY) end
- -end
- -tpt.element_func(ForceFieldSpawner,tpt.element('FSPW'))
- + if math.random(1,50000) == 2500 then
- + tpt.delete(x,y)
- + end
- + local RX = x + math.random(-3,3)
- + local RY = y + math.random(-3,3)
- + 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
- + if tpt.get_property("type", RX,RY) ~= FOFI then
- + tpt.delete(RX,RY)
- + end
- +end
- +tpt.element_func(ForceFieldSpawner,FSPW)
- +
- +--
- +-- Force field particle
- +--
- +
- + elem.element(FOFI, elem.element(elem.DEFAULT_PT_DMND))
- +elem.property(FOFI, "Name", "FOFI")
- +elem.property(FOFI, "Description", "Force field")
- +elem.property(FOFI, "MenuVisible", 0)
- +elem.property(FOFI, "MenuSection", 0)
- +elem.property(FOFI, "Properties", elem.TYPE_SOLID)
- +elem.property(FOFI, "Colour", 0xFF127BC1)
- +
- local function ForceFieldDelete(i, x, y, s, n)
- -if tpt.get_property("type", RX,RY) == tpt.element('FOFI') then else tpt.delete(RX,RY) end
- -if math.random(1,20) == 1 then tpt.delete(x,y) end
- -end
- -tpt.element_func(ForceFieldDelete,tpt.element('FOFI'))
- - local function glow(i, colr, colg, colb)
- -return 1,0x0000008,255,122,153,181,255,122,153,181
- + if tpt.get_property("type", RX,RY) ~= FOFI then
- + tpt.delete(RX,RY)
- + end
- +
- + if math.random(1,20) == 1 then
- + tpt.delete(x,y)
- + end
- +end
- +tpt.element_func(ForceFieldDelete, FOFI)
- +
- +--
- +-- Set pixel mode to PMODE_GLOW = 8
- +-- among color things (cached)
- +--
- +
- +local function glowfunc(i, colr, colg, colb)
- + return 1,8,255, 122,153,181, 255,122,153,181
- end
- -tpt.graphics_func(glow,tpt.element('FOFI'))
- \ No newline at end of file
- +tpt.graphics_func(glowfunc, FOFI)
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement