diff --git a/configure.py b/configure.py index d12217b8..d9c9caf9 100644 --- a/configure.py +++ b/configure.py @@ -1298,7 +1298,7 @@ config.libs = [ Object(Matching, "effect/ef_muka.c"), Object(Matching, "effect/ef_naku.c"), Object(NonMatching, "effect/ef_namida.c"), - Object(NonMatching, "effect/ef_neboke.c"), + Object(Matching, "effect/ef_neboke.c"), Object(NonMatching, "effect/ef_neboke_akubi.c"), Object(NonMatching, "effect/ef_neboke_awa.c"), Object(Matching, "effect/ef_night13_moon.c"), diff --git a/src/effect/ef_neboke.c b/src/effect/ef_neboke.c index 95c3a8c0..3c2cffbc 100644 --- a/src/effect/ef_neboke.c +++ b/src/effect/ef_neboke.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eNebo_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eNebo_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eNebo_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,39 @@ eEC_PROFILE_c iam_ef_neboke = { }; static void eNebo_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_NEBOKE, pos, NULL, game, &angle, item_name, prio, 0, 0); } static void eNebo_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 112; + effect->effect_specific[0] = *(s16*)ct_arg; } static void eNebo_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + s16 timer; + + eEC_CLIP->set_continious_env_proc(effect, 112, 120); + + if (effect->state == eEC_STATE_NORMAL) { + timer = 112 - effect->timer; + if (timer == 16) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_NEBOKE_AKUBI, effect->position, effect->prio, + effect->effect_specific[0], game, (u16)effect->item_name, 0, 0); + } else if (timer == 44) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_NEBOKE_AKUBI, effect->position, effect->prio, + effect->effect_specific[0], game, (u16)effect->item_name, 1, 0); + } + } else if (effect->state == eEC_STATE_CONTINUOUS) { + timer = 120 - effect->timer; + switch (timer) { + case 46: + case 74: + eEC_CLIP->effect_make_proc(eEC_EFFECT_NEBOKE_AWA, effect->position, effect->prio, + effect->effect_specific[0], game, (u16)effect->item_name, 1, 0); + } + } } static void eNebo_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + return; }