Further Enhance this lua powder toy script:

And add really solid properties, and a more ULTRA-powerful regeneration.

```
-- Allocate a new element for the ultra infused constant-electron solid
local infus = elements.allocate("custom", "INFUS")
elements.element(infus, elements.element(elements.DEFAULT_PT_METL))  -- Based on METL (solid)

-- Properties of the new element
elements.property(infus, "Name", "INFUS")
elements.property(infus, "Description", "ULTRA infused-constant-electron solid that regenerates using electrons and photons.")
elements.property(infus, "Color", 0x00FFFF)  -- Cyan to represent the electron-infused state
elements.property(infus, "Weight", 150)      -- Medium weight, solid material
elements.property(infus, "Hardness", 750)    -- Strong, but not indestructible
elements.property(infus, "HeatConduct", 100) -- Moderate heat conductivity
elements.property(infus, "Temperature", 295.15) -- Room temperature

-- Custom properties for subframe regeneration and photosynthesis
local REGEN_CHANCE = 50          -- Chance of subframe regeneration in percent
local ELEC_GENERATION_RATE = 5   -- Number of electrons generated per frame
local PHOT_ABSORPTION_RATE = 10  -- Number of photons absorbed per frame
local UNSTABLE_BEHAVIOR_CHANCE = 20 -- Chance of unstable behavior per frame

-- Function to handle interaction with photons (PHOT) and electrons (ELEC)
local function handle_phot_elec(i, x, y)
    -- Regenerate when photons are nearby (photosynthesis-like effect)
    for r in sim.neighbors(x, y, 1, 1) do
        local type_r = sim.partProperty(r, "type")
        if type_r == elements.DEFAULT_PT_PHOT then
            -- Absorb photons and regenerate
            sim.partProperty(i, "life", math.min(999, sim.partProperty(i, "life") + PHOT_ABSORPTION_RATE))
            sim.partProperty(r, "life", 0) -- Destroy the photon
        end
    end

    -- Constantly generate electrons inside the material
    for _ = 1, ELEC_GENERATION_RATE do
        local elec_x = x + math.random(-1, 1)
        local elec_y = y + math.random(-1, 1)
        sim.partCreate(-1, elec_x, elec_y, elements.DEFAULT_PT_ELEC)  -- Create electrons
    end
end

-- Subframe regeneration function
local function subframe_regen(i, x, y)
    if math.random(0, 100) < REGEN_CHANCE then
        sim.partProperty(i, "life", 999) -- Max out life (indicating regeneration)
        sim.partProperty(i, "dcolor", 0x00FFFF) -- Bright cyan when fully regenerated
    end
end

-- Unstable per-frame behavior: random variations
local function unstable_behavior(i)
    if math.random(0, 100) < UNSTABLE_BEHAVIOR_CHANCE then
        -- Randomly modify particle properties each frame
        local vx = math.random(-5, 5)
        local vy = math.random(-5, 5)
        sim.partProperty(i, "vx", vx)
        sim.partProperty(i, "vy", vy)

        -- Flash the color randomly to indicate instability
        sim.partProperty(i, "dcolor", math.random(0x000000, 0xFFFFFF))
    end
end

-- Main update function for the infused solid
local function update_infus(i, x, y, s, n)
    -- Handle interactions with photons and electrons (photosynthesis-like regeneration)
    handle_phot_elec(i, x, y)

    -- Perform subframe regeneration
    subframe_regen(i, x, y)

    -- Unstable behavior per frame
    unstable_behavior(i)
end

-- Assign the update function to the new element
elements.property(infus, "Update", update_infus)

-- Enable the element to be solid and not flow like powder
elements.property(infus, "State", elements.ST_SOLID)

-- Make the element non-explosive and highly durable
elements.property(infus, "Explosive", 0)  -- Not explosive
elements.property(infus, "Loss", 0)       -- No loss of material over time
```

References [SCRIPTS] (FOR REFERENCE ONLY):

```
-- Allocate a new element for the binary solid
local bins = elements.allocate("custom", "BINS")
elements.element(bins, elements.element(elements.DEFAULT_PT_METL))  -- Based on solid metal

-- Properties of the new element
elements.property(bins, "Name", "BINS")
elements.property(bins, "Description", "Game-of-Life inspired binary solid. Highly regenerative.")
elements.property(bins, "Color", 0x008080)  -- Teal color for binary solid
elements.property(bins, "Weight", 20)       -- Light solid material
elements.property(bins, "Hardness", 100)    -- Very solid and durable
elements.property(bins, "Temperature", 295.15) -- Room temperature
elements.property(bins, "HeatConduct", 5)   -- Very low heat conductivity

-- Game of Life rules for the binary solid
local function update_bins(i, x, y, s, n)
    local neighbors_alive = 0

    -- Count alive neighbors
    for r in sim.neighbors(x, y, 1, 1) do
        if sim.partProperty(r, "type") == bins and sim.partProperty(r, "tmp") == 1 then
            neighbors_alive = neighbors_alive + 1
        end
    end

    local alive = sim.partProperty(i, "tmp") == 1  -- 1 = alive, 0 = dead

    -- Apply Game of Life rules
    if alive then
        if neighbors_alive < 2 or neighbors_alive > 3 then
            sim.partProperty(i, "tmp", 0)  -- Die due to under/overpopulation
        else
            -- Remain alive
        end
    else
        if neighbors_alive == 3 then
            sim.partProperty(i, "tmp", 1)  -- Become alive by reproduction
        end
    end

    -- Regeneration: Highly regenerative with a chance to self-repair
    if math.random(0, 100) < 10 then
        sim.partProperty(i, "tmp", 1)  -- 10% chance to regenerate if dead
    end

    -- Visualize state: Change color based on alive (bright) or dead (dim)
    if sim.partProperty(i, "tmp") == 1 then
        sim.partProperty(i, "dcolor", 0x00FFFF)  -- Bright teal for alive
    else
        sim.partProperty(i, "dcolor", 0x004040)  -- Dim teal for dead
    end
end

-- Assign the update function to the new element
elements.property(bins, "Update", update_bins)

-- Enable the element to be solid and not flow like powder
elements.property(bins, "State", elements.ST_SOLID)

-- Enable it to transfer energy slowly
elements.property(bins, "Explosive", 0)  -- Not explosive
```

```
-- Allocate a new element for the durable solid with subframe regeneration
local subr = elements.allocate("custom", "SUBR")
elements.element(subr, elements.element(elements.DEFAULT_PT_METL))  -- Base on METL (metal)

-- Properties of the new element
elements.property(subr, "Name", "SUBR")
elements.property(subr, "Description", "Durable solid with subframe-super-regenerative mechanic and weird conductive properties.")
elements.property(subr, "Color", 0xFF5500)  -- Orange color to represent the solid material
elements.property(subr, "Weight", 50)       -- Lightweight but solid
elements.property(subr, "Hardness", 500)    -- Highly durable
elements.property(subr, "HeatConduct", 200) -- High heat conductivity
elements.property(subr, "Temperature", 295.15) -- Room temperature

-- Custom properties for subframe regeneration
local REGEN_RATE = 90   -- Percentage chance of subframe regeneration
local REGEN_RADIUS = 2  -- Regeneration affects neighboring particles within this radius

-- Unique conductive properties
local CONDUCT_RANDOMNESS = 50 -- Random chance for conduction effects
local CONDUCT_ENERGY = 200    -- How much energy is conducted randomly

-- Update function for the subr element
local function update_subr(i, x, y, s, n)
    -- Subframe regeneration mechanic
    if math.random(0, 100) < REGEN_RATE then
        sim.partProperty(i, "life", 999) -- Max out life (indicating healing)
        
        -- Regenerate nearby elements rapidly
        for r in sim.neighbors(x, y, REGEN_RADIUS, REGEN_RADIUS) do
            if sim.partProperty(r, "type") ~= subr then
                sim.partChangeType(r, subr) -- Convert nearby elements to subr
                sim.partProperty(r, "life", 999) -- Also heal them fully
                sim.partProperty(r, "dcolor", 0xFFAA00)  -- Change color to bright orange during regeneration
            end
        end
    end

    -- Weird conductive properties
    if math.random(0, 100) < CONDUCT_RANDOMNESS then
        -- Randomly transfer energy/heat to neighboring particles
        for r in sim.neighbors(x, y, 1, 1) do
            if sim.partProperty(r, "type") ~= subr then
                -- Randomly increase/decrease temperature and pressure for weird effects
                local new_temp = sim.partProperty(r, "temp") + math.random(-CONDUCT_ENERGY, CONDUCT_ENERGY)
                sim.partProperty(r, "temp", new_temp)

                -- Randomly increase/decrease velocity
                local vx = sim.partProperty(r, "vx") + math.random(-2, 2)
                local vy = sim.partProperty(r, "vy") + math.random(-2, 2)
                sim.partProperty(r, "vx", vx)
                sim.partProperty(r, "vy", vy)

                -- Optionally cause the element to change type due to weird conduction
                if math.random(0, 100) < 5 then
                    sim.partChangeType(r, elements.DEFAULT_PT_PLSM) -- Change to plasma randomly
                end
            end
        end
    end

    -- Visual feedback: change color based on temperature/conductivity activity
    local temp = sim.partProperty(i, "temp")
    if temp > 500 then
        sim.partProperty(i, "dcolor", 0xFF0000)  -- Turn red when really hot
    elseif temp < 273 then
        sim.partProperty(i, "dcolor", 0x0000FF)  -- Turn blue when cold
    else
        sim.partProperty(i, "dcolor", 0xFF5500)  -- Default orange
    end
end

-- Assign the update function to the new element
elements.property(subr, "Update", update_subr)

-- Enable the element to be solid and not flow like powder
elements.property(subr, "State", elements.ST_SOLID)

-- Make the element indestructible unless melted or extreme forces applied
elements.property(subr, "Explosive", 0)  -- Not explosive
```