KHMovement D.Lancaster; EvilSOB
Lite-C 7.50
ver: min mod
player.c
Click to reveal..

Code:
#ifndef player_c
#define player_c
/////
//
//
#define nullframe	-2
#define blend		-1
#define stand		0
#define run			1
#define walk		2
#define jump		3
#define fall		4
#define attack_a	5
#define attack_b	6
#define attack_c	7
#define attack_d	8
#define attack_e	9
#define attack_f	10
//
#define move_x				skill22
#define move_y				skill23
#define move_z				skill24
#define force_x			skill25
#define force_y			skill26
#define force_z			skill27
#define velocity_x		skill28
#define velocity_y		skill29
#define velocity_z		skill30
#define animate			skill31
#define animate2			skill32
#define animblend			skill33
#define currentframe		skill34
#define blendframe		skill35
#define z_offset			skill50
#define jumping_mode		skill51
#define gravity			skill52
#define movement_mode	skill53
#define moving				skill54
#define hit_by_player	skill55
#define entity_type		skill56
//
//
function handle_animation(var animation_speed); 
function rotate_entity(var rotate_angle, var rotate_speed);
//
//
ENTITY* player_weapon;
ENTITY* target_enemy;
//
VECTOR* camera_move_to = { x=0;	y=0;	z=0; }
var camera_distance = 200;
var camera_pan;
var camera_tilt;
//
var space_press = 0;
var mouse_left_press = 0;
var mouse_right_press = 0;
var combo_continue = 0;
var player_lock_on = 0;
var airborne_attack = 0;
//
VECTOR* tempV = { x=0; 	 y=0; 	z=0; }
VECTOR* tempV2= { x=0; 	 y=0; 	z=0; }
ANGLE*  tempA = { pan=0; tilt=0; roll=0; }
ANGLE*  tempA2= { pan=0; tilt=0; roll=0; }
//
//
//
action attach_weapon()
{
	player_weapon = my;
	set(my,PASSABLE);
	proc_mode = PROC_LATE;
	while(you!=NULL) 
	{
		vec_for_vertex(tempV.x,  you, 1175);		//hand palm base
		vec_for_vertex(tempV2.x, you, 1240);		//hand palm tip
		vec_set(my.x, tempV.x);
		vec_diff(tempV.x, tempV2.x, tempV.x);
		vec_to_angle(tempA.pan, tempV.x);
		vec_set(my.pan, tempA.pan);
		wait(1);
	}
}
//
//

function handle_movement() 
{
	tempV.x = -1000;
	tempV.y = 0;
	my.moving = 0;
	if (key_w == 1 && key_s == 0 && key_a == 0 && key_d == 0) 	{ tempV.x = camera.pan; }
	if (key_s == 1 && key_w == 0 && key_a == 0 && key_d == 0) 	{ tempV.x = camera.pan + 180; }
	if (key_a == 1 && key_s == 0 && key_w == 0 && key_d == 0) 	{ tempV.x = camera.pan + 90; }
	if (key_d == 1 && key_s == 0 && key_a == 0 && key_w == 0) 	{ tempV.x = camera.pan - 90; }
	if (key_w == 1 && key_a == 1 && key_d == 0 && key_s == 0) 	{ tempV.x = camera.pan + 45; }
	if (key_w == 1 && key_d == 1 && key_a == 0 && key_s == 0) 	{ tempV.x = camera.pan - 45; }
	if (key_s == 1 && key_a == 1 && key_d == 0 && key_w == 0) 	{ tempV.x = camera.pan + 135; }
	if (key_s == 1 && key_d == 1 && key_a == 0 && key_w == 0) 	{ tempV.x = camera.pan - 135; }
	if (tempV.x != -1000) 
	{
		my.moving = 1;
		if (key_shift == 1)	{ tempV.y = 10 * time_step; } 
		else 						{ tempV.y = 15 * time_step; }
	}

	if (my.movement_mode == 0) 
	{
		my.move_x = fcos(tempV.x,tempV.y);
		my.move_y = fsin(tempV.x,tempV.y);
	}
	if (my.movement_mode == 1 || my.movement_mode == 2) 
	{
		tempV.y = fsin((my.animate * 1.2) + 45,15 * time_step);
		my.move_x = fcos(my.pan,tempV.y);
		my.move_y = fsin(my.pan,tempV.y);
		tempV.y = 0;
		if (tempV.x != -1000) 	tempV.y = 1;	//if we need to rotate whilst attacking (the player is pressing keys to rotate)
	}
	//
	c_move(my,nullvector,my.move_x, USE_AABB|IGNORE_PASSABLE|GLIDE);
	//
	//result = trace(vector(my.x,my.y,my.z - my.z_offset),vector(my.x,my.y,my.z - 4000));
	//if (result < 0)	{	my.z -= result;	my.velocity_z = 0;	}
	if (target_enemy == NULL) 
	{	
		if (tempV.y > 0) { rotate_entity(tempV.x,30); }		
	} 
	else 
	{
		vec_diff(tempV2.x,target_enemy.x,my.x);
		vec_to_angle(tempA2.pan,tempV2.x);
		rotate_entity(tempA2.pan,30);
	}
	//
	switch(my.movement_mode)
	{
 		case 0:		
			my.gravity = 6;
			if (my.move_x != 0 || my.move_y != 0) 		 //if we are moving
			{
				if (my.animblend == stand) //if our current animation is stand
				{ 
					if (key_shift == 1)	my.blendframe = walk; 
					else 						my.blendframe = run; 
				}
				if (my.animblend == run  && key_shift == 1)	my.blendframe = walk;
				if (my.animblend == walk && key_shift == 0)	my.blendframe = run; 
			} 
			else 
			{
				//if we arn't moving and our current animation is walk or run, blend and cycle the stand animation
				if (my.animblend > stand && my.animblend != jump && my.animblend != fall) 		my.blendframe = stand;
			}
			if (mouse_left == 0 && mouse_left_press == 1)	mouse_left_press = 0; 
			if (mouse_left == 1 && mouse_left_press == 0 && my.animblend >= stand) 
			{
				mouse_left_press = 1;
				my.blendframe = attack_a;
				if (my.jumping_mode == 1) 		airborne_attack = 1;
				else									airborne_attack = 0;
				my.movement_mode = 1;
				combo_continue = 0;
			}
			if (mouse_right == 0 && mouse_right_press == 1) 	mouse_right_press = 0;		///////////////
			if (mouse_right == 1 && mouse_right_press == 0) 
			{
				if (player_lock_on == 0) 
				{
					c_scan(player.x,player.pan,vector(360,180,250),SCAN_ENTS|SCAN_LIMIT|IGNORE_ME);
					if (you != NULL) 
					{
						if (you.entity_type == 2)  //make sure you've scanned an enemy
						{	player_lock_on = 1;		target_enemy = you;		}
					}
				} 
				else 
				{	player_lock_on = 0;		target_enemy = NULL;		}
				mouse_right_press = 1;
			}
			break;
 		case 1:		
			if (my.jumping_mode != 10) 									my.jumping_mode = 0;
			else if((my.animate >= 60)&&(my.animblend >= stand)) 	my.jumping_mode = 0; 
			if(mouse_left == 0 && mouse_left_press == 1) 			mouse_left_press = 0; 
			if(mouse_left == 1 && mouse_left_press == 0 && my.animate >= 30 && combo_continue == 0) 
			{	mouse_left_press = 1; 	combo_continue = 1; 	}
			break;
 		case 2:		
		my.jumping_mode = 0;
		if(mouse_left == 0 && mouse_left_press == 1)		mouse_left_press = 0;
		if(mouse_left == 1 && mouse_left_press == 0 && my.animate >= 30 && combo_continue == 0) 
		{		mouse_left_press = 1;		combo_continue = 1; 		}
		break;
	}
}
//
//
function handle_gravity() 
{
	result = c_trace(vector(my.x,my.y,my.z - my.z_offset),vector(my.x,my.y,my.z - 120),IGNORE_ME|IGNORE_PASSABLE|USE_POLYGON);
	if(trace_hit == 0 && result == 0) { result = 120; }
	if(result<3) 
	{	
		//if(result<0)	result = c_trace(my.x,vector(my.x,my.y,my.z + 4000),IGNORE_ME|IGNORE_PASSABLE|USE_POLYGON);	//!!FUDGE!! stop skyjumping
		//
		if(my.jumping_mode==0) 
		{
			my.force_z = -1 * result;
			if((key_space==0) && (space_press==1))	space_press = 0; 
			if((key_space==1) && (space_press==0) && (my.movement_mode==0) && (my.animblend>=stand) && (my.animblend!=jump) 	&& (my.animblend!=fall)) 
			{
				space_press = 1;
				my.jumping_mode = 1;
				my.force_z = 25;
				my.blendframe = jump;
				my.animate2 = 0;
				my.animblend = blend;
			}
		}
		if((my.jumping_mode==2) || (my.jumping_mode==3))	my.jumping_mode = 0;
	} 
	else 
	{
		if(my.jumping_mode==2) 
		{
			if(result>120) 
			{
				my.animate = 60;
				my.jumping_mode = 3;
			} 
			else	my.jumping_mode = 0;
		}
		if((my.jumping_mode==3) && (result<=120))		my.jumping_mode = 0;	
		if((my.jumping_mode==0) && (my.movement_mode==0))
		{
			if((result>120) && (my.animblend>=stand) && (my.animblend!=jump) && (my.animblend!=fall)) 
			{
				my.jumping_mode = 3;
				my.blendframe = fall;
				my.animate2 = 0;
				my.animblend = blend;
			}
		}
		my.force_z -= my.gravity * time_step;
		my.force_z = maxv(-30,my.force_z);
		if(my.movement_mode==2)		my.force_z = 0;
	}
 	my.velocity_z += (time_step * my.force_z) - (minv(time_step*0.7,1) * my.velocity_z);
	my.move_z = my.velocity_z * time_step;
}
//
//
//////////////////////////////
//Stable/rigid camera collision
//////////////////////////////
function handle_camera() 
{
	camera.pan -= mouse_force.x * 12 * time_step;
	camera.tilt += mouse_force.y * 8 * time_step;
	camera.tilt = clamp(camera.tilt,-30,10);
	tempA.pan = fcos(camera.tilt,-camera_distance);
	vec_set(camera.x,vector(my.x + fcos(camera.pan,tempA.pan),my.y + fsin(camera.pan,tempA.pan),my.z + 20 + fsin(camera.tilt,-camera_distance)));
	vec_diff(tempV.x,camera.x,my.x); 	//find the vector from the player to the camera
	vec_normalize(tempV.x,16); 			//get the magnitude of it's vector to 16 quants and store it in temp
	vec_add(tempV.x,camera.x); //add the vector (from player to camera) of a magnitude of 16 quants and add it to the camera's position.
	result = c_trace(my.x,tempV.x,IGNORE_ME|IGNORE_PASSABLE|IGNORE_MODELS);
	if(result > 0) 
	{
		vec_diff(tempV.x,my.x,target.x); //find the vector from the point the trace hit to the player
		vec_normalize(tempV.x,16); 		//get the magnitude of this vector to 16 quants and store in temp
		vec_set(camera.x,target.x);		//place the camera at the trace hit point
		vec_add(camera.x,tempV.x);			//move the camera away from the wall by the vector temp, 16 quants towards the player
	}
}
//
//
//////////////////////////////
//Smoother camera collision
//////////////////////////////
/*
function handle_camera() {
	camera_pan -= mouse_force.x * 12 * time_step;
	camera_tilt += mouse_force.y * 8 * time_step;
	camera_tilt = clamp(camera_tilt,-30,10);
	camera.pan = camera_pan;
	tempA.pan = fcos(camera_tilt,-camera_distance);
	vec_set(camera_move_to.x,vector(my.x + fcos(camera.pan,tempA.pan),my.y + fsin(camera.pan,tempA.pan),my.z + 20 + fsin(camera_tilt,-camera_distance)));
	var temp = minv(1,0.5 * time_step); //changing 0.5 will change how fast the camera moves, at 1 places us at target, this value is what allows the smooth movement
	camera.x += temp*(camera_move_to.x - camera.x);
	camera.y += temp*(camera_move_to.y - camera.y);
	camera.z += temp*(camera_move_to.z - camera.z);
	vec_diff(tempV.x,camera.x,my.x);
	vec_normalize(tempV.x,16);
	vec_add(tempV.x,camera.x);
	if (c_trace(my.x,tempV.x,IGNORE_ME|IGNORE_PASSABLE|IGNORE_MODELS) > 0) {
		vec_diff(tempV.x,my.x,target.x);
		vec_normalize(tempV.x,16);
		vec_set(camera.x,target.x);
		vec_add(camera.x,tempV.x);
	}
	vec_diff(tempV.x,my.x,camera.x);
	vec_to_angle(camera.pan,tempV.x);
}
*/
//
//
function rotate_entity(var rotate_angle, var rotate_speed)
{
	if(my.pan == rotate_angle)			return;
	result = ang(rotate_angle - my.pan);
	if (result > 0)		my.pan += rotate_speed * time_step;
	if (result < 0)		my.pan -= rotate_speed * time_step; 
	if ((ang(rotate_angle - my.pan) < 0) && (result > 0))	my.pan = rotate_angle; 
	if ((ang(rotate_angle - my.pan) > 0) && (result < 0))	my.pan = rotate_angle; 
}
//
//
function handle_sword_collision()
{
	you = NULL;
	vec_for_vertex(tempV.x, player_weapon,274); //sword base
	vec_for_vertex(tempV2.x,player_weapon, 54); //sword tip
	result = c_trace(tempV.x,tempV2.x,IGNORE_ME|IGNORE_PASSABLE|USE_BOX);
	if (you != NULL) {
		if ((you.entity_type == 2) && (you.hit_by_player == 0))
		{
			if (airborne_attack == 1 && my.animblend == attack_a) 	my.movement_mode = 2;
			you.hit_by_player = 1;
			if (target_enemy == NULL)		{	target_enemy = you; 		player_lock_on = 1; 	}
		}
	}
}
//
//
action player_action()
{
	c_setminmax(me);					//added to correct ground collisions
	wait(1);								//added to correct ground collisions
	player = me;
	my.gravity = 6;
	my.z_offset = -my.min_z;		//was 6	//added to correct ground collisions
	set(my,SHADOW);
	ent_create("sword.mdl", my.x, attach_weapon);
	wait(1);
	while(1) 
	{ //the main loop
		handle_gravity();
		handle_movement();
		handle_animation(1);
		handle_camera();
		wait(1);
	}
}
//
//
/////
#endif


enemy.c
Click to reveal..

Code:
#ifndef enemy_c
#define enemy_c
/////
//
//
action enemy_dummy()
{
	set(my,SHADOW);
	my.entity_type = 2;
	my.emask |= ENABLE_SCAN;
	while(1) 
	{
		if(player!=NULL)
		{
			if(my.hit_by_player==1) 
			{
				my.move_x = player.move_x;
				my.move_y = player.move_y;
				my.move_z = player.move_z;
				c_move(my, nullvector, my.move_x, USE_AABB|IGNORE_PASSABLE|GLIDE);
				if((player.animblend==blend) || (player.animblend<attack_a) || (my.animblend>attack_f))		my.hit_by_player=0;
			}
			if((player.animblend>=stand) && (target_enemy==my) && (player_lock_on==0) && ((player.animblend<attack_a) || (player.animblend>attack_f)))
			{	target_enemy = NULL;	 }
			if((target_enemy==my)&&(vec_dist(my.x,player.x)>200))		target_enemy = NULL;
		}
		wait(1);
	}
}
//
//
/////
#endif


animation.c
Click to reveal..

Code:
#ifndef animation_c
#define animation_c
/////
//
//
function handle_animation(var animation_speed) 
{
	if(animation_speed <= 0) { animation_speed = 1; }
	if(my.animblend != blend && my.blendframe != nullframe) { my.animate2 = 0; my.animblend = blend; }
	if(my.animblend == blend) {
		if(my.currentframe == stand) { ent_animate(my,"stand",my.animate,ANM_CYCLE); }
		if(my.currentframe == run) { ent_animate(my,"run",my.animate,ANM_CYCLE); }
		if(my.currentframe == walk) { ent_animate(my,"walk",my.animate,ANM_CYCLE); }
		if(my.currentframe == jump) { ent_animate(my,"jump",my.animate,0); }
		if(my.currentframe == attack_a) { ent_animate(my,"attack_a",my.animate,0); }
		if(my.currentframe == attack_b) { ent_animate(my,"attack_b",my.animate,0); }
		if(my.currentframe == attack_c) { ent_animate(my,"attack_c",my.animate,0); }
		if(my.currentframe == attack_d) { ent_animate(my,"attack_d",my.animate,0); }
		if(my.currentframe == attack_e) { ent_animate(my,"attack_e",my.animate,0); }
		if(my.currentframe == attack_f) { ent_animate(my,"attack_f",my.animate,0); }
		if(my.blendframe == stand) { ent_blend("stand",0,my.animate2); }
		if(my.blendframe == run) { ent_blend("run",0,my.animate2); }
		if(my.blendframe == walk) { ent_blend("walk",0,my.animate2); }
		if(my.blendframe == jump) { ent_blend("jump",0,my.animate2); }
		if(my.blendframe == fall) { ent_blend("jump",60,my.animate2); }
		if(my.blendframe == attack_a) { ent_blend("attack_a",0,my.animate2); }
		if(my.blendframe == attack_b) { ent_blend("attack_b",0,my.animate2); }
		if(my.blendframe == attack_c) { ent_blend("attack_c",0,my.animate2); }
		if(my.blendframe == attack_d) { ent_blend("attack_d",0,my.animate2); }
		if(my.blendframe == attack_e) { ent_blend("attack_e",0,my.animate2); }
		if(my.blendframe == attack_f) { ent_blend("attack_f",0,my.animate2); }
		my.animate2 += 45 * time_step;
		if(my.animate2 >= 100) {
			my.animate = 0;
			my.animblend = my.blendframe;
			my.blendframe = nullframe;
		}
	}
	if(my.animblend == stand) {
		ent_animate(my,"stand",my.animate,ANM_CYCLE);
		my.animate += 5 * animation_speed * time_step;
		my.animate %= 100;
		my.currentframe = stand;
	}
	if(my.animblend == run) {
		ent_animate(my,"run",my.animate,ANM_CYCLE);
		my.animate += 8 * animation_speed * time_step;
		my.animate %= 100;
		my.currentframe = run;
	}
	if(my.animblend == walk) {
		ent_animate(my,"walk",my.animate,ANM_CYCLE);
		my.animate += 8 * animation_speed * time_step;
		my.animate %= 100;
		my.currentframe = walk;
	}
	if(my.animblend == jump || my.animblend == fall) {
		if(my.jumping_mode == 3) { my.animate = 60; }
		ent_animate(my,"jump",my.animate,0);
		my.animate += 10 * animation_speed * time_step;
		my.currentframe = jump;
		if(my.animate >= 60 && my.jumping_mode == 1) { my.jumping_mode = 2; }
		if(my.animate >= 100) {
			ent_animate(my,"jump",100,0);
			my.animate = 100;
			my.blendframe = stand;
			if(my.moving == 1) {
				if(key_shift == 1) { my.blendframe = walk; } else { my.blendframe = run; }
			}
		}
	}
	if(my.animblend == attack_a) {
		ent_animate(my,"attack_a",my.animate,0);
		my.animate += 20 * animation_speed * time_step;
		my.currentframe = attack_a;
		if(my.animate >= 100) {
			ent_animate(my,"attack_a",100,0);
			my.animate = 100;
			my.blendframe = stand;
			if(my.moving == 1) {
				if(key_shift == 1) { my.blendframe = walk; } else { my.blendframe = run; }
			}
			if(combo_continue == 1) {
				combo_continue = 0;
				my.blendframe = attack_b;
			} else {
				my.movement_mode = 0;
			}
		}
	}
	if(my.animblend == attack_b) {
		ent_animate(my,"attack_b",my.animate,0);
		my.animate += 15 * animation_speed * time_step;
		my.currentframe = attack_b;
		if(my.animate >= 100) {
			ent_animate(my,"attack_b",100,0);
			my.animate = 100;
			my.blendframe = stand;
			if(my.moving == 1) {
				if(key_shift == 1) { my.blendframe = walk; } else { my.blendframe = run; }
			}
			if(combo_continue == 1) {
				combo_continue = 0;
				my.blendframe = attack_c;
			} else {
				my.movement_mode = 0;
			}
		}
	}
	if(my.animblend == attack_c) {
		ent_animate(my,"attack_c",my.animate,0);
		my.animate += 10 * animation_speed * time_step;
		my.currentframe = attack_c;
		if(my.animate >= 100) {
			ent_animate(my,"attack_c",100,0);
			my.animate = 100;
			my.blendframe = stand;
			if(my.moving == 1) {
				if(key_shift == 1) { my.blendframe = walk; } else { my.blendframe = run; }
			}
			if(combo_continue == 1) {
				my.jumping_mode = 10;
				my.force_z = 12;
				my.gravity = 4;
				combo_continue = 0;
				my.blendframe = attack_d;
			} else {
				my.movement_mode = 0;
			}
		}
	}
	if(my.animblend == attack_d) {
		handle_sword_collision();
		ent_animate(my,"attack_d",my.animate,0);
		my.animate += 15 * animation_speed * time_step;
		my.currentframe = attack_d;
		if(my.animate >= 100) {
			ent_animate(my,"attack_d",100,0);
			my.animate = 100;
			my.blendframe = stand;
			if(my.moving == 1) {
				if(key_shift == 1) { my.blendframe = walk; } else { my.blendframe = run; }
			}
			if(combo_continue == 1) {
				combo_continue = 0;
				my.blendframe = attack_e;
			} else {
				my.movement_mode = 0;
			}
		}
	}
	if(my.animblend == attack_e) {
		ent_animate(my,"attack_e",my.animate,0);
		my.animate += 15 * animation_speed * time_step;
		my.currentframe = attack_e;
		if(my.jumping_mode == 0 && my.animate >= 20 && my.animate < 60) {
			my.gravity = 3;
			my.jumping_mode = 10;
			my.force_z = 15;
		}
		if(my.animate >= 100) {
			ent_animate(my,"attack_e",100,0);
			my.animate = 100;
			my.blendframe = stand;
			if(my.moving == 1) {
				if(key_shift == 1) { my.blendframe = walk; } else { my.blendframe = run; }
			}
			if(combo_continue == 1) {
				combo_continue = 0;
				my.blendframe = attack_f;
			} else {
				my.movement_mode = 0;
			}
		}
	}
	if(my.animblend == attack_f) {
		ent_animate(my,"attack_f",my.animate,0);
		my.animate += 6 * animation_speed * time_step;
		my.currentframe = attack_f;
		if(my.jumping_mode == 0 && my.animate >= 40 && my.animate < 60) {
			my.gravity = 6;
			my.jumping_mode = 10;
			my.force_z = 12;
		}
		if(my.animate >= 100) {
			my.movement_mode = 0;
			ent_animate(my,"attack_f",100,0);
			my.animate = 100;
			my.blendframe = stand;
			if(my.moving == 1) {
				if(key_shift == 1) { my.blendframe = walk; } else { my.blendframe = run; }
			}
		}
	}
	if(my.animblend >= attack_a && my.animblend <= attack_f) { handle_sword_collision(); }
	if(my.animblend != blend && my.blendframe != nullframe) { my.animate2 = 0; my.animblend = blend; }
}
//
//
/////
#endif


KHMovement D.Lancaster; EvilSOB
Lite-C 7.50
ver: partial dummification (isanely idiotic) mod high
player.c
Click to reveal..

Code:
#ifndef player_c
#define player_c
/////
//
//
#define nullframe	-2
#define blend		-1
#define stand		0
#define run			1
#define walk		2
#define jump		3
#define fall		4
#define attack_a	5
#define attack_b	6
#define attack_c	7
#define attack_d	8
#define attack_e	9
#define attack_f	10
TEXT* pl1_tAnim = {
	strings = 32;
	string = "stand";
	string = "run";
	string = "walk";
	string = "jump";
	string = "fall";
	string = "attack_a";
	string = "attack_b";
	string = "attack_c";
	string = "attack_d";
	string = "attack_e";
	string = "attack_f";

}
var pl1_aAnimMode[32];
var pl1_aAnimSp[32];


#define jmp0 0
#define jmp1 1
#define jmp2 2
#define jmp3 3
#define jmp10 10

#define mv0 0
#define mv1 1
#define mv2 2

//
#define _moveX				skill22
#define _moveY				skill23
#define _moveZ				skill24
#define force_x				skill25
#define force_y				skill26
#define force_z				skill27
#define velocity_x		skill28
#define velocity_y		skill29
#define velocity_z		skill30
#define _ani1				skill31
#define _ani2			skill32
#define _aniBlend			skill33
#define currentframe		skill34
#define blendframe		skill35
#define z_offset			skill50
#define _jmp					skill51
#define _gravity			skill52
#define _mv						skill53
#define _moving				skill54
#define hit_by_player	skill55
#define entity_type		skill56

#define _ht skill57


ENTITY* pl1_eWp1;
ENTITY* pl1_eTargetEnemy;
var pl1_nAirAttack = 0;
var pl1_nComboNext = 0;
var pl1_nLockOn = 0;


VECTOR* cam_vMoveTo = { x=0;	y=0;	z=0; }
var cam_nDist = 200;
var cam_nPan;
var cam_nTilt;
//
var in_space = 0;
var in_mouseL = 0;
var in_mouseR = 0;

//
VECTOR* v1 = { x=0; 	 y=0; 	z=0; }
VECTOR* v2= { x=0; 	 y=0; 	z=0; }
ANGLE*  angle1 = { pan=0; tilt=0; roll=0; }
ANGLE*  angle2= { pan=0; tilt=0; roll=0; }
//
//
var c_nResult = 0;
var c_nRotate = 2;
STRING* wp1_md1 = "sword.mdl";

function pl1f_anim(var animation_speed); 
function cf_rotate1(var _nAngle, var _nSp);
function cf_rotate2(var _angle, var _speed);


action wpa_1() {
	pl1_eWp1 = me;
	set(my,PASSABLE);
	proc_mode = PROC_LATE;
	while(you!=NULL) {
		vec_for_vertex(v1.x,  you, 1175);		//hand palm base
		vec_for_vertex(v2.x, you, 1240);		//hand palm tip
		vec_set(my.x, v1.x);
		vec_diff(v1.x, v2.x, v1.x);
		vec_to_angle(angle1.pan, v1.x);
		vec_set(my.pan, angle1.pan);
		wait(1);
	}
}

/******************************
	pl1f_animE
*******************************/
function pl1f_animE(var _index, STRING* _name, var _mode, var _speed) {
	str_cpy((pl1_tAnim.pstring)[_index], _name);
	pl1_aAnimMode[_index] = _mode;
	pl1_aAnimSp[_index] = _speed;
}
/******************************
	pl1f_animInit
*******************************/
function pl1f_animInit() {
	pl1f_animE(stand, "stand", ANM_CYCLE, 5);
	pl1f_animE(run, "run", ANM_CYCLE, 8);
	pl1f_animE(walk, "walk", ANM_CYCLE, 8);
	pl1f_animE(jump, "jump", 0, 10);
	//plf_animE(fall, "fall", 0, 
	pl1f_animE(attack_a, "attack_a", 0, 20);
	pl1f_animE(attack_b, "attack_b", 0, 15);
	pl1f_animE(attack_c, "attack_c", 0, 10);
	pl1f_animE(attack_d, "attack_d", 0, 15);
	pl1f_animE(attack_e, "attack_e", 0, 15);
	pl1f_animE(attack_f, "attack_f", 0, 6);
}
/******************************
	pl1f_move
*******************************/
function pl1f_move() {
	v1.x = -1000;
	v1.y = 0;
	my._moving = 0;
	if (key_w == 1 && key_s == 0 && key_a == 0 && key_d == 0) 	{ v1.x = camera.pan; }
	if (key_s == 1 && key_w == 0 && key_a == 0 && key_d == 0) 	{ v1.x = camera.pan + 180; }
	if (key_a == 1 && key_s == 0 && key_w == 0 && key_d == 0) 	{ v1.x = camera.pan + 90; }
	if (key_d == 1 && key_s == 0 && key_a == 0 && key_w == 0) 	{ v1.x = camera.pan - 90; }
	if (key_w == 1 && key_a == 1 && key_d == 0 && key_s == 0) 	{ v1.x = camera.pan + 45; }
	if (key_w == 1 && key_d == 1 && key_a == 0 && key_s == 0) 	{ v1.x = camera.pan - 45; }
	if (key_s == 1 && key_a == 1 && key_d == 0 && key_w == 0) 	{ v1.x = camera.pan + 135; }
	if (key_s == 1 && key_d == 1 && key_a == 0 && key_w == 0) 	{ v1.x = camera.pan - 135; }
	if (v1.x != -1000) {
		my._moving = 1;
		if (key_shift == 1)	{ 
			v1.y = 10 * time_step; 
		} else { 
			v1.y = 15 * time_step; 
		}
	}

	if (my._mv == mv0) {
		my._moveX = fcos(v1.x,v1.y);
		my._moveY = fsin(v1.x,v1.y);
	}
	if (my._mv == mv1 || my._mv == mv2) {
		v1.y = fsin((my._ani1 * 1.2) + 45,15 * time_step);
		my._moveX = fcos(my.pan,v1.y);
		my._moveY = fsin(my.pan,v1.y);
		v1.y = 0;
		if (v1.x != -1000) { v1.y = 1; }	//if we need to rotate whilst attacking (the player is pressing keys to rotate)
	}
	//
	c_move(me,nullvector,my._moveX, USE_AABB|IGNORE_PASSABLE|GLIDE);
	//
	//result = trace(vector(my.x,my.y,my.z - my.z_offset),vector(my.x,my.y,my.z - 4000));
	//if (result < 0)	{	my.z -= result;	my.velocity_z = 0;	}
	if (pl1_eTargetEnemy == NULL) {	
		if (v1.y > 0) { cf_rotate1(v1.x,30); }		
	} else {
		vec_diff(v2.x,pl1_eTargetEnemy.x,my.x);
		vec_to_angle(angle2.pan,v2.x);
		cf_rotate1(angle2.pan,30);
	}
	//
	switch(my._mv) {
 		case mv0:		
			my._gravity = 6;
			if (my._moveX != 0 || my._moveY != 0) { //if we are moving
				if (my._aniBlend == stand) {//if our current animation is stand
					if (key_shift == 1)	{ 
						my.blendframe = walk;
					} else { 
						my.blendframe = run;
					} 
				}
				if (my._aniBlend == run  && key_shift == 1)	{ my.blendframe = walk; }
				if (my._aniBlend == walk && key_shift == 0)	{ my.blendframe = run; } 
			} else {
				//if we arn't moving and our current animation is walk or run, blend and cycle the stand animation
				if (my._aniBlend > stand 
				&& my._aniBlend != jump 
				&& my._aniBlend != fall) {
					my.blendframe = stand;
				}
			}
			if (mouse_left == 0 && in_mouseL == 1)	{ in_mouseL = 0; } 
			if (mouse_left == 1 
			&& in_mouseL == 0 
			&& my._aniBlend >= stand) {
				in_mouseL = 1;
				my.blendframe = attack_a;						
				pl1_nAirAttack = (my._jmp == jmp1);
				my._mv = 1;
				pl1_nComboNext = 0;
			}
			if (mouse_right == 0 && in_mouseR == 1) { in_mouseR = 0; }
			if (mouse_right == 1 && in_mouseR == 0) {
				if (pl1_nLockOn == 0) {
					c_scan(player.x,player.pan,vector(360,180,250),SCAN_ENTS|SCAN_LIMIT|IGNORE_ME);
					if (you != NULL) {
						if (you.entity_type == 2)  {//make sure you've scanned an enemy
							pl1_nLockOn = 1;		
							pl1_eTargetEnemy = you;		
						}
					}
				} else {	
					pl1_nLockOn = 0;		pl1_eTargetEnemy = NULL;		
				}
				in_mouseR = 1;
			}
			break;
 		case mv1:		
			if (my._jmp != jmp10) { 
				my._jmp = jmp0; 
			} else if((my._ani1 >= 60)
			&&(my._aniBlend >= stand)) { 
				my._jmp = jmp0; 
			}
			if(mouse_left == 0 && in_mouseL == 1)  { in_mouseL = 0; }
			if(mouse_left == 1 
			&& in_mouseL == 0 
			&& my._ani1 >= 30 
			&& pl1_nComboNext == 0) {	
				in_mouseL = 1;
				pl1_nComboNext = 1; 	
			}
			break;
 		case mv2:		
			my._jmp = jmp0;
			if(mouse_left == 0 && in_mouseL == 1) { in_mouseL = 0; }
			if(mouse_left == 1 
			&& in_mouseL == 0 
			&& my._ani1 >= 30 
			&& pl1_nComboNext == 0) {
				in_mouseL = 1;
				pl1_nComboNext = 1; 		
			}
			break;
	}
}
/******************************
	pl1f_gravity
*******************************/
function pl1f_gravity() {
	//c_nResult = c_trace(vector(my.x,my.y,my.z - my.z_offset),vector(my.x,my.y,my.z - 1000),IGNORE_ME|IGNORE_PASSABLE|USE_POLYGON);
	my._ht = c_trace(vector(my.x,my.y,my.z - my.z_offset),vector(my.x,my.y,my.z - (my.z_offset * 2)),IGNORE_ME|IGNORE_PASSABLE|USE_POLYGON);
	my._ht += (trace_hit == 0 && my._ht == 0) * my.z_offset * 2;
	//spof_n1("ht: ", my._ht);
	if(my._ht < 3) {	
		//if(c_nResult < 0) {	c_nResult = c_trace(my.x,vector(my.x,my.y,my.z + 4000),IGNORE_ME|IGNORE_PASSABLE|USE_POLYGON);	}//!!FUDGE!! stop skyjumping
		//
		if(my._jmp==jmp0) {
			my.force_z = -1 * my._ht;
			if((key_space==0) && (in_space==1))	{ in_space = 0; } 
			if((key_space==1) 
			&& (in_space==0) 
			&& (my._mv==mv0) 
			&& (my._aniBlend>=stand) 
			&& (my._aniBlend!=jump)
			&& (my._aniBlend!=fall)) {
				in_space = 1;
				my._jmp = jmp1;
				my.force_z = 25;
				my.blendframe = jump;
				my._ani2 = 0;
				my._aniBlend = blend;
			}
		}
		if((my._jmp==jmp2) || (my._jmp==jmp3))	{ my._jmp = jmp0; }
	} else {
		if(my._jmp==jmp2) {
			if(my._ht > 120) {
				my._ani1 = 60;
				my._jmp = jmp3;
			} else	{ 
				my._jmp = jmp0;
			}
		}
		if((my._jmp==jmp3) && (my._ht <=120)) { my._jmp = jmp0; }	
		if((my._jmp==jmp0) && (my._mv==0)) {
			if((my._ht > 120) 
			&& (my._aniBlend>=stand) 
			&& (my._aniBlend!=jump) 
			&& (my._aniBlend!=fall)) {
				my._jmp = jmp3;
				my.blendframe = fall;
				my._ani2 = 0;
				my._aniBlend = blend;
			}
		}
		my.force_z -= my._gravity * time_step;
		my.force_z = maxv(-30,my.force_z);
		if(my._mv==mv2) { my.force_z = 0; }
	}
 	my.velocity_z += (time_step * my.force_z) - (minv(time_step*0.7,1) * my.velocity_z);
	my._moveZ = my.velocity_z * time_step;
}

/******************************
	pl1f_cam1
		Stable/rigid camera collision
*******************************/
function pl1f_cam1() {
	camera.pan -= mouse_force.x * 12 * time_step;
	camera.tilt += mouse_force.y * 8 * time_step;
	camera.tilt = clamp(camera.tilt,-30,10);
	angle1.pan = fcos(camera.tilt,-cam_nDist);
	vec_set(camera.x,vector(my.x + fcos(camera.pan,angle1.pan),my.y + fsin(camera.pan,angle1.pan),my.z + 20 + fsin(camera.tilt,-cam_nDist)));
	vec_diff(v1.x,camera.x,my.x); 	//find the vector from the player to the camera
	vec_normalize(v1.x,16); 			//get the magnitude of it's vector to 16 quants and store it in temp
	vec_add(v1.x,camera.x); //add the vector (from player to camera) of a magnitude of 16 quants and add it to the camera's position.
	c_nResult = c_trace(my.x,v1.x,IGNORE_ME|IGNORE_PASSABLE|IGNORE_MODELS);
	if(c_nResult > 0) {
		vec_diff(v1.x,my.x,target.x); //find the vector from the point the trace hit to the player
		vec_normalize(v1.x,16); 		//get the magnitude of this vector to 16 quants and store in temp
		vec_set(camera.x,target.x);		//place the camera at the trace hit point
		vec_add(camera.x,v1.x);			//move the camera away from the wall by the vector temp, 16 quants towards the player
	}
}

/******************************
	pl1f_cam2
		Smoother camera collision
			not used
*******************************/
function pl1f_cam2() {
	cam_nPan -= mouse_force.x * 12 * time_step;
	cam_nTilt += mouse_force.y * 8 * time_step;
	cam_nTilt = clamp(cam_nTilt,-30,10);
	camera.pan = cam_nPan;
	angle1.pan = fcos(cam_nTilt,-cam_nDist);
	vec_set(cam_vMoveTo.x,vector(my.x + fcos(camera.pan,angle1.pan),my.y + fsin(camera.pan,angle1.pan),my.z + 20 + fsin(cam_nTilt,-cam_nDist)));
	var temp = minv(1,0.5 * time_step); //changing 0.5 will change how fast the camera moves, at 1 places us at target, this value is what allows the smooth movement
	camera.x += temp*(cam_vMoveTo.x - camera.x);
	camera.y += temp*(cam_vMoveTo.y - camera.y);
	camera.z += temp*(cam_vMoveTo.z - camera.z);
	vec_diff(v1.x,camera.x,my.x);
	vec_normalize(v1.x,16);
	vec_add(v1.x,camera.x);
	if (c_trace(my.x,v1.x,IGNORE_ME|IGNORE_PASSABLE|IGNORE_MODELS) > 0) {
		vec_diff(v1.x,my.x,target.x);
		vec_normalize(v1.x,16);
		vec_set(camera.x,target.x);
		vec_add(camera.x,v1.x);
	}
	vec_diff(v1.x,my.x,camera.x);
	vec_to_angle(camera.pan,v1.x);
}

/******************************
	cf_rotate1
*******************************/
function cf_rotate1(var _nAngle, var _nSp) {
	if (c_nRotate == 2) { cf_rotate2(_nAngle, _nSp); }
	if(my.pan == _nAngle) { return; }
	c_nResult = ang(_nAngle - my.pan);
	if (c_nResult > 0)		my.pan += _nSp * time_step;
	if (c_nResult < 0)		my.pan -= _nSp * time_step; 
	if ((ang(_nAngle - my.pan) < 0) && (c_nResult > 0))	{ my.pan = _nAngle; } 
	if ((ang(_nAngle - my.pan) > 0) && (c_nResult < 0))	{ my.pan = _nAngle; } 
}
/******************************
	cf_rotate2
		uses c_rotate
		not currenty used
*******************************/
function cf_rotate2(var _angle, _speed) {
	if (my.pan == _angle) { return; }
	c_nResult = ang(_angle - my.pan);
	angle1.pan = minv(abs(c_nResult), time_step * _speed) * sign(c_nResult);
	angle1.tilt = 0;
	angle1.roll = 0;
	c_rotate(me, angle1, IGNORE_ME | IGNORE_PASSABLE);
}
//
/******************************
	wp1f_collide
*******************************/
function wp1f_collide() {
	you = NULL;
	vec_for_vertex(v1.x, pl1_eWp1,274); //sword base
	vec_for_vertex(v2.x,pl1_eWp1, 54); //sword tip
	c_nResult = c_trace(v1.x,v2.x,IGNORE_ME|IGNORE_PASSABLE|USE_BOX);
	if (you != NULL) {
		if ((you.entity_type == 2) && (you.hit_by_player == 0)) {
			if (pl1_nAirAttack == 1 && my._aniBlend == attack_a) { my._mv = mv2; }
			you.hit_by_player = 1;
			if (pl1_eTargetEnemy == NULL)		{	
				pl1_eTargetEnemy = you;
				pl1_nLockOn = 1; 	
			}
		}
	}
}
/******************************
	pl1a1
*******************************/
action pl1a1() {
	pl1f_animInit();
	c_setminmax(me);					//added to correct ground collisions
	wait(1);								//added to correct ground collisions
	player = me;
	my._gravity = 6;
	my.z_offset = -my.min_z;		//was 6	//added to correct ground collisions
	set(my,SHADOW);
	ent_create(wp1_md1, my.x, wpa_1);
	wait(1);
	while(me != NULL) { //the main loop
		pl1f_gravity();
		pl1f_move();
		pl1f_anim(1);
		pl1f_cam1();
		wait(1);
	}
}

#endif



enemy.c
Click to reveal..

Code:
#ifndef enemy_c
#define enemy_c
/////
//
//
action enemy_dummy()
{
	set(my,SHADOW);
	my.entity_type = 2;
	my.emask |= ENABLE_SCAN;
	while(1) {
		if(player!=NULL) {
			if(my.hit_by_player==1) {
				my._moveX = player._moveX;
				my._moveY = player._moveY;
				my._moveZ = player._moveZ;
				c_move(my, nullvector, my._moveX, USE_AABB|IGNORE_PASSABLE|GLIDE);
				if((player._aniBlend==blend)
				|| (player._aniBlend<attack_a) 
				|| (my._aniBlend>attack_f)) { 
					my.hit_by_player=0;
				}
			}
			if((player._aniBlend>=stand) 
			&& (pl1_eTargetEnemy==me) 
			&& (pl1_nLockOn==0) 
			&& ((player._aniBlend<attack_a) || (player._aniBlend>attack_f))) {	
				pl1_eTargetEnemy = NULL;	 
			}
			if((pl1_eTargetEnemy==me)&&(vec_dist(my.x,player.x)>200)) { pl1_eTargetEnemy = NULL; }
		}
		wait(1);
	}
}
//
//
/////
#endif


animaton.c
Click to reveal..

Code:
#ifndef animation_c
#define animation_c
/////
//
//


function pl1f_anim(var anim_sp) 
{
	if(anim_sp <= 0) { anim_sp = 1; }
	if(my._aniBlend != blend 
	&& my.blendframe != nullframe) { 
		my._ani2 = 0;
		my._aniBlend = blend; 
	}
	if(my._aniBlend == blend) {
		/*
		if(my.currentframe == stand) { ent_animate(my,"stand",my._ani1,ANM_CYCLE); }
		if(my.currentframe == run) { ent_animate(my,"run",my._ani1,ANM_CYCLE); }
		if(my.currentframe == walk) { ent_animate(my,"walk",my._ani1,ANM_CYCLE); }
		if(my.currentframe == jump) { ent_animate(my,"jump",my._ani1,0); }
		if(my.currentframe == attack_a) { ent_animate(my,"attack_a",my._ani1,0); }
		if(my.currentframe == attack_b) { ent_animate(my,"attack_b",my._ani1,0); }
		if(my.currentframe == attack_c) { ent_animate(my,"attack_c",my._ani1,0); }
		if(my.currentframe == attack_d) { ent_animate(my,"attack_d",my._ani1,0); }
		if(my.currentframe == attack_e) { ent_animate(my,"attack_e",my._ani1,0); }
		if(my.currentframe == attack_f) { ent_animate(my,"attack_f",my._ani1,0); }
		*/
		ent_animate(me, (pl1_tAnim.pstring)[my.currentframe], my._ani1, pl1_aAnimMode[my.currentframe]);
		if (my.blendframe != blend) {
			ent_blend((pl1_tAnim.pstring)[my.blendframe], 0, my._ani2);
		}
		
		my._ani2 += 45 * time_step;
		if(my._ani2 >= 100) {
			my._ani1 = 0;
			my._aniBlend = my.blendframe;
			my.blendframe = nullframe;
		}
	}
	switch(my._aniBlend) {
		case stand:	
			ent_animate(me,"stand",my._ani1,ANM_CYCLE);
			my._ani1 += 5 * anim_sp * time_step;
			my._ani1 %= 100;
			my.currentframe = my._aniBlend;
			break;
		case run:
			ent_animate(my,"run",my._ani1,ANM_CYCLE);
			my._ani1 += 8 * anim_sp * time_step;
			my._ani1 %= 100;
			my.currentframe = my._aniBlend;
			break;
		case walk:
			ent_animate(my,"walk",my._ani1,ANM_CYCLE);
			my._ani1 += 8 * anim_sp * time_step;
			my._ani1 %= 100;
			my.currentframe = my._aniBlend;
			break;
		case attack_a:
			ent_animate(my,"attack_a",my._ani1,0);
			my._ani1 += 20 * anim_sp * time_step;
			my.currentframe = attack_a;
			if(my._ani1 >= 100) {
				ent_animate(my,"attack_a",100,0);
				my._ani1 = 100;
				my.blendframe = stand;
				if(my._moving == 1) {
					if(key_shift == 1) { my.blendframe = walk; } else { my.blendframe = run; }
				}
				if(pl1_nComboNext == 1) {
					pl1_nComboNext = 0;
					my.blendframe = attack_b;
				} else {
					my._mv = 0;
				}
			}
			break;
		case attack_b:
			ent_animate(my,"attack_b",my._ani1,0);
			my._ani1 += 15 * anim_sp * time_step;
			my.currentframe = attack_b;
			if(my._ani1 >= 100) {
				ent_animate(my,"attack_b",100,0);
				my._ani1 = 100;
				my.blendframe = stand;
				if(my._moving == 1) {
					if(key_shift == 1) { my.blendframe = walk; } else { my.blendframe = run; }
				}
				if(pl1_nComboNext == 1) {
					pl1_nComboNext = 0;
					my.blendframe = attack_c;
				} else {
					my._mv = 0;
				}
			}
			break;
		case attack_c:
			ent_animate(my,"attack_c",my._ani1,0);
			my._ani1 += 10 * anim_sp * time_step;
			my.currentframe = attack_c;
			if(my._ani1 >= 100) {
				ent_animate(my,"attack_c",100,0);
				my._ani1 = 100;
				my.blendframe = stand;
				if(my._moving == 1) {
					if(key_shift == 1) { 
						my.blendframe = walk; 
					} else { 
						my.blendframe = run; 
					}
				}
				if(pl1_nComboNext == 1) {
					my._jmp = jmp10;
					my.force_z = 12;
					my._gravity = 4;
					pl1_nComboNext = 0;
					my.blendframe = attack_d;
				} else {
					my._mv = 0;
				}
			}
			break;
		case attack_d:
			wp1f_collide();
			ent_animate(my,"attack_d",my._ani1,0);
			my._ani1 += 15 * anim_sp * time_step;
			my.currentframe = attack_d;
			if(my._ani1 >= 100) {
				ent_animate(my,"attack_d",100,0);
				my._ani1 = 100;
				my.blendframe = stand;
				if(my._moving == 1) {
					if(key_shift == 1) { 
						my.blendframe = walk; 
					} else { 
						my.blendframe = run; 
					}
				}
				if(pl1_nComboNext == 1) {
					pl1_nComboNext = 0;
					my.blendframe = attack_e;
				} else {
					my._mv = mv0;
				}
			}
			break;
		case attack_e:
			ent_animate(my,"attack_e",my._ani1,0);
			my._ani1 += 15 * anim_sp * time_step;
			my.currentframe = attack_e;
			if(my._jmp == jmp0
			&& my._ani1 >= 20 
			&& my._ani1 < 60) {
				my._gravity = 3;
				my._jmp = jmp10;
				my.force_z = 15;
			}
			//block122
			if(my._ani1 >= 100) {
				ent_animate(my,"attack_e",100,0);
				my._ani1 = 100;
				my.blendframe = stand;
				if(my._moving == 1) {
					if(key_shift == 1) { 
						my.blendframe = walk; 
					} else { 
						my.blendframe = run; 
					}
				}

				if(pl1_nComboNext == 1) {
					pl1_nComboNext = 0;
					my.blendframe = attack_f;
				} else {
					my._mv = mv0;
				}
			}
			break;
		case attack_f:
			ent_animate(my,"attack_f",my._ani1,0);
			my._ani1 += 6 * anim_sp * time_step;
			my.currentframe = attack_f;
			if(my._jmp == jmp0 
			&& my._ani1 >= 40 
			&& my._ani1 < 60) {
				my._gravity = 6;
				my._jmp = jmp10;
				my.force_z = 12;
			}
			//block121
			if(my._ani1 >= 100) {
				my._mv = mv0;
				ent_animate(my,"attack_f",100,0);
				my._ani1 = 100;
				my.blendframe = stand;
				if(my._moving == 1) {
					if(key_shift == 1) { 
						my.blendframe = walk; 
					} else { 
						my.blendframe = run; 
					}
				}
			}
			break;
	}
	if(my._aniBlend == jump 
	|| my._aniBlend == fall) {
		if(my._jmp == jmp3) { my._ani1 = 60; }
		ent_animate(me,"jump",my._ani1,0);
		my._ani1 += 10 * anim_sp * time_step;
		my.currentframe = jump;
		if(my._ani1 >= 60 && my._jmp == jmp1) { my._jmp = jmp2; }
		if(my._ani1 >= 100) {
			ent_animate(me,"jump",100,0);
			my._ani1 = 100;
			my.blendframe = stand;
			if(my._moving == 1) {
				if(key_shift == 1) { 
					my.blendframe = walk; 
				} else { 
					my.blendframe = run; 
				}
			}
		}
	}

	if(my._aniBlend >= attack_a && my._aniBlend <= attack_f) { wp1f_collide(); }
	if(my._aniBlend != blend && my.blendframe != nullframe) { my._ani2 = 0; my._aniBlend = blend; }
}
//
//
/////
#endif