function dive(pl, command, args) if pl.Diving then return end if pl:GetVelocity() == Vector(0,0,0) then return end local momentumScale = 300.0 local zScale = 200 pl:SetVelocity(pl:GetVelocity():Normalize() * momentumScale + Vector(0, 0, zScale)) pl.Diving = true timer.Simple(2, completeDive, pl) end function completeDive(pl) pl.DiveCompleted = true print "dive completed" end function onThink(pl) if (pl.Diving && pl.DiveCompleted) then print("think detected that diving is completed") end if (pl.Diving && pl.DiveCompleted && pl:IsOnGround()) then print("initiating roll") pl:SetVelocity(pl:GetVelocity():Normalize() * 300.0) pl.Diving = false end end concommand.Add("dive", dive) hook.Add("Think", "ahl_think_dive", onThink)