From 097fc9fd9aa02547237ac4fb69328978fa36a7c7 Mon Sep 17 00:00:00 2001 From: Norgesnerd <5824576+Norgesnerd@users.noreply.github.com> Date: Fri, 23 May 2025 11:18:13 +0200 Subject: [PATCH 1/2] Implement & link ef_kyousou_onpu --- configure.py | 2 +- src/effect/ef_kyousou_onpu.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/configure.py b/configure.py index 3955dc84..1a3a628c 100644 --- a/configure.py +++ b/configure.py @@ -1287,7 +1287,7 @@ config.libs = [ Object(NonMatching, "effect/ef_kisha_kemuri.c"), Object(NonMatching, "effect/ef_konpu.c"), Object(NonMatching, "effect/ef_kpun.c"), - Object(NonMatching, "effect/ef_kyousou_onpu.c"), + Object(Matching, "effect/ef_kyousou_onpu.c"), Object(Matching, "effect/ef_lamp_light.c"), Object(NonMatching, "effect/ef_lovelove.c"), Object(NonMatching, "effect/ef_lovelove2.c"), diff --git a/src/effect/ef_kyousou_onpu.c b/src/effect/ef_kyousou_onpu.c index a1b48677..db3621d4 100644 --- a/src/effect/ef_kyousou_onpu.c +++ b/src/effect/ef_kyousou_onpu.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eKyousou_Onpu_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eKyousou_Onpu_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eKyousou_Onpu_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,21 @@ eEC_PROFILE_c iam_ef_kyousou_onpu = { }; static void eKyousou_Onpu_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + if (eEC_CLIP != NULL) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_KONPU, pos, prio, angle, game, item_name, 2, 0); + } + + eEC_CLIP->make_effect_proc(eEC_EFFECT_KYOUSOU_ONPU, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eKyousou_Onpu_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 0; } static void eKyousou_Onpu_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + return; } static void eKyousou_Onpu_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + return; } From fb6d9449ab583ba8745ed358b7d5e1ad995ccdc3 Mon Sep 17 00:00:00 2001 From: Norgesnerd <5824576+Norgesnerd@users.noreply.github.com> Date: Fri, 23 May 2025 11:58:56 +0200 Subject: [PATCH 2/2] Implement & link ef_kigae --- configure.py | 2 +- src/effect/ef_kigae.c | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/configure.py b/configure.py index 1a3a628c..7da5e7c1 100644 --- a/configure.py +++ b/configure.py @@ -1280,7 +1280,7 @@ config.libs = [ Object(Matching, "effect/ef_kasamizutama.c"), Object(NonMatching, "effect/ef_kaze.c"), Object(NonMatching, "effect/ef_kaze_happa.c"), - Object(NonMatching, "effect/ef_kigae.c"), + Object(Matching, "effect/ef_kigae.c"), Object(NonMatching, "effect/ef_kigae_light.c"), Object(NonMatching, "effect/ef_kikuzu.c"), Object(Matching, "effect/ef_killer.c"), diff --git a/src/effect/ef_kigae.c b/src/effect/ef_kigae.c index 7b91a2b4..0cf80ba8 100644 --- a/src/effect/ef_kigae.c +++ b/src/effect/ef_kigae.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eKigae_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eKigae_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eKigae_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,28 @@ eEC_PROFILE_c iam_ef_kigae = { }; static void eKigae_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_KIGAE, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eKigae_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->effect_specific[0] = *(s16*)ct_arg + DEG2SHORT_ANGLE2(90.0f); + effect->timer = 60; } static void eKigae_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t pos = effect->position; + + effect->effect_specific[0] -= DEG2SHORT_ANGLE2(9.0f); + if ((play->game_frame & 1) == 0) { + pos.x += (sin_s(effect->effect_specific[0]) * 22.0f) + RANDOM2_F(5.0f); + pos.y += eEC_CLIP->calc_adjust_proc(effect->timer, 0, 60, 10.0f, -25.0f) + RANDOM2_F(5.0f); + pos.z += (cos_s(effect->effect_specific[0]) * 22.0f) + RANDOM2_F(5.0f); + + eEC_CLIP->effect_make_proc(eEC_EFFECT_KIGAE_LIGHT, pos, effect->prio, 0, game, effect->item_name, 0, 0); + } } static void eKigae_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + return; }