Implement & link ac_quest_talk_normal_init

This commit is contained in:
Cuyler36
2024-11-08 18:39:42 -05:00
parent b23f4bd984
commit 28dda101e3
9 changed files with 2362 additions and 11 deletions
+1 -1
View File
@@ -1024,7 +1024,7 @@ config.libs = [
Object(Matching, "actor/ac_quest_talk_greeting.c"),
Object(Matching, "actor/ac_quest_talk_init.c"),
Object(NonMatching, "actor/ac_quest_talk_island.c"),
Object(NonMatching, "actor/ac_quest_talk_normal_init.c"),
Object(Matching, "actor/ac_quest_talk_normal_init.c"),
Object(Matching, "actor/ac_radio.c"),
Object(Matching, "actor/ac_reserve.c"),
Object(NonMatching, "actor/ac_reset_demo.c"),
+11 -8
View File
@@ -195,14 +195,15 @@ struct quest_manager_regist_s {
int animal_idx;
};
typedef struct quest_manager_normal_info_s {
#define aQMgr_NORMAL_TRADE_ITEM_NUM 5
typedef struct {
Anmmem_c* memory;
Anmplmail_c* anmplmail;
u32 pay;
int player_num_items; // valid items to trade
int player_give_item_idx; // index to give item away
mActor_name_t player_items[4]; // items which the player has in their inventory which match 'player_num_items'
mActor_name_t selected_item;
Anmplmail_c* mail;
int pay;
int item_idx;
int free_idx;
mActor_name_t trade_items[aQMgr_NORMAL_TRADE_ITEM_NUM];
} aQMgr_normal_info_c;
typedef struct quest_manager_talk_wait_s {
@@ -215,6 +216,8 @@ typedef struct quest_manager_choice_s {
int talk_action;
} aQMgr_choice_c;
#define aQMgr_LAST_STR_NUM 7
typedef int (*aQMgr_TALK_COMMON_PROC)(QUEST_MANAGER_ACTOR*, int);
typedef void (*aQMgr_ACTOR_CLEAR_REGIST_PROC)(aQMgr_regist_c*, int);
typedef void (*aQMgr_ACTOR_REGIST_QUEST_PROC)(QUEST_MANAGER_ACTOR*, int*, aQMgr_quest_c*, int);
@@ -256,7 +259,7 @@ struct quest_manager_actor {
/* 0x95C */ u8 errand_next[mPr_ERRAND_QUEST_NUM];
/* 0x962 */ Mail_c mail;
/* 0xA8C */ Anmmem_c* mail_memory;
/* 0xA90 */ u8 last_strings[7];
/* 0xA90 */ u8 last_strings[aQMgr_LAST_STR_NUM];
/* 0xA98 */ mActor_name_t give_item;
/* 0xA9C */ int _A9C;
};
+2
View File
@@ -367,6 +367,8 @@ extern common_data_t common_data;
#define SetRoomMusicBox(n) SetMusicBox(GetRoomMusicBox(), n)
#define ClrRoomMusicBox(n) ClrMusicBox(GetRoomMusicBox(), n)
#define NowPrivate_GetItemCond(i) mPr_GET_ITEM_COND(Now_Private->inventory.item_conditions, i)
#define CLIP(n) (Common_Get(clip).n)
#define aMR_CLIP (Common_Get(clip).my_room_clip)
+28 -1
View File
@@ -116,7 +116,7 @@ enum event_type {
mEv_SPNPC_EVENT, /* special NPC events */
mEv_SAVED_EVENT, /* events saved to data */
mEv_TYPE2_EVENT, /* unused? */
mEv_TYPE3_EVENT, /* unused? */
mEv_TYPE_RUMOR,
mEv_TYPE4_EVENT, /* unused? */
mEv_DAILY_EVENT, /* checked daily always? aSL_ReportShopOpen2Event has event 3 */
mEv_SPECL_EVENT, /* ??? secondary special npc event data? */
@@ -173,6 +173,33 @@ enum events {
mEv_SAVED_GATEWAY_PLR3,
mEv_SAVED_GATEWAY_FRGN, /* Foreigner */
/* Rumors */
mEv_RUMOR_NEW_YEARS_DAY = (int)mEv_SET(mEv_TYPE_RUMOR, 0),
mEv_RUMOR_KAMAKURA,
mEv_RUMOR_VALENTINES_DAY,
mEv_RUMOR_GROUNDHOG_DAY,
mEv_RUMOR_CHERRY_BLOSSOM_FESTIVAL,
mEv_RUMOR_CHERRY_BLOSSOM_FESTIVAL2,
mEv_RUMOR_SPRING_SPORTS_FAIR,
mEv_RUMOR_HARVEST_FESTIVAL,
mEv_RUMOR_KOINOBORI,
mEv_RUMOR_SUMMER_FISHING_TOURNEY,
mEv_RUMOR_SUMMER_FISHING_TOURNEY2,
mEv_RUMOR_MORNING_AEROBICS,
mEv_RUMOR_MORNING_AEROBICS2,
mEv_RUMOR_FIREWORKS_SHOW,
mEv_RUMOR_FIREWORKS_SHOW2, // reminder it happens weekly, unused in AC
mEv_RUMOR_METEOR_SHOWER,
mEv_RUMOR_HARVEST_MOON_DAY,
mEv_RUMOR_FALL_SPORTS_FAIR,
mEv_RUMOR_MUSHROOM_SEASON,
mEv_RUMOR_TALK_MUSHROOM_SEASON,
mEv_RUMOR_HALLOWEEN,
mEv_RUMOR_FALL_FISHING_TOURNEY,
mEv_RUMOR_FALL_FISHING_TOURNEY2,
mEv_RUMOR_TOY_DAY,
mEv_RUMOR_NEW_YEARS_EVE_COUNTDOWN,
mEv_DAILY_0 = (int)mEv_SET(mEv_DAILY_EVENT, 0), /* unused */
mEv_DAILY_1, /* unused */
mEv_DAILY_2, /* unused */
+2
View File
@@ -349,6 +349,7 @@ extern void mMsg_sound_unset_voice_silent(mMsg_Window_c* msg_p, int update_mode)
#define mMsg_UNSET_LOCKCONTINUE() mMsg_Unset_LockContinue(mMsg_Get_base_window_p())
#define mMsg_SET_FORCENEXT() mMsg_Set_ForceNext(mMsg_Get_base_window_p())
#define mMsg_SET_CANCELNORMALCONTINUE() mMsg_Set_CancelNormalContinue(mMsg_Get_base_window_p())
#define mMsg_SET_ITEM_STR(str_no, str, str_len) mMsg_Set_item_str(mMsg_Get_base_window_p(), str_no, str, str_len)
#define mMsg_SET_ITEM_STR_ART(str_no, str, str_len, item_no) \
mMsg_Set_item_str_art(mMsg_Get_base_window_p(), str_no, str, str_len, mIN_get_item_article(item_no))
#define mMsg_SET_FREE_STR(str_no, str, str_len) mMsg_Set_free_str(mMsg_Get_base_window_p(), str_no, str, str_len)
@@ -370,6 +371,7 @@ extern void mMsg_sound_unset_voice_silent(mMsg_Window_c* msg_p, int update_mode)
#define mMsg_REQUEST_MAIN_DISAPPEAR() mMsg_request_main_disappear(mMsg_Get_base_window_p())
#define mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1() mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p())
#define mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE2() mMsg_request_main_disappear_wait_type2(mMsg_Get_base_window_p())
#define mMsg_REQUEST_MAIN_APPEAR() mMsg_request_main_appear(mMsg_Get_base_window_p())
#define mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE1() mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p());
#define mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE2() mMsg_request_main_appear_wait_type2(mMsg_Get_base_window_p());
+1
View File
@@ -212,6 +212,7 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define WISP_COUNT(n) (ITEM_IS_WISP(n) ? (1 + (n) - ITM_SPIRIT0) : 0)
#define ITEM_IS_INSECT(n) ((n) >= ITM_INSECT_START && (n) < ITM_INSECT_END)
#define ITEM_IS_FISH(n) ((n) >= ITM_FISH_START && (n) <= ITM_FISH_END)
#define ITEM_IS_WISP(n) ((n) >= ITM_SPIRIT0 && (n) <= ITM_SPIRIT4)
#define ITEM_IS_PAPER(n) ((n) >= ITM_PAPER_START && (n) <= (ITM_PAPER_END - 1))
#define ITEM_IS_CLOTH(n) ((n) >= ITM_CLOTH_START && (n) < ITM_CLOTH_END)
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -2491,7 +2491,7 @@ extern int mEv_spread_rumor(int type) {
extern int mEv_get_rumor() {
if (n_rumor != 0) {
return rumor_table[gamePT->frame_counter % n_rumor] | mEv_SET(mEv_TYPE3_EVENT, 0);
return rumor_table[gamePT->frame_counter % n_rumor] | mEv_SET(mEv_TYPE_RUMOR, 0);
}
return 0;
+1
View File
@@ -1282,6 +1282,7 @@ def generate_objdiff_config(
"*.yml",
"*.txt",
"*.json",
"*.c_inc",
],
"units": [],
"progress_categories": [],