Highly Explosive mod/script

  • DanDuncombe
    28th Sep 2013 Member 0 Permalink

    Hi guys and girls, this is my first mod/script!

    It adds, into the explosive section, 4 elements:

    • HEL (Highly Explosive Liquid)
    • HES (Highly Explosive Solid)
    • HEG (Highly Explosive Gas)
    • HEP (Highly Explosive Powder)

    They are ignited by >5 pressure, or about >200 temperature.

    They create plasma and quite a lot of pressure.

     

    The code:

    --The Highly Explosive mod for Powder Toy

    local function explosion(x, y, s)
        for px = -1, 1 do
            for py = -1, 1 do
                tpt.create(x + px, y - py, "PLSM")
                local pressure = sim.pressure((x + px) / 4.0, (y + py) / 4.0)
                sim.pressure((x + px) / 4.0, (y + py) / 4.0, pressure + s * 10)
                sim.velocityX((x + px) / 4.0, y / 4.0, px * s)
                sim.velocityY((x + px) / 4.0, (y - py) / 4.0, -py * s)

            end
        end
    end

     

    local WBOMB = elements.allocate("MEXPL", "HEL")
    elements.element(elements.MEXPL_PT_HEL, elements.element(elements.DEFAULT_PT_GLOW))
    elements.property(elements.MEXPL_PT_HEL, "Color", "0xFCCFFF")
    elements.property(elements.MEXPL_PT_HEL, "Name", "HEL")
    elements.property(elements.MEXPL_PT_HEL, "Description", "Highly Explosive Liquid")
    elements.property(elements.MEXPL_PT_HEL, "MenuVisible", 1)
    elements.property(elements.MEXPL_PT_HEL, "MenuSection", 5)
    elements.property(elements.MEXPL_PT_HEL, "Advection", 0.1)
    elements.property(elements.MEXPL_PT_HEL, "AirDrag", 0.1)
    elements.property(elements.MEXPL_PT_HEL, "AirLoss", 0.9)
    elements.property(elements.MEXPL_PT_HEL, "Loss", 0.9)
    elements.property(elements.MEXPL_PT_HEL, "Falldown", 2)
    elements.property(elements.MEXPL_PT_HEL, "Hardness", 0.8)
    elements.property(elements.MEXPL_PT_HEL, "Weight", 12)
    elements.property(elements.MEXPL_PT_HEL, "Temperature", 293)
    elements.property(elements.MEXPL_PT_HEL, "HeatConduct", 100)
    elements.property(elements.MEXPL_PT_HEL, "State", 2)
    elements.property(elements.MEXPL_PT_HEL, "Properties", 2)

    local function HEL_update(i, x, y, s, n)
        local r = 1
        if sim.pressure(x / 4.0, y / 4.0) >= 5.0 then

            explosion(x, y, 1)
            tpt.delete(i)
        elseif tpt.get_property("temp", i) >= 473.15 then
            explosion(x, y, 1)
            tpt.delete(i)
        end
    end

     

    tpt.element_func(HEL_update, elements.MEXPL_PT_HEL)

    local SBOMB = elements.allocate("MEXPL", "HES")
    elements.element(elements.MEXPL_PT_HES, elements.element(elements.DEFAULT_PT_BANG))
    elements.property(elements.MEXPL_PT_HES, "Color", "0xFCCFFF")
    elements.property(elements.MEXPL_PT_HES, "Name", "HES")
    elements.property(elements.MEXPL_PT_HES, "Description", "Highly Explosive Solid")
    elements.property(elements.MEXPL_PT_HES, "MenuVisible", 1)
    elements.property(elements.MEXPL_PT_HES, "MenuSection", 5)
    elements.property(elements.MEXPL_PT_HES, "Hardness", 0.8)
    elements.property(elements.MEXPL_PT_HES, "Temperature", 293)
    elements.property(elements.MEXPL_PT_HES, "HeatConduct", 100)
    elements.property(elements.MEXPL_PT_HES, "Falldown", 0)
    elements.property(elements.MEXPL_PT_HES, "State", 1)
    elements.property(elements.MEXPL_PT_HES, "Properties", 4)

    local function HES_update(i, x, y, s, n)
        local r = 1
        if sim.pressure(x / 4.0, y / 4.0) >= 5.0 then

            explosion(x, y, 1)
            tpt.delete(i)
        elseif tpt.get_property("temp", i) >= 473.15 then
            explosion(x, y, 1)
            tpt.delete(i)
        end
    end

     

    tpt.element_func(HES_update, elements.MEXPL_PT_HES)

    local GBOMB = elements.allocate("MEXPL", "HEG")
    elements.element(elements.MEXPL_PT_HEG, elements.element(elements.DEFAULT_PT_GAS))
    elements.property(elements.MEXPL_PT_HEG, "Color", "0xFCCFFF")
    elements.property(elements.MEXPL_PT_HEG, "Name", "HEG")
    elements.property(elements.MEXPL_PT_HEG, "Description", "Highly Explosive Gas")
    elements.property(elements.MEXPL_PT_HEG, "MenuVisible", 1)
    elements.property(elements.MEXPL_PT_HEG, "MenuSection", 5)
    elements.property(elements.MEXPL_PT_HEG, "Hardness", 0.8)
    elements.property(elements.MEXPL_PT_HEG, "Temperature", 293)
    elements.property(elements.MEXPL_PT_HEG, "HeatConduct", 100)
    elements.property(elements.MEXPL_PT_HEG, "Falldown", 0)
    elements.property(elements.MEXPL_PT_HEG, "Diffusion", 0.5)
    elements.property(elements.MEXPL_PT_HEG, "State", 3)
    elements.property(elements.MEXPL_PT_HEG, "Properties", 3)

    local function HEG_update(i, x, y, s, n)
        local r = 1
        if sim.pressure(x / 4.0, y / 4.0) >= 5.0 then

            explosion(x, y, 1)
            tpt.delete(i)
        elseif tpt.get_property("temp", i) >= 473.15 then
            explosion(x, y, 1)
            tpt.delete(i)
        end
    end

     

    tpt.element_func(HEG_update, elements.MEXPL_PT_HEG)

    local PBOMB = elements.allocate("MEXPL", "HEP")
    elements.element(elements.MEXPL_PT_HEP, elements.element(elements.DEFAULT_PT_DUST))
    elements.property(elements.MEXPL_PT_HEP, "Color", "0xFCCFFF")
    elements.property(elements.MEXPL_PT_HEP, "Name", "HEP")
    elements.property(elements.MEXPL_PT_HEP, "Description", "Highly Explosive Powder")
    elements.property(elements.MEXPL_PT_HEP, "MenuVisible", 1)
    elements.property(elements.MEXPL_PT_HEP, "MenuSection", 5)
    elements.property(elements.MEXPL_PT_HEP, "Hardness", 0.8)
    elements.property(elements.MEXPL_PT_HEP, "Temperature", 293)
    elements.property(elements.MEXPL_PT_HEP, "HeatConduct", 100)
    elements.property(elements.MEXPL_PT_HEP, "Falldown", 1)
    elements.property(elements.MEXPL_PT_HEL, "Advection", 0.1)
    elements.property(elements.MEXPL_PT_HEL, "AirDrag", 0.1)
    elements.property(elements.MEXPL_PT_HEL, "AirLoss", 0.9)
    elements.property(elements.MEXPL_PT_HEL, "Loss", 0.9)
    elements.property(elements.MEXPL_PT_HEL, "Hardness", 0.8)
    elements.property(elements.MEXPL_PT_HEL, "Weight", 12)
    elements.property(elements.MEXPL_PT_HEP, "State", 1)
    elements.property(elements.MEXPL_PT_HEP, "Properties", 4)

    local function HEP_update(i, x, y, s, n)
        local r = 1
        if sim.pressure(x / 4.0, y / 4.0) >= 5.0 then

            explosion(x, y, 1)
            tpt.delete(i)
        elseif tpt.get_property("temp", i) >= 473.15 then
            explosion(x, y, 1)
            tpt.delete(i)
        end
    end

     

    tpt.element_func(HEP_update, elements.MEXPL_PT_HEP)


  • Luezma
    28th Sep 2013 Member 0 Permalink

    Where did u get the explosion code?

  • DanDuncombe
    28th Sep 2013 Member 0 Permalink

    @Luezma (View Post)

     From MGUN script- I think it was you who made it?

  • Luezma
    28th Sep 2013 Member 0 Permalink

    Yes, I did it