mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-06-04 02:16:06 -04:00
84 lines
2.3 KiB
C
84 lines
2.3 KiB
C
#include "ac_ev_soncho.h"
|
|
|
|
#include "m_common_data.h"
|
|
|
|
typedef struct soncho_event_save_s {
|
|
u16 _00;
|
|
u8 msg_no;
|
|
} aESC_event_save_c;
|
|
|
|
static void aESC_actor_ct(ACTOR* actorx, GAME* game);
|
|
static void aESC_actor_dt(ACTOR* actorx, GAME* game);
|
|
static void aESC_actor_init(ACTOR* actorx, GAME* game);
|
|
static void aESC_actor_draw(ACTOR* actorx, GAME* game);
|
|
static void aESC_actor_save(ACTOR* actorx, GAME* game);
|
|
static void aESC_actor_move(ACTOR* actorx, GAME* game);
|
|
|
|
static void aESC_talk_request(ACTOR* actorx, GAME* game);
|
|
static int aESC_talk_init(ACTOR* actorx, GAME* game);
|
|
static int aESC_talk_end_chk(ACTOR* actorx, GAME* game);
|
|
|
|
ACTOR_PROFILE Ev_Soncho_Profile = {
|
|
mAc_PROFILE_EV_SONCHO,
|
|
ACTOR_PART_NPC,
|
|
0,
|
|
SP_NPC_EV_SONCHO,
|
|
ACTOR_OBJ_BANK_KEEP,
|
|
sizeof(EVENT_SONCHO_ACTOR),
|
|
&aESC_actor_ct,
|
|
&aESC_actor_dt,
|
|
&aESC_actor_init,
|
|
mActor_NONE_PROC1,
|
|
&aESC_actor_save
|
|
};
|
|
|
|
static aNPC_ct_data_c ct_data = {
|
|
&aESC_actor_move,
|
|
&aESC_actor_draw,
|
|
4,
|
|
&aESC_talk_request,
|
|
&aESC_talk_init,
|
|
&aESC_talk_end_chk,
|
|
1
|
|
};
|
|
|
|
static void aESC_actor_ct(ACTOR* actorx, GAME* game) {
|
|
EVENT_SONCHO_ACTOR* soncho_actor = (EVENT_SONCHO_ACTOR*)actorx;
|
|
aESC_event_save_c* soncho_event = (aESC_event_save_c*)mEv_get_save_area(mEv_EVENT_SONCHO_BRIDGE_MAKE, 34);
|
|
|
|
if ((*Common_Get(clip).npc_clip->birth_check_proc)(actorx, game) == TRUE) {
|
|
(*Common_Get(clip).npc_clip->ct_proc)(actorx, game, &ct_data);
|
|
soncho_actor->npc_class.palActorIgnoreTimer = -1;
|
|
soncho_actor->npc_class.draw._5BD = 3;
|
|
|
|
if (soncho_event == NULL) {
|
|
soncho_event = (aESC_event_save_c*)mEv_reserve_save_area(mEv_EVENT_SONCHO_BRIDGE_MAKE, 34);
|
|
soncho_event->_00 = 0;
|
|
soncho_event->msg_no = RANDOM(5);
|
|
}
|
|
|
|
if (Save_Get(bridge).pending) {
|
|
Actor_delete(actorx);
|
|
}
|
|
}
|
|
}
|
|
|
|
static void aESC_actor_save(ACTOR* actorx, GAME* game) {
|
|
(*Common_Get(clip).npc_clip->save_proc)(actorx, game);
|
|
}
|
|
|
|
static void aESC_actor_dt(ACTOR* actorx, GAME* game) {
|
|
mEv_actor_dying_message(mEv_EVENT_SONCHO_BRIDGE_MAKE, actorx);
|
|
(*Common_Get(clip).npc_clip->dt_proc)(actorx, game);
|
|
}
|
|
|
|
static void aESC_actor_init(ACTOR* actorx, GAME* game) {
|
|
(*Common_Get(clip).npc_clip->init_proc)(actorx, game);
|
|
}
|
|
|
|
static void aESC_actor_draw(ACTOR* actorx, GAME* game) {
|
|
(*Common_Get(clip).npc_clip->draw_proc)(actorx, game);
|
|
}
|
|
|
|
#include "../src/ac_ev_soncho_talk.c_inc"
|