/********************************************************************************
					-------------------------
				 	 Ultra 64 MARIO Brothers
					-------------------------

					File		: patheventmonky.s
					Description	: 
					Date		: 1995.
					Author		: H.yajima

 ********************************************************************************/


/*################*/
#ifdef ASSEMBLER
/*################*/

/***********************************
		event monky ( enemy )
 **********************************/
e_event_monky:
	p_initialize(enemyA)
	p_jmp(e_monky_common)		/* goto monky program */

/***********************************
		event monky check position
 **********************************/
e_monky_check:
	p_initialize(enemyA)
	p_setbit(flag,stf_moveON )
	p_setf(worldX,2560)
	p_setf(worldY,1457)
	p_setf(worldZ,1898)
	p_end

/***********************************
		donky star
 **********************************/
e_donky_star:
	p_initialize(option)
	p_setbit(flag,stf_moveON )
	p_save_nowpos
	p_while
		p_program(s_donky_star)
	p_loop

/***********************************
		donky kago
 **********************************/
e_donky_kago:
	p_initialize(moveBG)
	p_setbit(flag,stf_moveON | stf_YangleSAME )
	p_save_nowpos
	p_setshapeinfo(dk_kago_check_info)
	p_makeshape(S_polystar,e_donky_star)
	p_makeshape(S_NULL,e_monky_check)
	p_setf(movebg_checkdist,20000)
	p_setmovedata(30,-400,-50,1000,1000,200,0,0)
	p_while
		p_program(s_donky_kago)
	p_loop

/*################*/
#else
/*################*/
/********************************************************************************
		C Program (eventmonky)
 ********************************************************************************/

extern void s_donky_star(void)
{

	switch(obj_mode){
		case	0:
			if ( obj_timer == 0 ){
				if ( s_index_bit(1) & BuGetStarFlag(activePlayerNo-1,activeCourseNo-1) ){
					s_change_shape(S_shadestar);
				}
			}

			s_copy_worldXYZ(execstp,execstp->motherobj);
			s_copy_actorcode(execstp,execstp->motherobj);
			if (execstp->motherobj->s[stw_mode].d == mode_donky_kago_end ) obj_mode++;
			break;
		case	1:
			s_remove_obj(execstp);
			s_kemuri();
			s_boxeffect(20,S_sankaku,0.7f,3);
		//	s_make_enemystar_entry(CLEARSTAR_NOWPOS,0);
			s_enemyset_star(2500,-1200,1300);
			break;
	}

	obj_animeangleY += 0x400;

}


/********************************************************************************
		C Program (eventmonky)
 ********************************************************************************/

static void donky_kago_wait(void)
{
	if ( obj_imm != 0 ) obj_mode = mode_donky_kago_rot;
	stMainMoveBG();

}

static void donky_kago_rot(void)
{
	if ( obj_imm != 1 )	obj_mode = mode_donky_kago_move;
	obj_angleY+= 0x800;
	stMainMoveBG();

}

static void donky_kago_move(void)
{
	s_enemybgcheck();
	s_enemymove(78);
	if ( obj_movestatus & ( MOVESTAT_BGBOUND + MOVESTAT_DIVE ) ) obj_mode = mode_donky_kago_end;

}

static void donky_kago_end(void)
{
	s_shape_hide();
}

static void *donky_modejmp[] = {
	
	 donky_kago_wait,
	 donky_kago_rot,
	 donky_kago_move,
	 donky_kago_end
	
};

extern void s_donky_kago(void)
{
//	s_debug_position();
	s_modejmp(donky_modejmp);
}

/*################*/
#endif
/*################*/
/*===============================================================================
		end end end end end end end end 
===============================================================================*/



