sm64/data/p/pathfirebar.p

366 lines
10 KiB
OpenEdge ABL

/********************************************************************************
-------------------------
Ultra 64 MARIO Brothers
-------------------------
File : pathfirebar.s
Description :
Date : 1995.11.19
Author : H.yajima
********************************************************************************/
/*################*/
#ifdef ASSEMBLER
/*################*/
/********************************************************************************
<< fire bar >>
********************************************************************************/
/*--------------------------------------------------*/
/* fire sky bar */
/*--------------------------------------------------*/
e_fireskybar:
p_initialize(moveBG)
p_setbit(flag,stf_moveON | stf_YangleSAME | stf_playerdistON )
p_setshapeinfo(e8_guruguru_check_info)
p_setf(movebg_checkdist,1500)
p_save_nowpos
p_while
p_program(s_fireskybar_mother)
p_program(stMainMoveBG)
p_loop
/*--------------------------------------------------*/
/* fire bigbar main */
/*--------------------------------------------------*/
e_firebigbar:
p_initialize(option)
p_setbit(flag,stf_moveON | stf_YangleSAME | stf_playerdistON )
p_save_nowpos
p_while
p_program(s_firebigbar_mother)
p_loop
/*--------------------------------------------------*/
/* fire bigbar parts */
/*--------------------------------------------------*/
e_firebigbar_parts:
p_initialize(enemyA)
p_setbit(flag,stf_moveON )
p_setobjname(FIRE)
p_sethitbox2(50,25,25)
p_softspritemodeON
p_save_nowpos
p_hitON
p_program(s_areastage_init)
p_while
p_program(s_firebigbar_parts)
p_animeinc
p_loop
/********************************************************************************
<< fire bubble >>
********************************************************************************/
e_firebubble_1:
p_initialize(option)
p_setbit(flag,stf_moveON | stf_playerdistON )
p_shapeDISABLE
p_while
p_program(s_firebubble_mother_1)
p_loop
e_firebubble_parts:
p_initialize(enemyA)
p_setbit(flag,stf_moveON )
p_setobjname(FIRE)
p_setf(animepositionY,30)
p_sethitbox2(50,25,25)
p_setmovedata(30,-400,-70,1000,1000,200,0,0)
p_softspritemodeON
p_while
p_program(s_firebubble_parts)
p_animeinc
p_loop
/*################*/
#else
/*################*/
#define firebubble_workf (execstp->s[stw_work0].d)
/********************************************************************************
firebar mother
********************************************************************************/
/********************************************************************************
firebar parts
work 0 ... start zoom
work 1 ... zoom parameter
work 2 ...
********************************************************************************/
/*--------------------------------------------------------------------------*/
/* fire bigbar parts */
/*
0 ... Big Fire Yellow
1 ... Big Fire Blue
2 ... Small Fire
3 ... Obake Fire
4 ,,, Yspeed Fire
*/
/*--------------------------------------------------------------------------*/
extern void s_firebigbar_parts(void)
{
float scale;
int firelength;
if ( obj_timer == 0 ){
obj_hmsselectNo = (long)(Randomf()*10);
s_random_XYZ_offset(execstp,10);
}
if ( obj_programselect == 2 ){
scale = obj_timer * ( obj_speedF - 6 ) / 100.0 + 2;
} else {
scale = obj_timer * ( obj_speedF - 20.0 ) / 100.0 + 1;
}
if ( obj_programselect == 3 ){
execstp->myobj_height = 200;
execstp->myobj_kuikomi = 150;
obj_speedY = -28;
s_groundcheck();
if ( (obj_worldY-(25)*scale ) < obj_groundY ){
obj_speedY = 0;
obj_worldY = obj_groundY+(25)*scale;
}
firelength = (execstp->motherobj->s[stw_work7].d)/1.2;
} else {
firelength = (execstp->motherobj->s[stw_work7].d);
}
s_set_scale(scale);
if ( obj_programselect == 4 ) obj_worldY += obj_speedF;
else s_optionmove_F();
if ( obj_timer > firelength ) s_remove_obj(execstp);
obj_mail = 0;
}
/*--------------------------------------------------------------------------*/
/* fire bigbar mother */
/*--------------------------------------------------------------------------*/
extern void s_firebigbar_mother(void)
{
StrategyRecord *stp;
float speed;
int time;
int shape;
int i;
if ( obj_mode == 0 ){
if ( (activeStageNo != 4 )|| (bf_teresa_flag == 1) ){
if ( obj_playerdist < 2000 ) obj_mode++;
}
} else if ( obj_mode == 1 ){
shape = S_fireball_yellow;
speed = 95;
if ( obj_programselect == 1 ) shape = S_fireball_blue;
if ( obj_programselect == 2 ) speed = 50;
time = 1;
if ( obj_timer < 60 ) time = 15;
else if ( obj_timer < 74 ) time = (75-obj_timer);
else obj_mode++;
execstp->s[stw_work7].d = time;
stp = s_makeobj_chain(obj_programselect,0,0,0,execstp,shape,e_firebigbar_parts);
stp->s[stw_speedF].f = speed;
objsound_level(NA_LSE3_BURNER);
} else {
if ( obj_timer > 60 ) obj_mode=0;
}
}
extern void s_fireskybar_mother(void)
{
obj_angleY += -0x80;
obj_anglespeedY = -0x80;
// obj_worldY = obj_attY + (sin(obj_work1)+1.0) * 500;
// obj_work1 += 0x40;
s_firebigbar_mother();
}
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************/
/********************************************************************************
---------------------------
fire bubble program
---------------------------
********************************************************************************/
extern void s_firebubble_parts(void)
{
Mbitset(execstp->status,OBJECT_NOWATER);
s_enemybgcheck();
switch(obj_mode){
/*======= effect =======*/
case 0:
if ( obj_timer == 0 ){
obj_hmsselectNo = (long)(Randomf()*10);
obj_speedY = 30;
}
if ( (obj_movestatus & MOVESTAT_BGBOUND) ) obj_mode++;
break;
/*======== main ========*/
case 1:
if ( obj_timer == 0 ){
obj_speedY = 50;
obj_speedF = 30;
}
if ( obj_movestatus & MOVESTAT_STOP && obj_timer > 100 ) s_remove_obj(execstp);
break;
}
if ( obj_timer > 300 ) s_remove_obj(execstp);
s_enemymove(78);
obj_mail = 0;
}
/********************************************************************************
---------------------------
firebubble mother
---------------------------
********************************************************************************/
#define firebubblemother_random (execstp->s[stw_work0].d)
extern void s_firebubble_mother_1(void)
{
StrategyRecord *stp;
float sc;
switch(obj_mode){
case 0:
if ( obj_playerdist < 2000 ) obj_mode = 1;
break;
case 1:
stp = s_makeobj_nowpos(execstp,S_fireball_yellow,e_firebubble_parts);
sc = (10-obj_timer)*0.5;
stSetScale(stp,sc,sc,sc);
if ( obj_timer == 0 ) s_hitON_obj(stp);
if ( obj_timer > 10 ) obj_mode++;
break;
case 2:
if ( obj_timer == 0 ) firebubblemother_random = Randomf()*100;
if ( obj_timer > 100 + firebubblemother_random ) obj_mode = 0;
break;
}
}
/*################*/
#endif
/*################*/
/*===============================================================================
end end end end end end end end
===============================================================================*/