/********************************************************************************
					-------------------------
				 	 Ultra 64 MARIO Brothers
					-------------------------

					File		: pathsplash.s
					Description	: 
					Date		: 1995.7.27
					Author		: H.yajima

 ********************************************************************************/


/*################*/
#ifdef ASSEMBLER
/*################*/
/********************************************************************************/
/*																				*/
/* << OPTION >> 																*/
/*																				*/
/********************************************************************************/


/********************************************************************************/
/*																				*/
/*		PLAYER GA RIPPLE SURU 													*/
/*																				*/
/********************************************************************************/
	
/********************************************************************************/
/*																				*/
/*	PLAYER WATER RIPPLE															*/
/*																				*/
/********************************************************************************/

e_rtest:
	p_initialize(option)
	p_setbit(flag,stf_moveON)
	p_setf(animeangleX,0)
	p_setf(animeangleY,0)
	p_setf(animeangleZ,0)
	p_animereset

	p_while
		p_animeinc
		p_wait(6)
	p_loop


e_waterrippleB:
	p_initialize(option)
	p_setbit(flag,stf_moveON)
	p_setf(animeangleX,0)
	p_setf(animeangleY,0)
	p_setf(animeangleZ,0)
	p_animereset
	p_program(s_playerripple_init)		/* PlayerRipple Initialize */

	p_animeinc
	p_wait(6)

	p_while
		p_program(s_playerripple_main)	
		p_animeinc
		p_do(6)
			p_program(s_playerripple_main)	
		p_next	
	p_loop


/********************************************************************************/
/*																				*/
/*	PLAYER bubble wave															*/
/*																				*/
/********************************************************************************/

e_playerwave:
	p_initialize(option)				/* intital		*/
	p_setbit(flag,stf_moveON)			/* move mode ON */
	p_mother_clrbit(effect,stf_wave)

	p_program(s_playerripple_init)		/* PlayerRipple Initialize */
	p_program(s_playerwave_init)		/* PlayerRipple Initialize */
 
	p_setf(animeangleX,0)
	p_setf(animeangleY,0)
	p_setf(animeangleZ,0)
	p_animereset

	p_do(8)
		p_animeinc
		p_wait(2)
	p_next

	p_killshape


e_enemywave:
	p_initialize(option)				/* intital		*/
	p_setbit(flag,stf_moveON)			/* move mode ON */
	p_program(s_enemyripple_init)		/* PlayerRipple Initialize */
	p_setf(animeangleX,0)
	p_setf(animeangleY,0)
	p_setf(animeangleZ,0)
	p_animereset
	p_do(8)
		p_animeinc
		p_wait(2)
	p_next
	p_killshape



/********************************************************************************/
/*																				*/
/*	PLAYER Water Ripple (A)														*/
/*																				*/
/********************************************************************************/

e_rippleA:
	p_initialize(option)
	p_setbit(flag,stf_moveON)
	p_setf(animeangleX,0)
	p_setf(animeangleY,0)
	p_setf(animeangleZ,0)
	p_animereset
	p_do(6)
		p_animeinc
	p_next
	p_killshape


/********************************************************************************/
/*																				*/
/*		PLAYER GA SPLASH SURU 													*/
/*																				*/
/********************************************************************************/
/********************************************************************************/
/*	player splash																*/
/********************************************************************************/

e_splashanime:
	p_initialize(option)
	p_softspritemodeON
	p_setbit(flag,stf_moveON)
	p_setf(animepositionY,100)
	p_animereset
	p_do(3)
		p_animeinc
	p_next
	p_mother_clrbit(effect,stf_splash)
	p_killshape



/********************************************************************************/
/*																				*/
/*		MIZU NO BAKUHATSU !!!!!													*/
/*																				*/
/********************************************************************************/
/********************************************************************************/
/*	Water Column																*/
/********************************************************************************/

e_watercoloumn:
	p_initialize(option)
	p_setbit(flag,stf_moveON)
	p_softspritemodeON
	p_setbit(flag,stf_moveON)
	p_animereset
	p_program(s_divinginit)

watercoloumn_main:
	p_do(3)
		p_animeinc
		p_makeshape(S_waterdrop,e_waterdrop)
		p_makeshape(S_waterdrop,e_waterdrop)
		p_makeshape(S_waterdrop,e_waterdrop)
		p_wait(1)
		p_makeshape(S_waterdrop,e_waterdrop)
		p_makeshape(S_waterdrop,e_waterdrop)
		p_makeshape(S_waterdrop,e_waterdrop)
	p_next

	p_do(5)
		p_animeinc
		p_wait(1)
	p_next

	p_mother_clrbit(effect,stf_diving)
	p_killshape


/********************************************************************************/
/*	Water Drop																	*/
/********************************************************************************/

e_waterdrop:

	p_initialize(option)
	p_setbit(flag,stf_moveON | stf_FspeedON | stf_YspeedON )
	p_softspritemodeON
 	p_setbit(flag,stf_moveON)
	p_animereset

	p_setf(groundY,-8000)
	p_setf(gravity,-5)
	p_setf_random(speedF,2,5)
	p_setf_random(speedY,20,30)
	p_setangle_random(angleY,0,0)

	p_wait(1)
	p_while
		p_program(s_dropmain)				/* Water DropMain */
	p_loop




/********************************************************************************/
/*	Water Drop Ripple															*/
/********************************************************************************/

e_dropripple:
	p_initialize(option)
	p_setbit(flag,stf_moveON)
	p_setf(animeangleX,0)
	p_setf(animeangleY,0)
	p_setf(animeangleZ,0)
	p_animereset
	p_program(s_drop_init)
	p_do(6)
		p_animeinc
	p_next
	p_killshape

/*################*/
#else
/*################*/

/********************************************************************************/
/*																				*/
/*	C Program																	*/
/*																				*/
/********************************************************************************/
/********************************************************************************/
/*		player ripple 															*/
/********************************************************************************/

/*------------------------------------------------------------------------------*/
extern void s_playerripple_init(void)
{
	execstp->s[stw_worldY].f = playerWorks[0].water + 5;
}

extern void s_playerwave_init(void)
{

	if ( frameCounter % 2 )	s_remove_obj(execstp);

}

/*------------------------------------------------------------------------------*/
extern void s_enemyripple_init(void)
{
	float water = mcWaterCheck(obj_worldX,obj_worldZ);
	execstp->s[stw_worldY].f =  water + 5;
	s_set_scale(4.0);
}

/*------------------------------------------------------------------------------*/
extern void s_playerripple_main(void)
{

	execstp->s[stw_worldX].f = player1stp->s[stw_worldX].f;
	execstp->s[stw_worldZ].f = player1stp->s[stw_worldZ].f;

	/*---- End Check ----*/
	if ( ( player1stp->s[stw_work0].d & PLAYER_RIPPLE ) == 0 ){
		player1stp->s[stw_effect].d = player1stp->s[stw_effect].d & (stf_ripple^0xffff );
	 	execstp->status = 0;	/* Shape Remove */
	}

}



/********************************************************************************/
/*	water drop Program															*/
/********************************************************************************/

extern void s_divinginit(void)
{

	float bgY = playerWorks[0].water;
	execstp->s[stw_worldY].f = bgY;

}


extern void s_dropmain(void)
{

	StrategyRecord *stratp;
	float bgY = playerWorks[0].water;

	if ( bgY > (execstp->s[stw_worldY].f) ){

		stratp = s_makeobj(execstp,0,S_rippleA,e_dropripple);
		stratp->s[stw_worldX].f = execstp->s[stw_worldX].f;
		stratp->s[stw_worldY].f = bgY + 5;
		stratp->s[stw_worldZ].f = execstp->s[stw_worldZ].f;

		execstp->status = 0;		/* s_removeobj */	/* object remove */

	}

}

/********************************************************************************/
/*	water drop Program															*/
/********************************************************************************/

extern void s_drop_init(void)
{
	stSetScale(execstp,0.5,1.0,0.5);
}

/*################*/
#endif
/*################*/
/*===============================================================================
		end end end end end end end end 
===============================================================================*/


