Drunken ragdolls (sumotori style) grin



Code:
function getRagdoll(ENTITY* entity, VECTOR* velSpeed)
{
	VECTOR vAng;
	var vStrength = 1.2;
	...
	...
	...
	while (1)
	{		
		ang_for_bone(vAng, entity, "bHips");
		pXent_addtorquelocal(bHips, vector(-vAng.z*vStrength*time_step, vAng.y*time_step, 0));
		
		ang_for_bone(vAng, entity, "bRLeg");
		pXent_addtorquelocal(bRLeg, vector(-vAng.z*vStrength*time_step, 0, 0));		
		
		ang_for_bone(vAng, entity, "bLLeg");
		pXent_addtorquelocal(bLLeg, vector(-vAng.z*vStrength*time_step, 0, 0));			

		
		ent_bonereset_all(entity); // resets all bones of the current pose
		
		ent_bonerotate(entity,"bHead", bHead.pan); ent_bonemove(entity,"bHead", vector(bHead.x,bHead.y,bHead.z-75));
		ent_bonerotate(entity,"bBody", bBody.pan); ent_bonemove(entity,"bBody", vector(bBody.x,bBody.y,bBody.z-30));
		ent_bonerotate(entity,"bHips", bHips.pan); ent_bonemove(entity,"bHips", vector(bHips.x,bHips.y,bHips.z+15));
		ent_bonerotate(entity,"bRArm", bRArm.pan); ent_bonemove(entity,"bRArm", vector(bRArm.x+55,bRArm.y,bRArm.z-50));
		ent_bonerotate(entity,"bLArm", bLArm.pan); ent_bonemove(entity,"bLArm", vector(bLArm.x-55,bLArm.y,bLArm.z-50));
		ent_bonerotate(entity,"bRLeg", bRLeg.pan); ent_bonemove(entity,"bRLeg", vector(bRLeg.x+15,bRLeg.y,bRLeg.z+60));
		ent_bonerotate(entity,"bLLeg", bLLeg.pan); ent_bonemove(entity,"bLLeg", vector(bLLeg.x-15,bLLeg.y,bLLeg.z+60));
		
		wait(1);
	}
}




no science involved