/******************************************************************************** ------------------------- Ultra 64 MARIO Brothers ------------------------- Uzumaki Strategy (for gusheffect ) Junuary 31 1996 programed by Iwamoto Daiki ********************************************************************************/ /*################*/ #ifdef ASSEMBLER /*################*/ /******************************************************************************** Uzumaki Path Data ********************************************************************************/ e_uzumaki: p_initialize(player_friend) p_setbit(flag,stf_moveON|stf_playerdistON ) p_program(s_uzumaki_init) uzumaki_main: p_while p_program(s_uzumaki_main) p_loop /******************************************************************************** Fukidasi Path Data ********************************************************************************/ e_fukidasi: p_initialize(option) p_setbit(flag,stf_moveON|stf_playerdistON ) p_while p_program(s_fukidasi_main) p_loop /*################*/ #else /*################*/ /*=================================================================================================== C Program ====================================================================================================*/ #include "../../include/weather.h" #define uzumaki_angX (execstp->s[stw_work0].d) #define uzumaki_angZ (execstp->s[stw_work1].d) static HitCheckRecord uzumaki_hit = { OBJNAME_DRAINPIPE, 0,0,0,0, /* flag,ap,hp,coin */ 200,500, /* player attack hitarea */ 0, 0, /* player damage hitarea */ }; /*************************************************************************************************** Initial ***************************************************************************************************/ extern void s_uzumaki_init(void) { uzumaki_angX = obj_animeangleX; uzumaki_angZ = obj_animeangleZ; obj_animeangleX = 0; obj_animeangleZ = 0; } /*************************************************************************************************** Hit Check ***************************************************************************************************/ static void Uzumaki_HitCheck(void) { s_set_hitparam(execstp,&uzumaki_hit); /* Set HitCheck Param */ } /*************************************************************************************************** ShapeRotXZ ***************************************************************************************************/ static void ShapeRotXZ(void) { float cosx = cos(obj_animeangleX); float sinx = sin(obj_animeangleX); float cosz = cos(obj_animeangleZ); float sinz = sin(obj_animeangleZ); float a = (sinz*cosx); float b = (cosx*cosz); float c = sinx; ShapeIncline(execstp,a,b,c); } /*************************************************************************************************** Main ***************************************************************************************************/ extern void s_uzumaki_main(void) { if (obj_playerdist < 5000) { MapDispShape(&execstp->map); Uz_objNum = 60; Uz_stx = obj_worldX; Uz_stz = obj_worldZ; Uz_enx = obj_worldX; Uz_eny = obj_worldY; Uz_enz = obj_worldZ; Uz_sty = obj_worldY + 800; Uz_angleX = uzumaki_angX; Uz_angleZ = uzumaki_angZ; ShapeRotXZ(); obj_animeangleY += 8000; } else { MapHideShape(&execstp->map); Uz_objNum = 0; } objsound_level(NA_LSE2_WATERTORNADO); Uzumaki_HitCheck(); } /*=================================================================================================== Fukidasi Event ====================================================================================================*/ /*************************************************************************************************** Main ***************************************************************************************************/ extern void s_fukidasi_main(void) { if (obj_playerdist < 5000) { Fu_objNum = 60; Fu_stx = obj_worldX; Fu_sty = obj_worldY; Fu_stz = obj_worldZ; } else { Fu_objNum = 0; } objsound_level(NA_LSE2_WATERTORNADO); } /*################*/ #endif /*################*/