/********************************************************************************
					-------------------------
				 	 Ultra 64 MARIO Brothers
					-------------------------

					File		: pathjumpblock.s
					Description	: 
					Date		: 1995.
					Author		: H.yajima

 ********************************************************************************/


/*################*/
#ifdef ASSEMBLER
/*################*/

e_jumpblock:
	p_initialize(enemyA)
	p_setbit(flag,stf_moveON | stf_catchON | stf_playerdistON )
	p_setmovedata(30,-400,-50,1000,1000,600,0,0)
	p_while
		p_program(s_jumpblock)
	p_loop

/*################*/
#else
/*################*/
/********************************************************************************
		jumpblock hitcheck data
 ********************************************************************************/

static HitCheckRecord jumpblock_hit = {
	OBJNAME_TAKE,
	20,0,1,5,		/* flag,ap,hp,coin 		 */
	130+20,210+40,	/* player attack hitarea */
	130+20,210+40,	/* player attack hitarea */
};

/********************************************************************************
		jumpblock main program
 ********************************************************************************/

#define		jumpblock_timer	(execstp->s[stw_work1].d)

/*----------------------------------------------*/
/*	jumpblock strategy							*/
/*----------------------------------------------*/
static void jumpblock_move(void)
{


	if ( obj_process == 0 ){

		if ( jumpblock_timer-- < 0 ) obj_process++;
		if ( obj_timer > obj_work0 ){
			obj_speedY = 15 + Randomf()*5;
			obj_process++;
		}

	} else {
		if ( obj_movestatus & MOVESTAT_BGTOUCH ){
			obj_process = 0;
			jumpblock_timer = 30+Randomf()*60;
		}
	}

}

/*----------------------------------------------*/
/*	jumpblock fly								*/
/*----------------------------------------------*/
static void jumpblock_fly(void)
{

	if ( obj_movestatus & ( MOVESTAT_BGBOUND | MOVESTAT_WATER | MOVESTAT_WALL ) ){
		s_remove_obj(execstp);
		s_kemuri();
	}

}


/*----------------------------------------------*/
/*	jumpblock indexjump							*/
/*----------------------------------------------*/

static void *jumpblock_modejmp[] = {
	
	 jumpblock_move,
	 jumpblock_fly
	
};

/*----------------------------------------------*/
/*	jumpblock main								*/
/*----------------------------------------------*/
static void jumpblock_main(void)
{
	s_change_shape(S_hibiblock);
	s_set_scale(0.5);
	s_set_hitparam(execstp,&jumpblock_hit);
	s_enemybgcheck();
	s_enemymove(78);
	s_modejmp(jumpblock_modejmp);

}

/********************************************************************************
		jumpblock main program
 ********************************************************************************/

extern void s_jumpblock(void)
{
	switch(execstp->s[stw_actionmode].d){
		case	CHILEDMODE_NO_CATCH:	jumpblock_main();	break;
		case	CHILEDMODE_CATCH:
			s_copy_worldXYZ(execstp,player1stp);
			s_change_shape(S_hibiblock_noshadow);
			s_mode_catch(-1,0);
			break;
		case	CHILEDMODE_THROW:		s_mode_throw(40,20,mode_jumpblock_fly);	break;
		case	CHILEDMODE_DROP:		s_mode_drop();
				obj_mode = mode_jumpblock_fly;
				break;
	}

	/* OFF request ? */
	if ( obj_mail & EMAIL_NOKOBOARD_OFF ){
		obj_remove_sound(NA_SE2_BLOCK_BURST);
		s_burn_remove(46,BURNSET_NORMAL_COIN);
	}

	obj_mail = 0;
}

/*################*/
#endif
/*################*/
/*===============================================================================
		end end end end end end end end 
===============================================================================*/



