/*-----重力設定--------------------------*/
if( air ){
	gravity = global.G;
	gravity_direction = global.Gdir;
}else{
	gravity = 0;
	gravity_direction = 0;
	hspeed *= 0.3;
}

with(objEnemyEdit){ if(Edit_Play) exit; }

/*-----キャラクタとの情報の取得---------------*/
playerDistance = point_distance(x,y,objPlayerDoll.x,objPlayerDoll.y);
playerDirection = point_direction(x,y,objPlayerDoll.x,objPlayerDoll.y);

/*-----モーション毎の処理--------------------*/
if(RECV_DAMAGE) playEnemySound(SOUND_DAMAGE);

if(!ChangeMotion){
	switch(MotionNum){
		case START :
			if( KeyFrmNum == 1 ) MotionChange(START,0,1);
			if( KeyFrmNum < 3 && (!objPlayerDoll.air && playerDistance<300 || RECV_DAMAGE) ){
				MotionChange(START,3,1);
				playEnemySound(SOUND_ARM);
				playEnemySound(SOUND_STEAM);
			}
			if(MOTIONEND){
				MotionChange(STAND,0,10);
			}
			break;
		case STAND :
			/* 相手の方を向く */
			if(objPlayerDoll.x > x) Direction = Right;
			else Direction = Left;

			/* 近づいたら歩く */
			if(!air && global.PlayerHP>0){
				if(playerDistance<80){
					if(place_free(x-150*Direction,y))	MotionChange(CATCH_0,0,5);
					else								MotionChange(PUNCH,0,5);
					break;
				}else if(playerDistance<130){
					MotionChange(PUNCH,0,5);
				}else if(playerDistance<170){
					if(place_free(x-150*Direction,y))	MotionChange(CATCH_1,0,5);
					else								MotionChange(PUNCH,0,5);
					break;
				}else if(playerDistance<700){
					if(place_free(x-30*Direction,y)) MotionChange(WALK,0,5); break;
				}

				/* 攻撃されたら一定確率で突進 */
				if(RECV_DAMAGE && 10>random(100)){ MotionChange(BACK,0,5); break; }
			}
			break;
		/* ------------------------------------------------------------ */
		case WALK :
			playEnemySound(SOUND_MOVE_LOW);
			if(place_free(x-10*Direction,y)) x -= 7.0*Direction;

			/* 攻撃されたら一定確率で突進 */
			if( !air && RECV_DAMAGE && 10>random(100)){ MotionChange(BACK,0,5); break; }

			/* 一定確率で突進 */
			if( !air && 10>random(100) && playerDistance>480 ){
				if(50<random(100))	MotionChange(BACK,0,1);
				else				MotionChange(RUN2,0,1);
				break;
			}

			if(playerDistance<80){
				if(place_free(x-150*Direction,y))	MotionChange(CATCH_0,0,5);
				else								MotionChange(PUNCH,0,5);
				break;
			}else if(playerDistance<130){
				MotionChange(PUNCH,0,5);
			}else if(playerDistance<170){
				if(place_free(x-150*Direction,y))	MotionChange(CATCH_1,0,5);
				else								MotionChange(PUNCH,0,5);
				break;
			}

			/* 近づきすぎたり離れたりしたら止まる */
			if( 100>playerDistance || playerDistance>800 ){ MotionChange(STAND,0,5); break; }
			/* ぶつかったら止まる */
			if( !place_free(x-30*Direction,y) ){ MotionChange(STAND,0,5); break; }
			break;
		/* ------------------------------------------------------------ */
		case BACK :
			switch(KeyFrmNum){
				case 1 : if(KEYFRAME) playEnemySound(SOUND_ARM); break;
				case 4 : if(place_free(x+3*Direction,y)) x += 2.0*Direction; break;
				case 5 : if(place_free(x+3*Direction,y)) x += 6.0*Direction; break;
				case 6 : if(place_free(x+3*Direction,y)) x += 4.0*Direction; break;
				case 7 : if(place_free(x+3*Direction,y)) x += 1.0*Direction; break;
			}
			if(MOTIONEND){ MotionChange(RUN,0,1); break; }
			break;
		/* ------------------------------------------------------------ */
		case RUNSTOP :
			switch(KeyFrmNum){
				case 1 :
						if(KEYFRAME) playEnemySound(SOUND_STEAM);
						if(place_free(x-2*Direction,y)) x -= 5.0*Direction; break;
				case 2 : if(place_free(x-2*Direction,y)) x -= 4.0*Direction; break;
				case 3 : if(place_free(x-2*Direction,y)) x -= 2.0*Direction; break;
				case 4 : if(place_free(x-2*Direction,y)) x -= 1.0*Direction; break;
				case 5 : if(place_free(x-2*Direction,y)) x -= 0.5*Direction; break;
			}
			if(MOTIONEND){ MotionChange(STAND,0,1); break; }
			break;
		/* ------------------------------------------------------------ */
		case RUN :
			playEnemySound(SOUND_MOVE_HI);
			if(place_free(x-50*Direction,y)) x -= 40.0*Direction;

			with( collision_circle( Process[PARTS_TIRE_FRONT].x-50*Direction, Process[PARTS_TIRE_FRONT].y, 32, objPlayerDoll,0,1) ){
				if(!INV && !BINDED){
					DamageVoiceRandom_Low();
					hspeed = 30*other.Direction*-1;
					if( Direction!=other.Direction ) addDamage(5,FLYING_0, 0, 1, FLYING_0, 0, 2);
					else							 addDamage(5,FLYING_1, 0, 1, FLYING_1, 0, 2);
					Quake(15,5);
					Fluid(x,y,COLOR_BLOOD,5,0,10,0,180,0.5);
					sound_play(sndHit02);
				}
			}

			/* ぶつかったら止まる */
			if( !place_free(x-96*Direction,y) ){ MotionChange(RUNSTOP,0,1); break; }
			/* 通り過ぎても止まる */
			if( playerDistance>250 ){
				if(objPlayerDoll.x > x){
					if( Direction != Right ){ MotionChange(RUNSTOP,0,1); break; }
				}else{
					if( Direction != Left ){ MotionChange(RUNSTOP,0,1); break; }
				}
			}
			break;
		/* ------------------------------------------------------------ */
		case RUN2 :
			playEnemySound(SOUND_MOVE_HI);
			if(place_free(x-50*Direction,y)) x -= 40.0*Direction;

			with( collision_circle( Process[PARTS_TIRE_FRONT].x-50*Direction, Process[PARTS_TIRE_FRONT].y, 32, objPlayerDoll,0,1) ){
				if(!INV && !BINDED){
					DamageVoiceRandom_Low();
					if( Direction!=other.Direction ) addDamage(20,FLYING_0, 0, 1, FLYING_0, 0, 2);
					else							 addDamage(20,FLYING_1, 0, 1, FLYING_1, 0, 2);
					hspeed = 40*other.Direction*-1;
					vspeed = -10;
					sound_play(sndBulletHit);
					Quake(15,5);
					with(other){ playEnemySound(SOUND_CLASH); MotionChange(RUNSTOP,0,1); break; }
				}
			}

			/* ぶつかったら止まる */
			if( !place_free(x-96*Direction,y) ){ MotionChange(RUNSTOP,0,1); break; }
			/* 通り過ぎても止まる */
			if( playerDistance>250 ){
				if(objPlayerDoll.x > x){
					if( Direction != Right ){ MotionChange(RUNSTOP,0,1); break; }
				}else{
					if( Direction != Left ){ MotionChange(RUNSTOP,0,1); break; }
				}
			}
			break;
		/* ------------------------------------------------------------ */
		case DEAD_MOTION :
			switch(KeyFrmNum){
				case 1 : 
					if(KEYFRAME) effect_create_above(ef_smokeup,x,y,0,c_black);
					break;
				case 2 : 
				case 4 : 
				case 6 : 
				case 8 : 
				case 10 : 
				case 12 : 
				case 14 : 
				case 16 : 
					if(KEYFRAME){
						Quake(10,10);
						sound_play(sndBomb);
						instance_create(x-100+random(200),y-100+random(200),objExplosionSmall);
					}
					break;
			}
			if(MOTIONEND){
				effect_create_above(ef_smoke,x,y,2,c_gray);
				effect_create_above(ef_explosion,x,y,1,c_black);
				Flash(c_white,0.1,0.05);

				var Num,VarianceX,VarianceY,Color,Alpha,Gravity,GravityDir,AngleMin,AngleRange,SpeedMin,SpeedRange,TimeMin,TimeRange;
				Num = 50;
				VarianceX = 64;					VarianceY = 64;
				Color = c_yellow;				Alpha = 1;
				Gravity = global.G;				GravityDir = global.Gdir;
				AngleMin = 0;					AngleRange = 180;
				SpeedMin = 10;					SpeedRange = 25;
				TimeMin = 5;					TimeRange = 5;
				Particle(Num,VarianceX,VarianceY,Color,Alpha,Gravity,GravityDir,AngleMin,AngleRange,SpeedMin,SpeedRange,TimeMin,TimeRange);

				Quake(25,15);
				instance_create(x,y,objExplosionBig);
				sound_play(sndBomb);

				objDisplay.alarm[11] = 60;
				instance_destroy();
			}
			break;
		/* ------------------------------------------------------------ */
		case THROW_0 :
			switch(KeyFrmNum){
				case 1 : if(KEYFRAME) playEnemySound(SOUND_STEAM);	break;
				case 6 : if(KEYFRAME) playEnemySound(SOUND_ARM);	break;
				case 10 : 
					if(KEYFRAME){
						FearVoiceRandom_Mid();
						sound_play(sndSwing00);
						with(objPlayerDoll){
							if(BINDED){
								with(other){ endBind(); }
								addDamage(30,FLYING_0, 0, 1, FLYING_0, 0, 2);
								hspeed = 60*other.Direction*-1;
								vspeed = -5;
							}
						}
					}
					break;
			}
			if(BindTarget){
				if(!BindTarget.BINDED){
					with(BindTarget){ MotionChange(STAND_0,0,2); }
					endBind();
				}else{
					depth = objPlayerDoll.depth + 1000;
					for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
					Process[PARTS_ARM1_ABOVE].depth = objPlayerDoll.depth - 1001;
					Process[PARTS_ARM2_ABOVE].depth = objPlayerDoll.depth - 1000;
					Process[PARTS_ARM3_ABOVE].depth = objPlayerDoll.depth - 1002;
					with(objPlayerDoll){
						HAND1_ABOVE.depth = objPlayerDoll.depth - 1015;
						HAND2_ABOVE.depth = objPlayerDoll.depth - 1014;
						HAND3_ABOVE.depth = objPlayerDoll.depth - 1013;
					}
				}
			}
			if(MOTIONEND){ MotionChange(STAND,0,1); break; }
			break;
		/* ------------------------------------------------------------ */
		case THROW_1 :
			switch(KeyFrmNum){
				case 1 : if(KEYFRAME) playEnemySound(SOUND_STEAM);	break;
				case 6 : if(KEYFRAME) playEnemySound(SOUND_ARM);	break;
				case 11 : 
					if(KEYFRAME){
						FearVoiceRandom_Mid();
						sound_play(sndSwing00);
						with(objPlayerDoll){
							if(BINDED){
								with(other){ endBind(); }
								addDamage(30,FLYING_0, 0, 1, FLYING_0, 0, 2);
								hspeed = 30*other.Direction*-1;
								vspeed = 25;
							}
						}
						MotionChange(RUN2,0,10);
					}
					break;
			}
			if(BindTarget){
				if(!BindTarget.BINDED){
					with(BindTarget){ MotionChange(STAND_0,0,2); }
					endBind();
				}else{
					depth = objPlayerDoll.depth + 1000;
					for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
					Process[PARTS_ARM1_ABOVE].depth = objPlayerDoll.depth - 1001;
					Process[PARTS_ARM2_ABOVE].depth = objPlayerDoll.depth - 1000;
					Process[PARTS_ARM3_ABOVE].depth = objPlayerDoll.depth - 1002;
					with(objPlayerDoll){
						HAND1_ABOVE.depth = objPlayerDoll.depth - 1015;
						HAND2_ABOVE.depth = objPlayerDoll.depth - 1014;
						HAND3_ABOVE.depth = objPlayerDoll.depth - 1013;
					}
				}
			}
			if(MOTIONEND){ MotionChange(STAND,0,1); break; }
			break;
		/* ------------------------------------------------------------ */
		case CATCH_0 :
			if(KeyFrmNum<8 && KeyFrmNum>3){
				col = collision_circle( Process[PARTS_ARM3_ABOVE].x, Process[PARTS_ARM3_ABOVE].y, 32, objPlayerDoll,0,1);
				with(col){
					if(!INV && !BINDED){
						with(other){
							DamageVoiceRandom_Mid();
							playEnemySound(SOUND_STEAM);
							playEnemySound(SOUND_ARM);
							if(random(100)>50){
								startBind( col,BIND_CATCH_0_ATTACK_0,0,other.BINDED_BOSSROBOT_0_CATCH_0_ATTACK_0,0,1 );
								MotionChange( CATCH_0_ATTACK_0 , 0 , 1 );
							}else{
								startBind( col,BIND_CATCH_0_ATTACK_1,0,other.BINDED_BOSSROBOT_0_CATCH_0_ATTACK_1,0,1 );
								MotionChange( CATCH_0_ATTACK_1 , 0 , 1 );
							}
						}
						Direction = other.Direction*-1;
						Quake(5,5);
					}
				}
			}
			if(MOTIONEND){ MotionChange(STAND,0,1); break; }
			break;
		/* ------------------------------------------------------------ */
		case CATCH_0_ATTACK_0 :

			switch(KeyFrmNum){
				case 5 :
					if(KEYFRAME){
						DamageVoiceRandom_Mid();
						Quake(15,15);
						playEnemySound(SOUND_ARM);
						playEnemySound(SOUND_STEAM);
						addDamage(30,-1,-1,-1, -1,-1,-1);
					}
					break;
			}

			if(BindTarget){
				if(!BindTarget.BINDED || !place_free(x-100*Direction,y)){
					with(BindTarget){ move_outside_solid( 90,-1 );MotionChange(DOWN_0,0,2); }
					endBind();
					MotionChange( STAND , 0 , 30 );
				}else{
					depth = objPlayerDoll.depth + 1000;
					for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
					Process[PARTS_ARM1_ABOVE].depth = objPlayerDoll.depth - 1001;
					Process[PARTS_ARM2_ABOVE].depth = objPlayerDoll.depth - 1000;
					Process[PARTS_ARM3_ABOVE].depth = objPlayerDoll.depth - 1002;
					if(MOTIONEND){ 
						startBind( BindTarget,BIND_CATCH_0_ATTACK_0_RUN,0,BindTarget.BINDED_BOSSROBOT_0_CATCH_0_ATTACK_0_RUN,0,1 );
						MotionChange( CATCH_0_ATTACK_0_RUN , 0 , 1 );
					}
				}
			}
			break;
		/* ------------------------------------------------------------ */
		case CATCH_0_ATTACK_0_RUN :

			playEnemySound(SOUND_MOVE_HI);
			if(place_free(x-30*Direction,y)) x -= 30.0*Direction;

			if(BindTarget){
				if(!BindTarget.BINDED){
					with(BindTarget){ 
						move_outside_solid( 90,-1 );
						MotionChange(DOWN_0,1,2);
					}
					endBind();
					MotionChange( STAND , 0 , 10 );
				}else{

					if(!place_free(x-100*Direction,y)){
						DamageVoiceRandom_High();
						playEnemySound(SOUND_CLASH);
						addDamage(20,-1,-1,-1, -1,-1,-1);
						if(global.PlayerHP<0){
							Fluid(BindTarget.x,BindTarget.y,COLOR_BLOOD,60,10,40,0,360,0.5);
							Flash(c_red,1,0.1);
							Quake(30,15);
							playEnemySound(SOUND_HEAD);
						}

						with(BindTarget){ 
							move_outside_solid( 90,-1 );
							MotionChange(DOWN_0,1,2);
						}

						endBind();
						MotionChange( STAND , 0 , 60 );
					}

					with(BindTarget){ Fluid(x,y,COLOR_BLOOD,5,0,10,0,180,0.5); }

					Quake(5,5);
					addDamage(2,-1,-1,-1, -1,-1,-1);

					depth = objPlayerDoll.depth + 1000;
					for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
					Process[PARTS_ARM1_ABOVE].depth = objPlayerDoll.depth - 1001;
					Process[PARTS_ARM2_ABOVE].depth = objPlayerDoll.depth - 1000;
					Process[PARTS_ARM3_ABOVE].depth = objPlayerDoll.depth - 1002;
				}
			}
			break;
		/* ------------------------------------------------------------ */
		case CATCH_0_ATTACK_1 :
			if(KEYFRAME && KeyFrmNum==5){
				DamageVoiceRandom_High();
				Flash(c_red,0.5,0.1);
				sound_play(sndBone00);
			}
			if(KeyFrmNum>5){
				Quake(5,5);
				addDamage(1,-1,-1,-1, -1,-1,-1);
			}

			if(BindTarget){
				if(!BindTarget.BINDED || !place_free(x-100*Direction,y)){
					with(BindTarget){ move_outside_solid( 90,-1 );MotionChange(DOWN_0,0,2); }
					endBind();
					MotionChange( STAND , 0 , 30 );
				}else{
					depth = objPlayerDoll.depth + 1000;
					for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
					Process[PARTS_ARM1_ABOVE].depth = objPlayerDoll.depth - 1001;
					Process[PARTS_ARM2_ABOVE].depth = objPlayerDoll.depth - 1000;
					Process[PARTS_ARM3_ABOVE].depth = objPlayerDoll.depth - 1002;

					if(global.PlayerHP<0){
						CryingVoiceRandom_High();
						SpecialVoice(V_MUSE,0);
						with(objCommon_Body){ if(random(100)<80) FluidBreak = true; }
						Fluid(BindTarget.x,BindTarget.y,COLOR_BLOOD,60,10,40,0,360,0.5);
						Flash(c_red,1,0.1);
						Quake(30,15);
						playEnemySound(SOUND_HEAD);
						startBind( BindTarget,BIND_CATCH_0_ATTACK_1_FINISH,0,BindTarget.BINDED_BOSSROBOT_0_CATCH_0_ATTACK_1_FINISH,0,1 );
						MotionChange( CATCH_0_ATTACK_1_FINISH , 0 , 1 );
						break;
					}

					if(MOTIONEND){ 
						startBind( BindTarget,BIND_CATCH_0_ATTACK_1,6,-1,-1,-1 );
						MotionChange( CATCH_0_ATTACK_1 , 6 , 1 );
					}
				}
			}
			break;
		/* ------------------------------------------------------------ */
		case CATCH_0_ATTACK_1_FINISH :
			depth = objPlayerDoll.depth + 1000;
			for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
			Process[PARTS_ARM1_ABOVE].depth = objPlayerDoll.depth - 1001;
			Process[PARTS_ARM2_ABOVE].depth = objPlayerDoll.depth - 1000;
			Process[PARTS_ARM3_ABOVE].depth = objPlayerDoll.depth - 1002;

			if(MOTIONEND){ 
				startBind( BindTarget,BIND_CATCH_0_ATTACK_1_FINISH,4,-1,-1,-1 );
				MotionChange( CATCH_0_ATTACK_1_FINISH , 4 , 1 );
			}
			break;
		/* ------------------------------------------------------------ */
		case PUNCH :
			switch(KeyFrmNum){
				case 2 :
					if(KEYFRAME){
						playEnemySound(SOUND_ARM);
						playEnemySound(SOUND_STEAM);
					}
					break;
				case 6 :
				case 10 :
					if(KEYFRAME) sound_play(sndSwing00);
					col = collision_circle( Process[PARTS_ARM3_ABOVE].x, Process[PARTS_ARM3_ABOVE].y, 32, objPlayerDoll,0,1);
					with(col){
						if(!INV && !BINDED){
							DamageVoiceRandom_Mid();
							if( Direction!=other.Direction ) addDamage(10,FLYING_0, 0, 1, FLYING_0, 0, 2);
							else							 addDamage(10,FLYING_1, 0, 1, FLYING_1, 0, 2);
							hspeed = 40*other.Direction*-1;
							vspeed = -10;
							sound_play(sndBulletHit);
							Quake(15,5);
							with(other){ playEnemySound(SOUND_CLASH); break; }
						}
					}
					break;
				case 8 :
				case 12:
					if(KEYFRAME) sound_play(sndSwing00);
					col = collision_circle( Process[PARTS_ARM3_BELOW].x, Process[PARTS_ARM3_BELOW].y, 32, objPlayerDoll,0,1);
					with(col){
						if(!INV && !BINDED){
							DamageVoiceRandom_Mid();
							if( Direction!=other.Direction ) addDamage(10,FLYING_0, 0, 1, FLYING_0, 0, 2);
							else							 addDamage(10,FLYING_1, 0, 1, FLYING_1, 0, 2);
							hspeed = 40*other.Direction*-1;
							vspeed = -10;
							sound_play(sndBulletHit);
							Quake(15,5);
							with(other){ playEnemySound(SOUND_CLASH); break; }
						}
					}
					break;
				case 13 :
					if(KEYFRAME){
						playEnemySound(SOUND_ARM);
						playEnemySound(SOUND_STEAM);
					}
					break;
			}
			if(MOTIONEND){ MotionChange( STAND , 0 , 1 ); break;}
			break;
		/* ------------------------------------------------------------ */
		case CATCH_1 :
			switch(KeyFrmNum){
				case 1 :
					if(KEYFRAME){
						playEnemySound(SOUND_ARM);
						playEnemySound(SOUND_STEAM);
					}
					break;
				case 3 : 
					col = collision_circle( Process[PARTS_ARM3_ABOVE].x, Process[PARTS_ARM3_ABOVE].y, 32, objPlayerDoll,0,1);
					with(col){
						if(!INV && !BINDED){
							with(other){
								DamageVoiceRandom_Mid();
								playEnemySound(SOUND_STEAM);
								playEnemySound(SOUND_ARM);
								if(random(100)<50){
									if(random(100)<50){
										startBind( col,BIND_CATCH_1_ATTACK_0,0,other.BINDED_BOSSROBOT_0_CATCH_1_ATTACK_0,0,1 );
										MotionChange( CATCH_1_ATTACK_0 , 0 , 1 );
										other.Direction = Direction;
									}else{
										startBind( col,BIND_CATCH_1_ATTACK_1,0,other.BINDED_BOSSROBOT_0_CATCH_1_ATTACK_1,0,1 );
										MotionChange( CATCH_1_ATTACK_1 , 0 , 1 );
										other.Direction = Direction*-1;
									}
								}else{
									startBind( col,BIND_THROW_0,0,other.BINDED_BOSSROBOT_0_THROW_0,0,1 );
									if(random(100)<50)	MotionChange( THROW_0 , 0 , 1 );
									else				MotionChange( THROW_1 , 0 , 1 );
									other.Direction = Direction*-1;
								}
							}
							Quake(5,5);
						}
					}
					break;
			}
			if(MOTIONEND){ MotionChange( STAND , 0 , 1 ); break;}
			break;
		/* ------------------------------------------------------------ */
		case CATCH_1_ATTACK_0 :
			if(BindTarget){
				if(!BindTarget.BINDED || !place_free(x-100*Direction,y)){
					with(BindTarget){ move_outside_solid( 90,-1 );MotionChange(DOWN_0,0,2); }
					endBind();
					MotionChange( STAND , 0 , 30 );
				}else{
					depth = objPlayerDoll.depth - 1000;
					for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
					Process[PARTS_ARM1_BELOW].depth = objPlayerDoll.depth + 1001;
					Process[PARTS_ARM2_BELOW].depth = objPlayerDoll.depth + 1000;
					Process[PARTS_ARM3_BELOW].depth = objPlayerDoll.depth + 1002;
					if(MOTIONEND){ 
						startBind( BindTarget,BIND_CATCH_1_ATTACK_0_RUN,0,BindTarget.BINDED_BOSSROBOT_0_CATCH_1_ATTACK_0_RUN,0,1 );
						MotionChange( CATCH_1_ATTACK_0_RUN , 0 , 1 );
					}
				}
			}
			break;
		/* ------------------------------------------------------------ */
		case CATCH_1_ATTACK_0_RUN :
			playEnemySound(SOUND_MOVE_HI);
			sound_play(sndHit02);
			if(place_free(x-20*Direction,y)) x -= 20.0*Direction;

			if(BindTarget){
				if(!BindTarget.BINDED){
					with(BindTarget){ 
						move_outside_solid( 90,-1 );
						MotionChange(DOWN_0,1,2);
					}
					endBind();
					MotionChange( STAND , 0 , 10 );
				}else{

					if(!place_free(x-100*Direction,y)){
						addDamage(20,-1,-1,-1, -1,-1,-1);
						with(BindTarget){ 
							move_outside_solid( 90,-1 );
							MotionChange(FLYING_0,1,2);
							hspeed = 20*other.Direction*-1;
						}
						endBind();
						MotionChange( STAND , 0 , 60 );
					}

					with(BindTarget){ Fluid(x,y+32,COLOR_BLOOD,5,0,10,0,180,0.5); }

					Quake(15,15);
					addDamage(5,-1,-1,-1, -1,-1,-1);

					depth = objPlayerDoll.depth - 1000;
					for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
					Process[PARTS_ARM1_BELOW].depth = objPlayerDoll.depth + 1001;
					Process[PARTS_ARM2_BELOW].depth = objPlayerDoll.depth + 1000;
					Process[PARTS_ARM3_BELOW].depth = objPlayerDoll.depth + 1002;
				}
			}
			break;
		/* ------------------------------------------------------------ */
		case CATCH_1_ATTACK_1 :
			if(KEYFRAME && KeyFrmNum==6){
				DamageVoiceRandom_Mid();
				Flash(c_red,0.5,0.1);
				sound_play(sndBone00);
			}
			if(KeyFrmNum>6){
				Quake(5,5);
				addDamage(1,-1,-1,-1, -1,-1,-1);
			}
			if(BindTarget){
				if(!BindTarget.BINDED || !place_free(x-100*Direction,y)){
					with(BindTarget){ move_outside_solid( 90,-1 );MotionChange(DOWN_0,0,2); }
					endBind();
					MotionChange( STAND , 0 , 30 );
				}else{
					depth = objPlayerDoll.depth + 1000;
					for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
					Process[PARTS_ARM1_ABOVE].depth = objPlayerDoll.depth - 1001;
					Process[PARTS_ARM2_ABOVE].depth = objPlayerDoll.depth - 1000;
					Process[PARTS_ARM3_ABOVE].depth = objPlayerDoll.depth - 1002;

					if(global.PlayerHP<0){
						CryingVoiceRandom_High();
						SpecialVoice(V_MUSE,0);
						with(objCommon_Body){ if(random(100)<50) FluidBreak = true; }
						Fluid(BindTarget.x,BindTarget.y,COLOR_BLOOD,10,10,40,0,360,0.5);
						Flash(c_red,1,0.1);
						Quake(30,15);
						sound_play(sndBone00);
						startBind( BindTarget,BIND_CATCH_1_ATTACK_1_FINISH,0,BindTarget.BINDED_BOSSROBOT_0_CATCH_1_ATTACK_1_FINISH,0,1 );
						MotionChange( CATCH_1_ATTACK_1_FINISH , 0 , 1 );
						break;
					}

					if(MOTIONEND){ 
						startBind( BindTarget,BIND_CATCH_1_ATTACK_1,6,-1,-1,-1 );
						MotionChange( CATCH_1_ATTACK_1 , 6 , 1 );
					}
				}
			}
			break;
		/* ------------------------------------------------------------ */
		case CATCH_1_ATTACK_1_FINISH :
			depth = objPlayerDoll.depth + 1000;
			for(i=0;i<PARTS_MAX;i+=1) with(Draw[i]){ depth = other.depth - other.i*3; }
			Process[PARTS_ARM1_ABOVE].depth = objPlayerDoll.depth - 1001;
			Process[PARTS_ARM2_ABOVE].depth = objPlayerDoll.depth - 1000;
			Process[PARTS_ARM3_ABOVE].depth = objPlayerDoll.depth - 1002;

			if(MOTIONEND){ 
				startBind( BindTarget,BIND_CATCH_1_ATTACK_1_FINISH,5,-1,-1,-1 );
				MotionChange( CATCH_1_ATTACK_1_FINISH , 5 , 1 );
			}
			break;
		/* ------------------------------------------------------------ */

	}
}