sm64/data/iwa_path/kirai.s
2022-12-04 22:27:02 -05:00

134 lines
3.6 KiB
ArmAsm

/********************************************************************************
-------------------------
Ultra 64 MARIO Brothers
-------------------------
Kirai Strategy
Feburary 14 1996 programed by Iwamoto Daiki
********************************************************************************/
/*################*/
#ifdef ASSEMBLER
/*################*/
/********************************************************************************
Kirai Path Data
********************************************************************************/
e_kirai:
p_initialize(enemyA)
p_setbit(flag,stf_moveON )
p_hitON
p_sethitbox2(40,40,40)
p_wait(1)
p_while
p_hitON
p_program(s_kirai_event)
p_loop
/*------------------------------------------------------------*/
e_kopakirai_fire:
p_initialize(option)
p_setbit(flag,stf_moveON )
p_softspritemodeON
p_setf(animepositionY,-288)
p_animereset
p_while
p_program(s_kopakirai_fire)
p_loop
/*------------------------------------------------------------*/
e_kopakirai_smoke:
p_initialize(option)
p_setbit(flag,stf_moveON )
p_softspritemodeON
p_setf(animepositionY,-288)
p_setd(alpha,255)
p_animereset
p_while
p_program(s_kopakirai_smoke)
p_loop
/*################*/
#else
/*################*/
/***************************************************************************************************
C Program
****************************************************************************************************/
/***************************************************************************************************
Kirai Event (Player Kirai)
***************************************************************************************************/
extern void s_kirai_event(void)
{
if ( s_hitcheck(execstp,player1stp) == 1 ){
Mbitclr(execstp->s[stw_mail].d,EMAIL_PLAYERHIT);
s_makeobj_nowpos(execstp,S_bombfire,e_bombfire);
execstp->status = 0; /* s_removeobj */ /* object remove */
}
if ( execstp->s[stw_mail].d & EMAIL_KOPADOWN){
s_makeobj_nowpos(execstp,S_kopakirai_fire,e_kopakirai_fire);
obj_remove_sound(NA_SE2_KUPPABOMB); //SOUND
Viewshaking(VS_LARGE,obj_worldX,obj_worldY,obj_worldZ);
execstp->status = 0; /* s_removeobj */ /* object remove */
}
PlayerApproachOnOff(execstp,7000);
}
/***************************************************************************************************
Kuppa Kirai Fire (Kuppa Kirai)
***************************************************************************************************/
extern void s_kopakirai_fire(void)
{
StrategyRecord *stratp;
s_set_scale(((float)obj_timer/14)*9. + 1.);
if ((obj_timer & 0x03)==0 && obj_timer < 20) {
stratp = s_makeobj_nowpos(execstp,S_kopakirai_smoke,e_kopakirai_smoke);
stratp->s[stw_worldX].f += Randomf()*600 - 400;
stratp->s[stw_worldZ].f += Randomf()*600 - 400;
stratp->s[stw_speedY].f += Randomf()*10;
}
if ((obj_timer & 0x01)== 0) (execstp->s[stw_animecounter].d)++;
if (obj_timer == 28) execstp->status = 0;
}
/***************************************************************************************************
Kuppa Kirai Fire (Kuppa Kirai)
***************************************************************************************************/
extern void s_kopakirai_smoke(void)
{
s_set_scale(((float)obj_timer/14)*9. + 1.);
if ((obj_timer & 0x01)== 0) (execstp->s[stw_animecounter].d)++;
(execstp->s[stw_alpha].d) -= 10;
if (execstp->s[stw_alpha].d < 10 ) execstp->s[stw_alpha].d = 0;
execstp->s[stw_worldY].f += execstp->s[stw_speedY].f;
if (obj_timer == 28) execstp->status = 0;
}
/*################*/
#endif
/*################*/