diff --git a/configure.py b/configure.py index c6989770..5bb3e5dc 100644 --- a/configure.py +++ b/configure.py @@ -1270,7 +1270,7 @@ config.libs = [ Object(Matching, "effect/ef_hanatiri.c"), Object(NonMatching, "effect/ef_hirameki_den.c"), Object(NonMatching, "effect/ef_hirameki_hikari.c"), - Object(NonMatching, "effect/ef_ikigire.c"), + Object(Matching, "effect/ef_ikigire.c"), Object(Matching, "effect/ef_impact_star.c"), Object(NonMatching, "effect/ef_kagu_happa.c"), Object(NonMatching, "effect/ef_kamifubuki.c"), diff --git a/src/effect/ef_ikigire.c b/src/effect/ef_ikigire.c index 6359450f..ba0df530 100644 --- a/src/effect/ef_ikigire.c +++ b/src/effect/ef_ikigire.c @@ -1,5 +1,8 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "sys_math.h" + static void eIkigire_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eIkigire_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eIkigire_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +21,28 @@ eEC_PROFILE_c iam_ef_ikigire = { }; static void eIkigire_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + s16 _angle = angle; + + if (eEC_CLIP) { + _angle += (s16)DEG2SHORT_ANGLE2(RANDOM2_F(90.0f)); + + pos.x += sin_s(_angle) * 5.0f; + pos.z += cos_s(_angle) * 5.0f; + + eEC_CLIP->effect_make_proc(eEC_EFFECT_DUST, pos, prio, _angle, game, item_name, 0, 0); + } + + eEC_CLIP->make_effect_proc(eEC_EFFECT_IKIGIRE, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eIkigire_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 0; } static void eIkigire_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + return; } static void eIkigire_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + return; }