mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-29 08:12:54 -04:00
Cleanup ac_halloween_npc
This commit is contained in:
@@ -187,7 +187,7 @@ extern u8 ics_bad;
|
||||
|
||||
extern FamicomCommon famicomCommon;
|
||||
|
||||
typedef s32 (*FAMICOM_GETSAVECHAN_PROC)(int* player_no, s32* slot_card_result);
|
||||
typedef int (*FAMICOM_GETSAVECHAN_PROC)(int* player_no, s32* slot_card_result);
|
||||
|
||||
extern int famicom_getErrorChan();
|
||||
extern void famicom_setCallback_getSaveChan(FAMICOM_GETSAVECHAN_PROC proc);
|
||||
|
||||
+38
-23
@@ -9,38 +9,54 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct halloween_npc_s NPC_HALLOWEEN_ACTOR;
|
||||
typedef struct halloween_npc_s HALLOWEEN_NPC_ACTOR;
|
||||
|
||||
typedef void (*aHWN_TALK_PROC)(HALLOWEEN_NPC_ACTOR*, GAME_PLAY*);
|
||||
typedef void (*aHWN_THINK_PROC)(HALLOWEEN_NPC_ACTOR*, GAME_PLAY*);
|
||||
|
||||
typedef void (*aHWN_TALK_PROC)(NPC_HALLOWEEN_ACTOR*, GAME_PLAY*);
|
||||
// has to be _P because a function is already defined as aHWN_think_proc
|
||||
typedef void (*aHWN_THINK_PROC_P)(NPC_ACTOR*, GAME_PLAY*);
|
||||
/* sizeof(halloween_npc_s) == 0x9AC*/
|
||||
struct halloween_npc_s {
|
||||
/* 0x000 */ NPC_ACTOR npc_class;
|
||||
/* 0x994 */ int dt_tbl_idx;
|
||||
/* 0x998 */ aHWN_THINK_PROC_P think_proc;
|
||||
/* 0x998 */ aHWN_THINK_PROC think_proc;
|
||||
/* 0x99C */ int _99C;
|
||||
/* 0x9A0 */ aHWN_TALK_PROC talk_proc;
|
||||
/* 0x9A4 */ mActor_name_t item;
|
||||
/* 0x9A8 */ BOOL _9A0;
|
||||
};
|
||||
enum {
|
||||
aHWN_TALK_FIRST_CALL_TALK_PROC, // 0
|
||||
aHWN_TALK_TRICK_OR_TREAT_TALK_PROC, // 1
|
||||
aHWN_TALK_MENU_OPEN_WAIT_TALK_PROC, // 2
|
||||
aHWN_TALK_MENU_CLOSE_WAIT_TALK_PROC, // 3
|
||||
aHWN_TALK_GET_OTHER_ITEM_WAIT_TALK_PROC, // 4
|
||||
aHWN_TALK_RECEIVE_TOOL_ITEM_START_WAIT_TALK_PROC, // 5
|
||||
aHWN_TALK_RECEIVE_TOOL_ITEM_END_WAIT_TALK_PROC, // 6
|
||||
aHWN_TALK_TRICK_TIMING_WAIT_TALK_PROC, // 7
|
||||
aHWN_TALK_TRICK_CHG_CLOTH_TALK_PROC, // 8
|
||||
aHWN_TALK_TRICK_CHG_CLOTH_END_WAIT_TALK_PROC, // 9
|
||||
aHWN_TALK_GET_AME_WAIT_TALK_PROC, // 10
|
||||
aHWN_TALK_GET_AME_TALK_PROC, // 11
|
||||
aHWN_TALK_PL_DEMO_CODE_END_WAIT_TALK_PROC, // 12
|
||||
aHWN_TALK_NONE_PROC1, // 13
|
||||
/* 0x9A8 */ BOOL wait_think_done;
|
||||
};
|
||||
|
||||
enum {
|
||||
aHWN_TALK_FIRST_CALL_TALK, // 0
|
||||
aHWN_TALK_TRICK_OR_TREAT_TALK, // 1
|
||||
aHWN_TALK_MENU_OPEN_WAIT_TALK, // 2
|
||||
aHWN_TALK_MENU_CLOSE_WAIT_TALK, // 3
|
||||
aHWN_TALK_GET_OTHER_ITEM_WAIT_TALK, // 4
|
||||
aHWN_TALK_RECEIVE_TOOL_ITEM_START_WAIT_TALK, // 5
|
||||
aHWN_TALK_RECEIVE_TOOL_ITEM_END_WAIT_TALK, // 6
|
||||
aHWN_TALK_TRICK_TIMING_WAIT_TALK, // 7
|
||||
aHWN_TALK_TRICK_CHG_CLOTH_TALK, // 8
|
||||
aHWN_TALK_TRICK_CHG_CLOTH_END_WAIT_TALK, // 9
|
||||
aHWN_TALK_GET_AME_WAIT_TALK, // 10
|
||||
aHWN_TALK_GET_AME_TALK, // 11
|
||||
aHWN_TALK_PL_DEMO_CODE_END_WAIT_TALK, // 12
|
||||
aHWN_TALK_END_WAIT, // 13
|
||||
|
||||
aHWN_TALK_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
aHWN_THINK_APPROACH,
|
||||
aHWN_THINK_APPROACH_WAIT,
|
||||
|
||||
aHWN_THINK_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
aHWN_TRICK_TYPE_CHG_CLOTH,
|
||||
aHWN_TRICK_TYPE_CHG_ITEM,
|
||||
|
||||
aHWN_TRICK_TYPE_NUM
|
||||
};
|
||||
|
||||
extern ACTOR_PROFILE Halloween_Npc_Profile;
|
||||
|
||||
@@ -49,4 +65,3 @@ extern ACTOR_PROFILE Halloween_Npc_Profile;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -30,40 +30,40 @@ static void aHWN_actor_save(ACTOR* actorx, GAME* game);
|
||||
static void aHWN_actor_init(ACTOR* actorx, GAME* game);
|
||||
static void aHWN_actor_draw(ACTOR* actorx, GAME* game);
|
||||
|
||||
static BOOL aHWN_set_request_act(NPC_HALLOWEEN_ACTOR* actorx, u8 prio, u8 idx, u8 type, u16 obj, s16 move_x,
|
||||
static BOOL aHWN_set_request_act(HALLOWEEN_NPC_ACTOR* actorx, u8 prio, u8 idx, u8 type, u16 obj, s16 move_x,
|
||||
s16 move_z);
|
||||
static void aHWN_actor_move(ACTOR* actorx, GAME* game);
|
||||
|
||||
static int aHWN_get_trick_type();
|
||||
static void aHWN_restart_msg_win(NPC_HALLOWEEN_ACTOR* actorx, int msg_idx);
|
||||
static void aHWN_first_call_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_trick_or_treat_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_menu_open_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_menu_close_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_get_other_item_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_receive_tool_item_start_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_receive_tool_item_end_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_trick_timing_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_trick_chg_cloth_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_trick_chg_cloth_end_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_get_ame_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_get_ame_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_pl_demo_code_end_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_change_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, int talk_proc_idx);
|
||||
static void aHWN_restart_msg_win(HALLOWEEN_NPC_ACTOR* actorx, int msg_idx);
|
||||
static void aHWN_first_call_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_trick_or_treat_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_menu_open_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_menu_close_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_get_other_item_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_receive_tool_item_start_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_receive_tool_item_end_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_trick_timing_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_trick_chg_cloth_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_trick_chg_cloth_end_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_get_ame_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_get_ame_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_pl_demo_code_end_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_change_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, int talk_proc_idx);
|
||||
static void aHWN_set_force_talk_info(ACTOR* actorx);
|
||||
static void aHWN_force_talk_request(ACTOR* actorx, GAME* game);
|
||||
static void aHWN_set_norm_talk_info(NPC_HALLOWEEN_ACTOR* actorx);
|
||||
static void aHWN_norm_talk_request(NPC_HALLOWEEN_ACTOR* actorx);
|
||||
static void aHWN_set_norm_talk_info(HALLOWEEN_NPC_ACTOR* actorx);
|
||||
static void aHWN_norm_talk_request(ACTOR* actorx, GAME* game);
|
||||
static int aHWN_talk_init();
|
||||
static BOOL aHWN_talk_end_chk(ACTOR* actorx, GAME* game);
|
||||
|
||||
static void aHWN_approach(NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_approach_wait(NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* playe);
|
||||
static void aHWN_approach(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play);
|
||||
static void aHWN_approach_wait(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play);
|
||||
static void aHWN_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_think_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_approach_init(NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_approach_wait_init(NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_setup_think_proc(ACTOR* actorx, GAME* game, int dt_tbl_idx);
|
||||
static void aHWN_approach_init(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play);
|
||||
static void aHWN_approach_wait_init(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play);
|
||||
static void aHWN_setup_think_proc(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play, int dt_tbl_idx);
|
||||
static void aHWN_think_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int think_proc_idx);
|
||||
static void aHWN_schedule_think_init(NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
static void aHWN_schedule_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play);
|
||||
@@ -75,9 +75,9 @@ ACTOR_PROFILE Halloween_Npc_Profile = {
|
||||
mAc_PROFILE_HALLOWEEN_NPC,
|
||||
ACTOR_PART_NPC,
|
||||
ACTOR_STATE_NONE,
|
||||
0,
|
||||
EMPTY_NO,
|
||||
ACTOR_OBJ_BANK_KEEP,
|
||||
sizeof(NPC_HALLOWEEN_ACTOR),
|
||||
sizeof(HALLOWEEN_NPC_ACTOR),
|
||||
aHWN_actor_ct,
|
||||
aHWN_actor_dt,
|
||||
aHWN_actor_init,
|
||||
@@ -98,7 +98,7 @@ static void aHWN_actor_ct(ACTOR* actorx, GAME* game) {
|
||||
0,
|
||||
};
|
||||
// clang-format on
|
||||
NPC_HALLOWEEN_ACTOR* hwn_actor = (NPC_HALLOWEEN_ACTOR*)actorx;
|
||||
HALLOWEEN_NPC_ACTOR* hwn_actor = (HALLOWEEN_NPC_ACTOR*)actorx;
|
||||
if (NPC_CLIP->birth_check_proc(actorx, game) == TRUE) {
|
||||
hwn_actor->npc_class.schedule.schedule_proc = &aHWN_schedule_proc;
|
||||
NPC_CLIP->ct_proc(actorx, game, &ct_data);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
static BOOL aHWN_set_request_act(NPC_HALLOWEEN_ACTOR* actorx, u8 prio, u8 idx, u8 type, u16 obj, s16 move_x,
|
||||
static BOOL aHWN_set_request_act(HALLOWEEN_NPC_ACTOR* actorx, u8 prio, u8 idx, u8 type, u16 obj, s16 move_x,
|
||||
s16 move_z) {
|
||||
BOOL res = FALSE;
|
||||
if (prio >= actorx->npc_class.request.act_priority) {
|
||||
|
||||
@@ -1,57 +1,56 @@
|
||||
static void aHWN_approach(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
NPC_HALLOWEEN_ACTOR* hwn_actor = (NPC_HALLOWEEN_ACTOR*)actorx;
|
||||
static void aHWN_approach(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play) {
|
||||
ACTOR* talk_actor = mDemo_Get_talk_actor();
|
||||
if ((talk_actor != NULL && talk_actor != &actorx->actor_class) ||
|
||||
|
||||
if ((talk_actor != NULL && talk_actor != (ACTOR*)hwn_actor) ||
|
||||
(hwn_actor->npc_class.actor_class.block_x != play->block_table.block_x ||
|
||||
hwn_actor->npc_class.actor_class.block_z != play->block_table.block_z)) {
|
||||
aHWN_setup_think_proc(&actorx->actor_class, &play->game, 1);
|
||||
aHWN_setup_think_proc(hwn_actor, play, aHWN_THINK_APPROACH_WAIT);
|
||||
} else if (hwn_actor->npc_class.action.step == aNPC_ACTION_END_STEP) {
|
||||
aHWN_setup_think_proc(&actorx->actor_class, &play->game, 0);
|
||||
aHWN_setup_think_proc(hwn_actor, play, aHWN_THINK_APPROACH);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_approach_wait(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
NPC_HALLOWEEN_ACTOR* hwn_actor = (NPC_HALLOWEEN_ACTOR*)actorx;
|
||||
if (((mDemo_Get_talk_actor() == 0) && (hwn_actor->npc_class.actor_class.block_x == (play->block_table).block_x)) &&
|
||||
static void aHWN_approach_wait(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play) {
|
||||
if (((mDemo_Get_talk_actor() == NULL) &&
|
||||
(hwn_actor->npc_class.actor_class.block_x == (play->block_table).block_x)) &&
|
||||
(hwn_actor->npc_class.actor_class.block_z == (play->block_table).block_z)) {
|
||||
aHWN_setup_think_proc(&actorx->actor_class, &play->game, 0);
|
||||
aHWN_setup_think_proc(hwn_actor, play, aHWN_THINK_APPROACH);
|
||||
} else if (hwn_actor->npc_class.action.step == aNPC_ACTION_END_STEP) {
|
||||
aHWN_setup_think_proc(&actorx->actor_class, &play->game, 1);
|
||||
aHWN_setup_think_proc(hwn_actor, play, aHWN_THINK_APPROACH_WAIT);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
NPC_HALLOWEEN_ACTOR* hwn_actor = (NPC_HALLOWEEN_ACTOR*)actorx;
|
||||
hwn_actor->think_proc(actorx, play);
|
||||
HALLOWEEN_NPC_ACTOR* hwn_actor = (HALLOWEEN_NPC_ACTOR*)actorx;
|
||||
|
||||
hwn_actor->think_proc(hwn_actor, play);
|
||||
}
|
||||
|
||||
static void aHWN_think_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
NPC_HALLOWEEN_ACTOR* hwn_actor = (NPC_HALLOWEEN_ACTOR*)actorx;
|
||||
aHWN_setup_think_proc(&actorx->actor_class, &play->game, 0);
|
||||
static void aHWN_think_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) {
|
||||
HALLOWEEN_NPC_ACTOR* hwn_actor = (HALLOWEEN_NPC_ACTOR*)nactorx;
|
||||
|
||||
aHWN_setup_think_proc(hwn_actor, play, aHWN_THINK_APPROACH);
|
||||
hwn_actor->npc_class.condition_info.hide_request = 0;
|
||||
hwn_actor->npc_class.think.interrupt_flags = aNPC_THINK_INTERRUPT_ENTRANCE | aNPC_THINK_INTERRUPT_OBSTACLE;
|
||||
hwn_actor->npc_class.condition_info.demo_flg = aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV;
|
||||
}
|
||||
|
||||
static void aHWN_approach_init(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
aHWN_set_request_act((NPC_HALLOWEEN_ACTOR*)actorx, 4, aNPC_ACT_RUN, aNPC_ACT_TYPE_SEARCH, aNPC_ACT_OBJ_PLAYER, 0,
|
||||
0);
|
||||
static void aHWN_approach_init(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play) {
|
||||
aHWN_set_request_act(hwn_actor, 4, aNPC_ACT_RUN, aNPC_ACT_TYPE_SEARCH, aNPC_ACT_OBJ_PLAYER, 0, 0);
|
||||
}
|
||||
|
||||
static void aHWN_approach_wait_init(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
aHWN_set_request_act((NPC_HALLOWEEN_ACTOR*)actorx, 4, aNPC_ACT_WAIT, aNPC_ACT_TYPE_SEARCH, aNPC_ACT_OBJ_PLAYER, 0,
|
||||
0);
|
||||
static void aHWN_approach_wait_init(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play) {
|
||||
aHWN_set_request_act(hwn_actor, 4, aNPC_ACT_WAIT, aNPC_ACT_TYPE_SEARCH, aNPC_ACT_OBJ_PLAYER, 0, 0);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
aHWN_THINK_PROC_P approach_proc;
|
||||
aHWN_THINK_PROC_P approach_init_proc;
|
||||
aHWN_THINK_PROC approach_proc;
|
||||
aHWN_THINK_PROC approach_init_proc;
|
||||
aNPC_TALK_REQUEST_PROC talk_request_proc;
|
||||
u8 unk;
|
||||
} aHWN_talk_data_c;
|
||||
|
||||
static void aHWN_setup_think_proc(ACTOR* actorx, GAME* game, int dt_tbl_idx) {
|
||||
NPC_HALLOWEEN_ACTOR* hwn_actor = (NPC_HALLOWEEN_ACTOR*)actorx;
|
||||
static void aHWN_setup_think_proc(HALLOWEEN_NPC_ACTOR* hwn_actor, GAME_PLAY* play, int dt_tbl_idx) {
|
||||
aHWN_talk_data_c* data;
|
||||
// clang-format off
|
||||
static aHWN_talk_data_c dt_tbl[] = {
|
||||
@@ -65,21 +64,23 @@ static void aHWN_setup_think_proc(ACTOR* actorx, GAME* game, int dt_tbl_idx) {
|
||||
hwn_actor->think_proc = data->approach_proc;
|
||||
hwn_actor->npc_class.talk_info.talk_request_proc = data->talk_request_proc;
|
||||
hwn_actor->_99C = data->unk;
|
||||
data->approach_init_proc((NPC_ACTOR*)actorx, (GAME_PLAY*)game);
|
||||
data->approach_init_proc(hwn_actor, play);
|
||||
}
|
||||
|
||||
static void aHWN_think_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int think_proc_idx) {
|
||||
static aHWN_THINK_PROC_P think_proc[] = { aHWN_think_init_proc, aHWN_think_main_proc };
|
||||
static aNPC_SUB_PROC think_proc[] = { aHWN_think_init_proc, aHWN_think_main_proc };
|
||||
think_proc[think_proc_idx](actorx, play);
|
||||
}
|
||||
|
||||
static void aHWN_schedule_think_init(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static int think_idx[] = { 5, 9, 1 };
|
||||
NPC_CLIP->think_proc(actorx, play, think_idx[actorx->schedule.step], 0);
|
||||
static int think_idx[] = { aNPC_THINK_LEAVE_HOUSE, aNPC_THINK_SPECIAL, aNPC_THINK_WANDER };
|
||||
|
||||
NPC_CLIP->think_proc(actorx, play, think_idx[actorx->schedule.step], aNPC_THINK_TYPE_INIT);
|
||||
}
|
||||
|
||||
static void aHWN_schedule_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
int step = 1;
|
||||
|
||||
actorx->think.think_proc = aHWN_think_proc;
|
||||
if (actorx->npc_info.animal->is_home == TRUE) {
|
||||
step = 0;
|
||||
@@ -89,32 +90,33 @@ static void aHWN_schedule_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
}
|
||||
|
||||
static void aHWN_schedule_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
NPC_HALLOWEEN_ACTOR* hwn_actor = (NPC_HALLOWEEN_ACTOR*)actorx;
|
||||
HALLOWEEN_NPC_ACTOR* hwn_actor = (HALLOWEEN_NPC_ACTOR*)actorx;
|
||||
if (actorx->think.end_flag == TRUE) {
|
||||
if (actorx->schedule.step != 2) {
|
||||
actorx->schedule.step += 1;
|
||||
}
|
||||
aHWN_schedule_think_init(actorx, play);
|
||||
} else if (hwn_actor->_9A0 == TRUE) {
|
||||
if (NPC_CLIP->think_proc(actorx, play, -1, 1) == 0) {
|
||||
} else if (hwn_actor->wait_think_done == TRUE) {
|
||||
if (NPC_CLIP->think_proc(actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) {
|
||||
if (actorx->action.step == aNPC_ACTION_END_STEP) {
|
||||
hwn_actor->_9A0 = FALSE;
|
||||
hwn_actor->wait_think_done = FALSE;
|
||||
aHWN_schedule_think_init(actorx, play);
|
||||
}
|
||||
} else {
|
||||
actorx->request.act_priority = 4;
|
||||
}
|
||||
} else {
|
||||
if (NPC_CLIP->think_proc(actorx, play, -1, 1) == 0) {
|
||||
NPC_CLIP->think_proc(actorx, play, -1, 2);
|
||||
if (NPC_CLIP->think_proc(actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) {
|
||||
NPC_CLIP->think_proc(actorx, play, -1, aNPC_THINK_TYPE_MAIN);
|
||||
} else {
|
||||
actorx->request.act_priority = 4;
|
||||
hwn_actor->_9A0 = TRUE;
|
||||
hwn_actor->wait_think_done = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int sche_proc_idx) {
|
||||
static aNPC_SUB_PROC sche_proc[] = { aHWN_schedule_init_proc, aHWN_schedule_main_proc };
|
||||
|
||||
sche_proc[sche_proc_idx](actorx, play);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ static int aHWN_get_trick_type(void) {
|
||||
int idx[mPr_POCKETS_SLOT_COUNT];
|
||||
mActor_name_t* pockets_p = Now_Private->inventory.pockets;
|
||||
int i;
|
||||
int ret = 0; // trick type enum/define
|
||||
int ret = aHWN_TRICK_TYPE_CHG_CLOTH;
|
||||
|
||||
for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) {
|
||||
switch (ITEM_NAME_GET_TYPE(*pockets_p)) {
|
||||
@@ -35,55 +35,53 @@ static int aHWN_get_trick_type(void) {
|
||||
mSP_SelectRandomItem_New(NULL, &new_item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_HALLOWEEN2, FALSE);
|
||||
mPr_SetPossessionItem(Now_Private, idx[RANDOM(count)], new_item, mPr_ITEM_COND_NORMAL);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 0, 0xFD); // play trick animation
|
||||
ret = 1;
|
||||
ret = aHWN_TRICK_TYPE_CHG_ITEM;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void aHWN_restart_msg_win(NPC_HALLOWEEN_ACTOR* actorx, int msg_idx) {
|
||||
int msg_data;
|
||||
static void aHWN_restart_msg_win(HALLOWEEN_NPC_ACTOR* actorx, int msg_idx) {
|
||||
mMsg_Window_c* msg_p = mMsg_Get_base_window_p();
|
||||
int look = mNpc_GetLooks(actorx->npc_class.npc_info.event->npc_id);
|
||||
int looks = mNpc_GetLooks(actorx->npc_class.npc_info.event->npc_id);
|
||||
mMsg_request_main_appear_wait_type1(msg_p);
|
||||
mMsg_ChangeMsgData(msg_p, ((look & 0xFF) * 6 + msg_idx));
|
||||
mMsg_ChangeMsgData(msg_p, msg_idx + looks * 6);
|
||||
mMsg_Set_ForceNext(msg_p);
|
||||
mMsg_Unset_LockContinue(msg_p);
|
||||
}
|
||||
|
||||
static void aHWN_first_call_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
int look = mNpc_GetLooks(actorx->npc_class.npc_info.event->npc_id);
|
||||
mMsg_Window_c* msg_p = mMsg_Get_base_window_p();
|
||||
mMsg_Set_continue_msg_num(msg_p, ((look & 0xFF) * 6) + 0x98b);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_TRICK_OR_TREAT_TALK_PROC);
|
||||
static void aHWN_first_call_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
int looks = mNpc_GetLooks(actorx->npc_class.npc_info.event->npc_id);
|
||||
mMsg_SET_CONTINUE_MSG_NUM(0x098B + looks * 6);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_TRICK_OR_TREAT_TALK);
|
||||
}
|
||||
|
||||
static void aHWN_trick_or_treat_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_trick_or_treat_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
int talk_proc_idx;
|
||||
mMsg_Window_c* msg_p = mMsg_Get_base_window_p();
|
||||
int order_value = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9);
|
||||
if (order_value && mMsg_Check_MainNormalContinue(msg_p) == TRUE) {
|
||||
if (mChoice_GET_CHOSENUM() == 0) {
|
||||
if (mChoice_GET_CHOSENUM() == mChoice_CHOICE0) {
|
||||
mMsg_request_main_disappear_wait_type1(msg_p);
|
||||
talk_proc_idx = aHWN_TALK_MENU_OPEN_WAIT_TALK_PROC;
|
||||
talk_proc_idx = aHWN_TALK_MENU_OPEN_WAIT_TALK;
|
||||
} else {
|
||||
talk_proc_idx = aHWN_TALK_TRICK_TIMING_WAIT_TALK_PROC;
|
||||
talk_proc_idx = aHWN_TALK_TRICK_TIMING_WAIT_TALK;
|
||||
}
|
||||
aHWN_change_talk_proc(actorx, talk_proc_idx);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_menu_open_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_menu_open_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
mMsg_Window_c* msg_p = mMsg_Get_base_window_p();
|
||||
if (mMsg_Check_main_wait(msg_p) == TRUE) {
|
||||
mSM_open_submenu(&play->submenu, mSM_OVL_INVENTORY, 6, 0);
|
||||
mMsg_Set_LockContinue(msg_p);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_MENU_CLOSE_WAIT_TALK_PROC);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_MENU_CLOSE_WAIT_TALK);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_menu_close_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actor, GAME_PLAY* play) {
|
||||
static void aHWN_menu_close_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actor, GAME_PLAY* play) {
|
||||
Submenu_Item_c* item_p;
|
||||
int talk_proc_idx;
|
||||
BOOL shouldSetPosessionItem;
|
||||
@@ -95,64 +93,62 @@ static void aHWN_menu_close_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actor, GAME_PLAY
|
||||
item = item_p->item;
|
||||
actor->item = item;
|
||||
if (item == EMPTY_NO) {
|
||||
talk_proc_idx = aHWN_TALK_TRICK_TIMING_WAIT_TALK_PROC;
|
||||
aHWN_restart_msg_win(actor, 0x98c);
|
||||
talk_proc_idx = aHWN_TALK_TRICK_TIMING_WAIT_TALK;
|
||||
aHWN_restart_msg_win(actor, 0x098C);
|
||||
shouldSetPosessionItem = FALSE;
|
||||
} else if (item != ITM_FOOD_CANDY) {
|
||||
if ((item >= ITM_NET && item <= ITM_ROD) || (item >= ITM_GOLDEN_NET && item <= ITM_GOLDEN_ROD)) {
|
||||
shouldSetPosessionItem = FALSE;
|
||||
}
|
||||
talk_proc_idx = aHWN_TALK_GET_OTHER_ITEM_WAIT_TALK_PROC;
|
||||
talk_proc_idx = aHWN_TALK_GET_OTHER_ITEM_WAIT_TALK;
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3);
|
||||
} else {
|
||||
talk_proc_idx = aHWN_TALK_GET_AME_WAIT_TALK_PROC;
|
||||
aHWN_restart_msg_win(actor, 0x98f);
|
||||
talk_proc_idx = aHWN_TALK_GET_AME_WAIT_TALK;
|
||||
aHWN_restart_msg_win(actor, 0x098F);
|
||||
}
|
||||
if (shouldSetPosessionItem == TRUE) {
|
||||
mPr_SetPossessionItem(Now_Private, item_p->slot_no, 0, 0);
|
||||
mPr_SetPossessionItem(Now_Private, item_p->slot_no, EMPTY_NO, mPr_ITEM_COND_NORMAL);
|
||||
}
|
||||
aHWN_change_talk_proc(actor, talk_proc_idx);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_get_other_item_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_get_other_item_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
mActor_name_t item;
|
||||
int talk_proc_idx;
|
||||
int msg_idx;
|
||||
if (CLIP(handOverItem_clip)->master_actor == 0) {
|
||||
if (CLIP(handOverItem_clip)->master_actor == NULL) {
|
||||
item = actorx->item;
|
||||
talk_proc_idx = aHWN_TALK_TRICK_TIMING_WAIT_TALK_PROC;
|
||||
msg_idx = 0x98e;
|
||||
talk_proc_idx = aHWN_TALK_TRICK_TIMING_WAIT_TALK;
|
||||
msg_idx = 0x098E;
|
||||
if ((item >= ITM_NET && item <= ITM_ROD) || (item >= ITM_GOLDEN_NET && item <= ITM_GOLDEN_ROD)) {
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 0);
|
||||
msg_idx = 0x990;
|
||||
talk_proc_idx = aHWN_TALK_RECEIVE_TOOL_ITEM_START_WAIT_TALK_PROC;
|
||||
msg_idx = 0x0990;
|
||||
talk_proc_idx = aHWN_TALK_RECEIVE_TOOL_ITEM_START_WAIT_TALK;
|
||||
}
|
||||
aHWN_restart_msg_win(actorx, msg_idx);
|
||||
aHWN_change_talk_proc(actorx, talk_proc_idx);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_receive_tool_item_start_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_receive_tool_item_start_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
int OrderValue = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1);
|
||||
if (OrderValue == 2) {
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 0, actorx->item);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 1, 7);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 2, 0);
|
||||
aNPC_DEMO_GIVE_ITEM(actorx->item, aHOI_REQUEST_PUTAWAY, FALSE);
|
||||
mMsg_SET_LOCKCONTINUE();
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_RECEIVE_TOOL_ITEM_END_WAIT_TALK_PROC);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_RECEIVE_TOOL_ITEM_END_WAIT_TALK);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_receive_tool_item_end_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_receive_tool_item_end_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
int OrderValue = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1);
|
||||
if ((OrderValue == 0) && (CLIP(handOverItem_clip)->master_actor == 0)) {
|
||||
if ((OrderValue == 0) && (CLIP(handOverItem_clip)->master_actor == NULL)) {
|
||||
mMsg_UNSET_LOCKCONTINUE();
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_TRICK_TIMING_WAIT_TALK_PROC);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_TRICK_TIMING_WAIT_TALK);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_trick_timing_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_trick_timing_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
int trick_type;
|
||||
int talk_proc_idx;
|
||||
int OrderValue = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9);
|
||||
@@ -160,9 +156,9 @@ static void aHWN_trick_timing_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_P
|
||||
if (OrderValue != 0) {
|
||||
msg_p = mMsg_Get_base_window_p();
|
||||
trick_type = aHWN_get_trick_type();
|
||||
talk_proc_idx = aHWN_TALK_PL_DEMO_CODE_END_WAIT_TALK_PROC;
|
||||
if (trick_type == 0) {
|
||||
talk_proc_idx = aHWN_TALK_TRICK_CHG_CLOTH_TALK_PROC;
|
||||
talk_proc_idx = aHWN_TALK_PL_DEMO_CODE_END_WAIT_TALK;
|
||||
if (trick_type == aHWN_TRICK_TYPE_CHG_CLOTH) {
|
||||
talk_proc_idx = aHWN_TALK_TRICK_CHG_CLOTH_TALK;
|
||||
}
|
||||
mMsg_Set_LockContinue(msg_p);
|
||||
aHWN_change_talk_proc(actorx, talk_proc_idx);
|
||||
@@ -170,59 +166,61 @@ static void aHWN_trick_timing_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_P
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_trick_chg_cloth_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_trick_chg_cloth_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
int player_actor_main_index = mPlib_get_player_actor_main_index(&play->game);
|
||||
if (player_actor_main_index == mPlayer_INDEX_CHANGE_CLOTH) {
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_TRICK_CHG_CLOTH_END_WAIT_TALK_PROC);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_TRICK_CHG_CLOTH_END_WAIT_TALK);
|
||||
} else {
|
||||
mPlib_request_main_change_cloth_forNPC_type1(&play->game, ITM_CLOTH017, 0x11, 0);
|
||||
mPlib_request_main_change_cloth_forNPC_type1(&play->game, ITM_CLOTH017, 17, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_trick_chg_cloth_end_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_trick_chg_cloth_end_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
mMsg_Window_c* msg_p;
|
||||
int looks;
|
||||
int player_actor_main_index = mPlib_get_player_actor_main_index(&play->game);
|
||||
|
||||
if (player_actor_main_index != mPlayer_INDEX_CHANGE_CLOTH) {
|
||||
msg_p = mMsg_Get_base_window_p();
|
||||
looks = mNpc_GetLooks(actorx->npc_class.npc_info.event->npc_id);
|
||||
mMsg_Unset_LockContinue(msg_p);
|
||||
mMsg_Set_ForceNext(msg_p);
|
||||
mMsg_ChangeMsgData(msg_p, (looks * 6 + 0x98d));
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_NONE_PROC1);
|
||||
mMsg_ChangeMsgData(msg_p, 0x098D + looks * 6);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_END_WAIT);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_get_ame_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_get_ame_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
int OrderValue = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1);
|
||||
if ((OrderValue == 3) && (CLIP(handOverItem_clip)->master_actor != 0)) {
|
||||
if ((OrderValue == 3) && (CLIP(handOverItem_clip)->master_actor != NULL)) {
|
||||
mMsg_SET_LOCKCONTINUE();
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_GET_AME_TALK_PROC);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_GET_AME_TALK);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_get_ame_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_get_ame_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
if (CLIP(handOverItem_clip)->master_actor == 0) {
|
||||
mMsg_UNSET_LOCKCONTINUE();
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_NONE_PROC1);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_END_WAIT);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_pl_demo_code_end_wait_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, GAME_PLAY* play) {
|
||||
static void aHWN_pl_demo_code_end_wait_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
mMsg_Window_c* msg_p;
|
||||
int look;
|
||||
int OrderValue = mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 0);
|
||||
if (OrderValue == 0) {
|
||||
int looks;
|
||||
int order = mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 0);
|
||||
|
||||
if (order == 0) {
|
||||
msg_p = mMsg_Get_base_window_p();
|
||||
look = mNpc_GetLooks(actorx->npc_class.npc_info.event->npc_id);
|
||||
looks = mNpc_GetLooks(actorx->npc_class.npc_info.event->npc_id);
|
||||
mMsg_Unset_LockContinue(msg_p);
|
||||
mMsg_Set_ForceNext(msg_p);
|
||||
mMsg_ChangeMsgData(msg_p, ((look & 0xFF) * 6 + 0x98d));
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_NONE_PROC1);
|
||||
mMsg_ChangeMsgData(msg_p, 0x098D + looks * 6);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_END_WAIT);
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_change_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, int talk_proc_idx) {
|
||||
static void aHWN_change_talk_proc(HALLOWEEN_NPC_ACTOR* actorx, int talk_proc_idx) {
|
||||
// clang-format off
|
||||
static aHWN_TALK_PROC talk_proc[] = {
|
||||
&aHWN_first_call_talk_proc,
|
||||
@@ -245,9 +243,11 @@ static void aHWN_change_talk_proc(NPC_HALLOWEEN_ACTOR* actorx, int talk_proc_idx
|
||||
}
|
||||
|
||||
static void aHWN_set_force_talk_info(ACTOR* actorx) {
|
||||
mDemo_Set_msg_num(0x98a);
|
||||
mDemo_Set_talk_turn(1);
|
||||
aHWN_change_talk_proc((NPC_HALLOWEEN_ACTOR*)actorx, aHWN_TALK_FIRST_CALL_TALK_PROC);
|
||||
HALLOWEEN_NPC_ACTOR* hwn_actor = (HALLOWEEN_NPC_ACTOR*)actorx;
|
||||
|
||||
mDemo_Set_msg_num(0x098A);
|
||||
mDemo_Set_talk_turn(TRUE);
|
||||
aHWN_change_talk_proc(hwn_actor, aHWN_TALK_FIRST_CALL_TALK);
|
||||
}
|
||||
|
||||
static void aHWN_force_talk_request(ACTOR* actorx, GAME* game) {
|
||||
@@ -270,32 +270,35 @@ static void aHWN_force_talk_request(ACTOR* actorx, GAME* game) {
|
||||
}
|
||||
}
|
||||
|
||||
static void aHWN_set_norm_talk_info(NPC_HALLOWEEN_ACTOR* actorx) {
|
||||
static void aHWN_set_norm_talk_info(HALLOWEEN_NPC_ACTOR* actorx) {
|
||||
int looks = mNpc_GetLooks(actorx->npc_class.npc_info.event->npc_id);
|
||||
mDemo_Set_msg_num((looks & 0xFF) + 0x9af);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_NONE_PROC1);
|
||||
|
||||
mDemo_Set_msg_num(0x09AF + looks);
|
||||
aHWN_change_talk_proc(actorx, aHWN_TALK_END_WAIT);
|
||||
}
|
||||
|
||||
static void aHWN_norm_talk_request(NPC_HALLOWEEN_ACTOR* actorx) {
|
||||
mDemo_Request(mDemo_TYPE_TALK, &actorx->npc_class.actor_class, (mDemo_REQUEST_PROC)aHWN_set_norm_talk_info);
|
||||
static void aHWN_norm_talk_request(ACTOR* actorx, GAME* game) {
|
||||
mDemo_Request(mDemo_TYPE_TALK, actorx, (mDemo_REQUEST_PROC)aHWN_set_norm_talk_info);
|
||||
}
|
||||
|
||||
static int aHWN_talk_init() {
|
||||
mDemo_Set_ListenAble();
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL aHWN_talk_end_chk(ACTOR* actorx, GAME* game) {
|
||||
HALLOWEEN_NPC_ACTOR* hwn_actor = (HALLOWEEN_NPC_ACTOR*)actorx;
|
||||
GAME_PLAY* play = (GAME_PLAY*)game;
|
||||
BOOL res = FALSE;
|
||||
NPC_HALLOWEEN_ACTOR* hwn_actor = (NPC_HALLOWEEN_ACTOR*)actorx;
|
||||
hwn_actor->talk_proc((NPC_HALLOWEEN_ACTOR*)actorx, (GAME_PLAY*)game);
|
||||
if ((mDemo_Check(mDemo_TYPE_SPEAK, &hwn_actor->npc_class.actor_class) == FALSE) &&
|
||||
(mDemo_Check(mDemo_TYPE_TALK, &hwn_actor->npc_class.actor_class) == FALSE)) {
|
||||
|
||||
hwn_actor->talk_proc(hwn_actor, play);
|
||||
if ((mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE) &&
|
||||
(mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE)) {
|
||||
if (hwn_actor->npc_class.schedule.step == 1) {
|
||||
hwn_actor->npc_class.think.end_flag = TRUE;
|
||||
}
|
||||
res = TRUE;
|
||||
hwn_actor->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)aHWN_norm_talk_request;
|
||||
hwn_actor->npc_class.talk_info.talk_request_proc = aHWN_norm_talk_request;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user