Code:
function morph_target(ENTITY* e, ENTITY* m, p)
{
	VECTOR Current;  //Current Mesh Vert Pos 
	VECTOR Target;  	//Morph1 Vert Pos

	VECTOR Base;     //Base or unchanged mesh vert pos
	VECTOR Diff;   
	VECTOR morph;
	
	var vert;
	var vert_cnt = ent_status(e,0);	
	
	for(vert=1;vert<vert_cnt;vert++)
	{
		//Base Model Postions
		CONTACT* c1 = ent_getvertex(e,NULL,vert);
		Base.x = c1.x;
		Base.y = c1.y;
		Base.z = c1.z;		
		
		//Target Models Postions
		CONTACT* c2 = ent_getvertex(m,NULL,vert);
		Target.x = c2.x;
		Target.y = c2.y;
		Target.z = c2.z;
		
		vec_set(morph.x,Base.x);
				
		vec_lerp(Diff.x,Base.x,Target.x,p);
		morph.x += Diff.x - Base.x;
		morph.y += Diff.y - Base.y;
		morph.z += Diff.z - Base.z;	
			
		c1.v = NULL;
		c1.x = morph.x;
		c1.y = morph.y;
		c1.z = morph.z;
		ent_setvertex(e,c1,vert);		
	}
	
	ent_fixnormals(e,0);
	c_updatehull(e,0);	
}



Note* Both models have to have the same number of verts and the morph object should be derived from the base object or you will get weird results..

p - this is the percentage of the morph you want your entity to take on. Use decimals so a 50% morph would be 0.5


John C Leutz II