-- stupid ass particle spawner.
-- from lat to gayk

freeslot("MT_URZ_WINDSPAWNER")

mobjinfo[MT_URZ_WINDSPAWNER] = {
    doomednum = 1919,
    height = 128<<FRACBITS,
    radius = 64<<FRACBITS,
    spawnstate = S_INVISIBLE,
    spawnhealth = 1000,
    flags = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT
}


local RADIUS = 1024    -- adjust this if necessary, i aint ur mom

for i = 1, 5
    freeslot("S_URZ_WIND"..i)
end

for i = 0, 4
    states[S_URZ_WIND1+i] = {SPR_EGFG, FF_TRANS80|FF_FULLBRIGHT|FF_PAPERSPRITE|i, 7, A_SetRandomTics, 5, 9, (i<4) and (S_URZ_WIND1+(i+1)) or S_NULL}
end

addHook("MobjThinker", function(mo)
    if not mo or not mo.valid return end

    local x = mo.x + P_RandomRange(-RADIUS, RADIUS)*mo.scale
    local y = mo.y + P_RandomRange(-RADIUS, RADIUS)*mo.scale
    local z = mo.z + P_RandomRange(0, RADIUS)*mo.scale/2

    local c = P_SpawnMobj(x, y, z, MT_EERIEFOG)
    c.state = S_URZ_WIND1
    c.angle = mo.angle    -- kek
    P_InstaThrust(c, mo.angle, 90<<FRACBITS)
end, MT_URZ_WINDSPAWNER)