-- Smooth Trail script by ffoxD. -- Reusable, use with credit. local function SmoothTrail(mo, trailmo, freq) -- Real Z momentum thingy plus leveltime checks. -- You can replace all this with mo.momz+mo.pmomz but that stays at 0 when on slopes and on ground. if not mo.prevz or not mo.prevleveltime or (mo.prevleveltime ~= leveltime - 1) then mo.prevz = mo.z end local rmomz = mo.z - mo.prevz mo.prevz = mo.z mo.prevleveltime = leveltime -- Handy local variables. local mospeed = R_PointToDist2(0, 0, R_PointToDist2(0, 0, mo.momx, mo.momy), rmomz) local dist = (mospeed/freq) -- The loop, repeats until it spawns all the thok objects. for i = dist, 1, -1 do local spawnedmo = P_SpawnMobjFromMobj(mo, (mo.momx/dist)*i, (mo.momy/dist)*i, (rmomz/dist)*i, trailmo) spawnedmo.color = mo.color end end -- Usage example. addHook("PlayerThink", function(player) player.spinitem = 0 if player.pflags & PF_SPINNING then if skins[player.mo.skin].spinitem == -1 then SmoothTrail(player.mo, MT_THOK, 2*FRACUNIT) else SmoothTrail(player.mo, skins[player.mo.skin].spinitem, 2*FRACUNIT) end end end)