//Is it just me or am I ENGULFED IN FLAMES?!

local function P_ZMovementRingBounce(mo)
	local mom = {x = mo.momx, y = mo.momy, z = mo.momz}

	if (P_MobjFlip(mo)*mom.z < 0) // falling
		mo.eflags = $1|MFE_JUSTHITFLOOR

		if (mo.flags2 & MF2_SKULLFLY) // the skull slammed into something
			mom.z = -mom.z
		else
		// Flingrings bounce
			if (maptol & TOL_NIGHTS)
				mom.z = -FixedDiv(mom.z, 10*FRACUNIT);
			else
				mom.z = -FixedMul(mom.z, FixedDiv(17*FRACUNIT,20*FRACUNIT))
			end
		end

	elseif (tmfloorthing)
		mom.z = tmfloorthing.momz
	end

	/* function not available in lua
	if (mo.standingslope) //MT_STEAM will never have a standingslope, see above.
		P_QuantizeMomentumToSlope(mom, mo,standingslope)
	end
	*/
	mo.momx = mom.x
	mo.momy = mom.y
	mo.momz = mom.z
end

local function RingLavaDeath(mo, inf, src, dtype)
	if not (inf)
	and not (src)
	and (dtype == DMG_FIRE) then //lava death
		mo.health = mobjinfo[mo.type].spawnhealth //revive
		mo.flags = mobjinfo[mo.type].flags //restore flags
		
		P_ZMovementRingBounce(mo)
		return true
	end
end
addHook("MobjDeath", RingLavaDeath, MT_FLINGRING)