mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-08-04 00:39:06 -04:00
Merge pull request #442 from Cuyler36/m_tag_ovl
This commit is contained in:
@@ -19,6 +19,10 @@ extern "C" {
|
||||
#define aMR_NO_FTR_ID 200
|
||||
#define aMR_NO_FTR_ID2 201
|
||||
|
||||
#define aMR_JUDGE_MAX_FTR -1
|
||||
#define aMR_JUDGE_CANT_PLACE_FTR -2
|
||||
#define aMR_JUDGE_OTHER_ROOM -3
|
||||
|
||||
typedef struct my_room_actor_s MY_ROOM_ACTOR;
|
||||
|
||||
enum {
|
||||
|
||||
+21
-2
@@ -17,16 +17,19 @@ extern "C" {
|
||||
#define SE_FLAG_15(id) ((id) | 0x8000)
|
||||
|
||||
// TODO: Make the rest of Sound Effects with parameters
|
||||
#define SE_REGISTER MONO(0x50)
|
||||
#define SE_REGISTER MONO(NA_SE_REGISTER)
|
||||
|
||||
typedef enum audio_sound_effects {
|
||||
NA_SE_START,
|
||||
NA_SE_CURSOL,
|
||||
NA_SE_MENU_EXIT,
|
||||
|
||||
NA_SE_3 = 3,
|
||||
|
||||
NA_SE_ZOOMUP = 4,
|
||||
NA_SE_ZOOMDOWN_SHORT,
|
||||
|
||||
NA_SE_A = 0xA,
|
||||
NA_SE_PAGE_OKURI = 0xB,
|
||||
|
||||
NA_SE_SENTAKU_OPEN,
|
||||
@@ -39,8 +42,12 @@ typedef enum audio_sound_effects {
|
||||
NA_SE_25 = 0x25,
|
||||
NA_SE_26 = 0x26,
|
||||
|
||||
NA_SE_2A = 0x2A,
|
||||
|
||||
NA_SE_MENU_PAUSE = 0x30,
|
||||
NA_SE_31 = 0x31,
|
||||
NA_SE_32 = 0x32,
|
||||
NA_SE_33 = 0x33,
|
||||
|
||||
NA_SE_DRAWER_SHUT = 0x3A,
|
||||
|
||||
@@ -52,6 +59,8 @@ typedef enum audio_sound_effects {
|
||||
NA_SE_COIN,
|
||||
NA_SE_TEMOCHI_KAZAGURUMA,
|
||||
|
||||
NA_SE_REGISTER = 0x50,
|
||||
|
||||
NA_SE_52 = 0x52,
|
||||
|
||||
NA_SE_ITEM_HORIDASHI = 0x57,
|
||||
@@ -60,7 +69,8 @@ typedef enum audio_sound_effects {
|
||||
NA_SE_TOOL_FURI = 0x5A, // swing?
|
||||
NA_SE_AMI_HIT = 0x5C,
|
||||
NA_SE_TOOL_GET,
|
||||
|
||||
NA_SE_5E = 0x5E,
|
||||
NA_SE_5F = 0x5F,
|
||||
NA_SE_60 = 0x60,
|
||||
|
||||
NA_SE_GASAGOSO = 0x69,
|
||||
@@ -147,6 +157,8 @@ typedef enum audio_sound_effects {
|
||||
NA_SE_SOFT_CHAIR_STANDUP,
|
||||
NA_SE_HARD_CHAIR_STANDUP,
|
||||
|
||||
NA_SE_426 = 0x426,
|
||||
|
||||
NA_SE_BUBU_CHAIR_STANDUP = 0x429,
|
||||
NA_SE_JUMP,
|
||||
NA_SE_LANDING,
|
||||
@@ -158,14 +170,21 @@ typedef enum audio_sound_effects {
|
||||
|
||||
NA_SE_UMBRELLA_ROTATE = 0x432,
|
||||
|
||||
NA_SE_435 = 0x435,
|
||||
NA_SE_436 = 0x436,
|
||||
|
||||
NA_SE_KARABURI = 0x43A,
|
||||
|
||||
NA_SE_ROD_STROKE_SMALL = 0x445,
|
||||
NA_SE_446 = 0x446,
|
||||
|
||||
NA_SE_SCOOP_TREE_HIT = 0x448,
|
||||
NA_SE_SCOOP_ITEM_HIT,
|
||||
NA_SE_AXE_BALL_HIT,
|
||||
|
||||
NA_SE_45E = 0x45E,
|
||||
NA_SE_45F = 0x45F,
|
||||
|
||||
NA_SE_461 = 0x461,
|
||||
|
||||
NA_SE_COIN_GASAGOSO = 0x465,
|
||||
|
||||
@@ -14,6 +14,7 @@ extern "C" {
|
||||
#define mCL_MENU_ITEM_MAX 742
|
||||
#define mCL_MENU_PAGE_SIZE 7
|
||||
#define mCL_ITEM_DATA_NUM 2
|
||||
#define mCL_TAG_STR_SIZE 10
|
||||
|
||||
enum {
|
||||
mCL_MENU_FTR,
|
||||
|
||||
@@ -344,6 +344,10 @@ extern void mCoBG_GroundCheckOnly(xyz_t* reverse_pos, ACTOR* actor, f32 check_ra
|
||||
extern f32 mCoBG_Wpos2BgUtCenterHeight_AddColumn(xyz_t pos);
|
||||
extern f32 mCoBG_UtNum2UtCenterY_Keep(int ut_x, int ut_z);
|
||||
extern int mCoBG_RegistDecalCircle(const xyz_t* pos_p, f32 radius_start, f32 radius_end, s16 timer);
|
||||
extern int mCoBG_CheckAcceptDesignSign(const xyz_t* pos_p);
|
||||
extern void mCoBG_VirtualBGCheck(xyz_t* rev_pos_p, mCoBG_Check_c* bg_check, const xyz_t* start_pos_p,
|
||||
const xyz_t* end_pos_p, s16 angle_y, s16 water_flag, s16 ground_flag, f32 range,
|
||||
f32 ground_dist, s16 attr_wall, s16 rev_type, s16 check_type);
|
||||
|
||||
typedef int (*mCoBG_LINECHECK_PROC)(mActor_name_t);
|
||||
|
||||
|
||||
@@ -356,6 +356,19 @@ extern common_data_t common_data;
|
||||
#define Get_Island() (Save_Get(island))
|
||||
#define Get_Island_Villager() (Get_Island().animal)
|
||||
|
||||
#define GetRoomMusicBox() (Save_Get(scene_no) == SCENE_COTTAGE_MY \
|
||||
? Save_Get(island).cottage.music_box \
|
||||
: Save_Get(homes[mHS_get_arrange_idx(Common_Get(player_no))]).music_box)
|
||||
#define ChkMusicBox(box, n) (((box)[((n) / 32) & 1] >> ((n) & 31)) & 1)
|
||||
#define SetMusicBox(box, n) ((box)[((n) / 32) & 1] |= (1 << ((n) & 31)))
|
||||
#define ClrMusicBox(box, n) ((box)[((n) / 32) & 1] &= ~(u32)(1 << ((n) & 31)))
|
||||
#define ChkRoomMusicBox(n) ChkMusicBox(GetRoomMusicBox(), n)
|
||||
#define SetRoomMusicBox(n) SetMusicBox(GetRoomMusicBox(), n)
|
||||
#define ClrRoomMusicBox(n) ClrMusicBox(GetRoomMusicBox(), n)
|
||||
|
||||
#define CLIP(n) (Common_Get(clip).n)
|
||||
#define aMR_CLIP (Common_Get(clip).my_room_clip)
|
||||
|
||||
extern void common_data_reinit();
|
||||
extern void common_data_init();
|
||||
extern void common_data_clear();
|
||||
|
||||
@@ -2,11 +2,37 @@
|
||||
#define M_CPMAIL_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_cpmail_ovl_h.h"
|
||||
#include "m_submenu.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define mCM_PAGE_COUNT 8
|
||||
#define mCM_MAIL_COUNT 20
|
||||
#define mCM_FOLDER_NAME_LEN 12
|
||||
#define mCM_FOLDER_NAME_MAX_WIDTH 120
|
||||
|
||||
/* TODO: move this to a better header */
|
||||
typedef struct card_mail_s {
|
||||
int count;
|
||||
u8 folder_names[mCM_PAGE_COUNT][mCM_FOLDER_NAME_LEN];
|
||||
Mail_c mail[mCM_PAGE_COUNT][mCM_MAIL_COUNT];
|
||||
} mCD_mail_c;
|
||||
|
||||
struct cpmail_ovl_s {
|
||||
mCD_mail_c* card_mail;
|
||||
Mail_c player_mail[mPr_INVENTORY_MAIL_COUNT];
|
||||
u8 page_order[mCM_PAGE_COUNT];
|
||||
s16 page_move_timer;
|
||||
u8 next_page_id;
|
||||
u32 mark_bitfield;
|
||||
int mark_flag;
|
||||
u8 _BBC;
|
||||
u32 mark_bitfield2;
|
||||
};
|
||||
|
||||
extern void mCM_cpmail_ovl_construct(Submenu* submenu);
|
||||
extern void mCM_cpmail_ovl_destruct(Submenu* submenu);
|
||||
extern void mCM_cpmail_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct cpmail_ovl_s mCM_Ovl_c;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2,14 +2,47 @@
|
||||
#define M_CPORIGINAL_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_cporiginal_ovl_h.h"
|
||||
#include "m_submenu_ovl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define mCO_PAGE_NUM 8
|
||||
#define mCO_ORIGINAL_NUM 12
|
||||
#define mCO_FOLDER_NAME_LEN 12
|
||||
#define mCO_FOLDER_NAME_MAX_WIDTH 120
|
||||
|
||||
/* TODO: find a better place for this */
|
||||
typedef struct card_original_s {
|
||||
int count;
|
||||
u8 folder_names[mCO_PAGE_NUM][mCO_FOLDER_NAME_LEN];
|
||||
mNW_original_design_c original[mCO_PAGE_NUM][mCO_ORIGINAL_NUM];
|
||||
int _CC80;
|
||||
} mCD_original_c;
|
||||
|
||||
struct cporiginal_s {
|
||||
mCD_original_c* card_original;
|
||||
u8 page_order[mCO_PAGE_NUM];
|
||||
u8 up_folder;
|
||||
u8 chang_flg;
|
||||
int _10;
|
||||
u16 mark_flg;
|
||||
u16 hide_flg[mCO_PAGE_NUM];
|
||||
u8 _26;
|
||||
u8 cloth_org_no;
|
||||
u8 cloth_org_idx;
|
||||
u8 image_order[mCO_PAGE_NUM][mCO_ORIGINAL_NUM + 1];
|
||||
};
|
||||
|
||||
extern void mCO_swap_image(Submenu* submenu, mActor_name_t item0, mActor_name_t item1);
|
||||
extern void mCO_change_up_folder(Submenu* submenu, int idx);
|
||||
extern int mCO_top_folder(Submenu* submenu);
|
||||
extern u8* mCO_get_folder_name(Submenu* submenu, int folder);
|
||||
extern u8* mCO_get_image_name(Submenu* submenu, int folder, int idx);
|
||||
extern int mCO_check_mark_flg(Submenu* submenu, int idx);
|
||||
extern void mCO_clear_mark_flg(Submenu* submenu);
|
||||
extern int mCO_check_hide_flg(Submenu* submenu, int folder, int idx);
|
||||
extern void mCO_on_hide_flg(Submenu* submenu, int folder, int idx);
|
||||
extern void mCO_clear_hide_flg(Submenu* submenu);
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef M_CPORIGINAL_H_H
|
||||
#define M_CPORIGINAL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct cporiginal_s mCO_Ovl_c;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -14,7 +14,7 @@ enum {
|
||||
mEE_TYPE_BOARD,
|
||||
mEE_TYPE_NOTICE,
|
||||
mEE_TYPE_MSCORE,
|
||||
mEE_TYPE_CPORIGINAL,
|
||||
mEE_TYPE_CPACK,
|
||||
mEE_TYPE_ORIGINAL_DESIGN,
|
||||
|
||||
mEE_TYPE_NUM
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ extern "C" {
|
||||
|
||||
extern void mGB_copy_image(Submenu*, mActor_name_t, mActor_name_t);
|
||||
extern void mGB_draw_gba(Submenu* submenu, GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, int idx, int color_flag);
|
||||
|
||||
extern u8* mGB_get_image_name(Submenu* submenu, int idx);
|
||||
extern void mGB_gba_ovl_construct(Submenu* submenu);
|
||||
extern void mGB_gba_ovl_destruct(Submenu* submenu);
|
||||
extern void mGB_gba_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
@@ -2,11 +2,30 @@
|
||||
#define M_HANIWA_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_haniwa_ovl_h.h"
|
||||
#include "m_tag_ovl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define mHW_OVL_MSG_SIZE 22
|
||||
|
||||
typedef void (*mHW_SET_INTERRUPT_MESSAGE_PROC)(Submenu*, mTG_tag_c*, int);
|
||||
|
||||
struct haniwa_ovl_s {
|
||||
int msg_idx;
|
||||
int msg_interrupt_idx;
|
||||
int table_idx;
|
||||
int sub_idx;
|
||||
int msg_time;
|
||||
int msg_counter;
|
||||
u32 msg_price;
|
||||
u32 price;
|
||||
u8 msg[mHW_OVL_MSG_SIZE];
|
||||
mHW_SET_INTERRUPT_MESSAGE_PROC set_interrupt_message_proc;
|
||||
};
|
||||
|
||||
extern void mHW_haniwa_ovl_construct(Submenu* submenu);
|
||||
extern void mHW_haniwa_ovl_destruct(Submenu* submenu);
|
||||
extern void mHW_haniwa_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct haniwa_ovl_s mHW_Ovl_c;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -15,6 +15,10 @@ extern "C" {
|
||||
#define mIV_ITEM_JOINT_NUM 8
|
||||
#define mIV_PLAYER_EFFECT_NUM 20
|
||||
#define mIV_COLLECT_NUM 40
|
||||
#define mIV_ITEM_COLUMNS 5
|
||||
#define mIV_ITEM_ROWS 3
|
||||
#define mIV_MAIL_COLUMNS 2
|
||||
#define mIV_MAIL_ROWS 5
|
||||
|
||||
enum {
|
||||
mIV_ITEM_SCALE_TYPE_NONE,
|
||||
@@ -80,7 +84,7 @@ struct inventory_ovl_s {
|
||||
u16 selectable_mail_bitfield;
|
||||
|
||||
u32 disp_money;
|
||||
int disp_money_change_frames;
|
||||
int disp_money_chg_step;
|
||||
|
||||
xyz_t shovel_pos;
|
||||
xyz_t release_pos;
|
||||
@@ -96,8 +100,8 @@ struct inventory_ovl_s {
|
||||
mIV_pl_eff_c pl_eff[mIV_PLAYER_EFFECT_NUM];
|
||||
mIV_SET_COLLECT_ITEMNO_PROC set_collect_itemNo_proc;
|
||||
u16 item_mark_bitfield;
|
||||
u16 _5E2;
|
||||
s16 _5E4;
|
||||
u16 mail_mark_bitfield2;
|
||||
s16 mail_mark_flag;
|
||||
u8 _5E6[2];
|
||||
u16 mail_mark_bitfield;
|
||||
u8 original_flag;
|
||||
|
||||
+51
-46
@@ -22,82 +22,84 @@ extern "C" {
|
||||
#define mMl_MUSEUM_INFO_MAIL_NO 189 // TODO: enum?
|
||||
|
||||
enum {
|
||||
mMl_NAME_TYPE_PLAYER,
|
||||
mMl_NAME_TYPE_NPC,
|
||||
mMl_NAME_TYPE_MUSEUM,
|
||||
mMl_NAME_TYPE_PLAYER,
|
||||
mMl_NAME_TYPE_NPC,
|
||||
mMl_NAME_TYPE_MUSEUM,
|
||||
|
||||
mMl_NAME_TYPE_NUM,
|
||||
mMl_NAME_TYPE_CLEAR = 0xFF
|
||||
mMl_NAME_TYPE_NUM,
|
||||
mMl_NAME_TYPE_CLEAR = 0xFF
|
||||
};
|
||||
|
||||
enum {
|
||||
mMl_FONT_0,
|
||||
mMl_FONT_SEND,
|
||||
mMl_FONT_2,
|
||||
mMl_FONT_3,
|
||||
mMl_FONT_4,
|
||||
mMl_FONT_RECV, /* Received letter (with or without a present attached), unread */
|
||||
mMl_FONT_SEND, /* Player-written letter */
|
||||
mMl_FONT_RECV_READ, /* Recieved letter, with/without present, and then read it */
|
||||
mMl_FONT_RECV_PLAYER_PRESENT, /* Recieved letter where present was attached, unread */
|
||||
mMl_FONT_RECV_PLAYER_PRESENT_READ, /* Recieved letter where present was attached, read */
|
||||
|
||||
mMl_FONT_NUM
|
||||
mMl_FONT_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mMl_DATA,
|
||||
mMl_DATA2,
|
||||
mMl_DATA,
|
||||
mMl_DATA2,
|
||||
|
||||
mMl_DATA_NUM
|
||||
mMl_DATA_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mMl_TYPE_MAIL = 0,
|
||||
mMl_TYPE_XMAS = 1,
|
||||
mMl_TYPE_SHOP_SALE_LEAFLET = 2,
|
||||
mMl_TYPE_BROKER_SALE_LEAFLET = 3,
|
||||
mMl_TYPE_4 = 4,
|
||||
mMl_TYPE_5 = 5,
|
||||
mMl_TYPE_HRA = 6,
|
||||
mMl_TYPE_MAIL,
|
||||
mMl_TYPE_XMAS,
|
||||
mMl_TYPE_SHOP_SALE_LEAFLET,
|
||||
mMl_TYPE_BROKER_SALE_LEAFLET,
|
||||
mMl_TYPE_MOTHER,
|
||||
mMl_TYPE_OMIKUJI,
|
||||
mMl_TYPE_HRA,
|
||||
mMl_TYPE_SHOP,
|
||||
mMl_TYPE_SNOWMAN,
|
||||
mMl_TYPE_FISHING_CONTENST,
|
||||
mMl_TYPE_POSTOFFICE,
|
||||
mMl_TYPE_SPNPC_PASSWORD,
|
||||
|
||||
mMl_TYPE_FISHING_CONTENST = 9,
|
||||
|
||||
mMl_TYPE_SPNPC_PASSWORD = 11,
|
||||
mMl_TYPE_12 = 12
|
||||
mMl_TYPE_NUM
|
||||
};
|
||||
|
||||
/* sizeof(Mail_nm_c) == 0x16 */
|
||||
typedef struct mail_nm_s {
|
||||
/* 0x00 */ PersonalID_c personalID;
|
||||
/* 0x14 */ u8 type;
|
||||
/* 0x00 */ PersonalID_c personalID;
|
||||
/* 0x14 */ u8 type;
|
||||
} Mail_nm_c;
|
||||
|
||||
/* sizeof(mail_header_save_s) == 0x3A */
|
||||
typedef struct mail_header_save_s {
|
||||
/* 0x00 */ s8 header_back_start;
|
||||
/* 0x01 */ u8 unknown;
|
||||
/* 0x02 */ u8 header[MAIL_HEADER_LEN];
|
||||
/* 0x1A */ u8 footer[MAIL_FOOTER_LEN];
|
||||
/* 0x00 */ s8 header_back_start;
|
||||
/* 0x01 */ u8 unknown;
|
||||
/* 0x02 */ u8 header[MAIL_HEADER_LEN];
|
||||
/* 0x1A */ u8 footer[MAIL_FOOTER_LEN];
|
||||
} Mail_hs_c;
|
||||
|
||||
/* sizeof(Mail_hdr_c) == 0x2C */
|
||||
typedef struct mail_header_s {
|
||||
/* 0x00 */ Mail_nm_c recipient;
|
||||
/* 0x16 */ Mail_nm_c sender;
|
||||
/* 0x00 */ Mail_nm_c recipient;
|
||||
/* 0x16 */ Mail_nm_c sender;
|
||||
} Mail_hdr_c;
|
||||
|
||||
/* sizeof(Mail_ct_c) == 0xFC */
|
||||
typedef struct mail_content_s {
|
||||
/* 0x00 */ u8 font;
|
||||
/* 0x01 */ u8 header_back_start;
|
||||
/* 0x02 */ u8 mail_type;
|
||||
/* 0x03 */ u8 paper_type;
|
||||
/* 0x04 */ u8 header[MAIL_HEADER_LEN];
|
||||
/* 0x1C */ u8 body[MAIL_BODY_LEN];
|
||||
/* 0xDC */ u8 footer[MAIL_FOOTER_LEN];
|
||||
/* 0x00 */ u8 font;
|
||||
/* 0x01 */ u8 header_back_start;
|
||||
/* 0x02 */ u8 mail_type;
|
||||
/* 0x03 */ u8 paper_type;
|
||||
/* 0x04 */ u8 header[MAIL_HEADER_LEN];
|
||||
/* 0x1C */ u8 body[MAIL_BODY_LEN];
|
||||
/* 0xDC */ u8 footer[MAIL_FOOTER_LEN];
|
||||
} Mail_ct_c;
|
||||
|
||||
/* sizeof(Mail_c) == 0x12A */
|
||||
typedef struct mail_s {
|
||||
/* 0x000 */ Mail_hdr_c header;
|
||||
/* 0x02C */ mActor_name_t present;
|
||||
/* 0x02E */ Mail_ct_c content;
|
||||
/* 0x000 */ Mail_hdr_c header;
|
||||
/* 0x02C */ mActor_name_t present;
|
||||
/* 0x02E */ Mail_ct_c content;
|
||||
} Mail_c;
|
||||
|
||||
extern int mMl_strlen(u8* str, int size, u8 end_char);
|
||||
@@ -119,9 +121,12 @@ extern int mMl_get_npcinfo_from_mail_name(AnmPersonalID_c* anm_pid, Mail_nm_c* n
|
||||
extern int mMl_hunt_for_send_address(Mail_c* mail);
|
||||
extern int mMl_check_send_mail(Mail_c* mail);
|
||||
extern int mMl_check_set_present_myself(Mail_c* mail);
|
||||
extern int mMl_send_mail_box(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type);
|
||||
extern int mMl_send_mail_postoffice(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type);
|
||||
extern int mMl_send_mail(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type);
|
||||
extern int mMl_send_mail_box(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present,
|
||||
mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type);
|
||||
extern int mMl_send_mail_postoffice(PersonalID_c* recipient_pid, int player_no, mActor_name_t present,
|
||||
mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type);
|
||||
extern int mMl_send_mail(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper,
|
||||
int mail_no, u8* sender_name, u32 proc_type);
|
||||
extern void mMl_start_send_mail();
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -2,11 +2,27 @@
|
||||
#define M_MAILBOX_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_mailbox_ovl_h.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define mMB_MAIL_COUNT HOME_MAILBOX_SIZE
|
||||
|
||||
typedef int (*mMB_GET_LAST_MAIL_IDX_PROC)(void);
|
||||
|
||||
struct mailbox_ovl_s {
|
||||
u8 open_flag;
|
||||
u8 _01;
|
||||
u8 display_flag;
|
||||
u8 _03;
|
||||
int _04;
|
||||
u16 mark_bitfield;
|
||||
int mark_flag;
|
||||
mMB_GET_LAST_MAIL_IDX_PROC get_last_mail_idx_proc;
|
||||
};
|
||||
|
||||
extern void mMB_mailbox_ovl_construct(Submenu* submenu);
|
||||
extern void mMB_mailbox_ovl_destruct(Submenu* submenu);
|
||||
extern void mMB_mailbox_ovl_set_proc(Submenu* submenu);
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct mailbox_ovl_s mMB_Ovl_c;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -9,7 +9,12 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct music_ovl_s;
|
||||
struct music_ovl_s {
|
||||
u8 title[mIN_ITEM_NAME_LEN];
|
||||
s16 title_width;
|
||||
mActor_name_t title_md_item;
|
||||
u32 mark_flg[2];
|
||||
};
|
||||
|
||||
extern void mMU_music_ovl_set_proc(Submenu* submenu);
|
||||
extern void mMU_music_ovl_construct(Submenu* submenu);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct music_ovl_s mMU_Overlay_c;
|
||||
typedef struct music_ovl_s mMU_Ovl_c;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -207,6 +207,11 @@ extern int mNT_check_unknown(mActor_name_t item_no);
|
||||
#define NPC_HOUSE_ID_TO_NPC_ID(house) (house + 0x9000)
|
||||
#define NPC_ID_TO_NPC_HOUSE_ID(npc) (npc - 0x9000)
|
||||
|
||||
#define TICKET_MONTH(n) (1 + (((n) >> 3) & 0xF))
|
||||
#define TICKET_COUNT(n) (1 + ((n) & 7))
|
||||
#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_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)
|
||||
@@ -526,6 +531,15 @@ extern int mNT_check_unknown(mActor_name_t item_no);
|
||||
|
||||
#define ITEM_IS_SIGNBOARD(item) ((item) >= SIGNBOARD_START && (item) <= SIGNBOARD_END)
|
||||
|
||||
#define ITEM_IS_FLOWER_BAG(item) ((item) >= ITM_WHITE_PANSY_BAG && (item) <= ITM_YELLOW_TULIP_BAG)
|
||||
#define ITEM_IS_EXERCISE_CARD(item) ((item) >= ITM_EXCERCISE_CARD00 && (item) <= ITM_EXCERCISE_CARD12)
|
||||
#define ITEM_IS_BALLOON(item) ((item) >= ITM_BALLOON_START && (item) <= ITM_BUNNY_O_BALLOON)
|
||||
#define ITEM_IS_UMBRELLA(item) ((item) >= ITM_UMBRELLA_START && (item) <= ITM_UMBRELLA_END)
|
||||
#define ITEM_IS_UMBRELLA2(item) ((item) >= ITM_UMBRELLA_START && (item) <= ITM_MY_ORG_UMBRELLA7)
|
||||
#define ITEM_IS_MYUMBRELLA_TOOL(item) ((item) >= ITM_MY_ORG_UMBRELLA0 && (item) <= ITM_MY_ORG_UMBRELLA7)
|
||||
#define ITEM_IS_SCOOP(item) ((item) >= ITM_SHOVEL && (item) <= ITM_SHOVEL)
|
||||
#define ITEM_IS_GOLD_SCOOP(item) ((item) >= ITM_GOLDEN_SHOVEL && (item) <= ITM_GOLDEN_SHOVEL)
|
||||
|
||||
#define BG_CATEGORY 0
|
||||
#define ENV_CATEGORY 8
|
||||
|
||||
|
||||
@@ -42,6 +42,13 @@ enum {
|
||||
mNW_PALETTE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mNW_TYPE_MANEKIN,
|
||||
mNW_TYPE_UMBRELLA,
|
||||
|
||||
mNW_TYPE_NUM
|
||||
};
|
||||
|
||||
typedef struct original_texture_s {
|
||||
u8 data[mNW_DESIGN_TEX_SIZE];
|
||||
} ATTRIBUTE_ALIGN(32) mNW_original_tex_c;
|
||||
|
||||
@@ -3,15 +3,27 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "m_submenu.h"
|
||||
#include "m_needlework_ovl_h.h"
|
||||
#include "m_needlework.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct needlework_ovl_s {
|
||||
u16 mark_flg;
|
||||
u16 hide_flg;
|
||||
mNW_original_design_c my_org[mPr_ORIGINAL_DESIGN_COUNT];
|
||||
u8 my_org_no_table[mPr_ORIGINAL_DESIGN_COUNT];
|
||||
};
|
||||
|
||||
extern u8 mNW_get_image_no(Submenu* submenu, int slot_no);
|
||||
extern u8* mNW_get_image_name(Submenu* submenu, int idx);
|
||||
extern int mNW_check_hide_flg(Submenu* submenu, int idx);
|
||||
extern int mNW_check_mark_flg(Submenu* submenu, int idx);
|
||||
extern void mNW_on_hide_flg(Submenu* submenu, int idx);
|
||||
extern void mNW_clear_hide_flg(Submenu* submenu);
|
||||
extern void mNW_clear_mark_flg(Submenu* submenu);
|
||||
extern void mNW_draw_original(Submenu* submenu, GRAPH* graph, f32 pos_x, f32 pos_y, f32 scale, int idx, int color_flag);
|
||||
|
||||
extern void mNW_needlework_ovl_construct(Submenu* submenu);
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef M_NEEDLEWORK_OVL_H_H
|
||||
#define M_NEEDLEWORK_OVL_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct needlework_ovl_s mNW_Ovl_c;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+6
-6
@@ -291,14 +291,14 @@ extern int mPr_GetPossessionItemIdxItem1CategoryWithCond_cancel(Private_c* priv,
|
||||
mActor_name_t cancel_item);
|
||||
extern int mPr_GetPossessionItemIdxKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end,
|
||||
u32 cond);
|
||||
extern int mPr_GetPossessionItemSum(Private_c* priv, mActor_name_t item);
|
||||
extern int mPr_GetPossessionItemSumWithCond(Private_c* priv, mActor_name_t item, u32 cond);
|
||||
extern int mPr_GetPossessionItemSumFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond,
|
||||
extern u32 mPr_GetPossessionItemSum(Private_c* priv, mActor_name_t item);
|
||||
extern u32 mPr_GetPossessionItemSumWithCond(Private_c* priv, mActor_name_t item, u32 cond);
|
||||
extern u32 mPr_GetPossessionItemSumFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond,
|
||||
mActor_name_t cancel_item);
|
||||
extern int mPr_GetPossessionItemSumItemCategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond,
|
||||
extern u32 mPr_GetPossessionItemSumItemCategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond,
|
||||
mActor_name_t cancel_item);
|
||||
extern int mPr_GetPossessionItemSumItemCategoryWithCond(Private_c* priv, u8 item1_type, u32 cond);
|
||||
extern int mPr_GetPossessionItemSumKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end,
|
||||
extern u32 mPr_GetPossessionItemSumItemCategoryWithCond(Private_c* priv, u8 item1_type, u32 cond);
|
||||
extern u32 mPr_GetPossessionItemSumKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end,
|
||||
u32 cond);
|
||||
extern void mPr_SetItemCollectBit(mActor_name_t item);
|
||||
extern mActor_name_t mPr_DummyPresentToTruePresent();
|
||||
|
||||
@@ -212,6 +212,7 @@ typedef struct shop_s {
|
||||
/* 0x13C */ int visitor_flag; /* set when a foreign player enters Nook's shop, required for Nookington's */
|
||||
} Shop_c;
|
||||
|
||||
#define mSP_GC_FAMICOM_TABLE_CNT 8 // update this if the # of items in mSP_gc_famicom_table is changed
|
||||
extern mActor_name_t mSP_gc_famicom_table[];
|
||||
|
||||
extern int mSP_CollectCheck(mActor_name_t item);
|
||||
|
||||
+1
-1
@@ -105,7 +105,7 @@ enum {
|
||||
mSM_IV_OPEN_EXCHANGE,
|
||||
mSM_IV_OPEN_CPMAIL,
|
||||
mSM_IV_OPEN_CURATOR,
|
||||
mSM_IV_OPEN_16,
|
||||
mSM_IV_OPEN_PASSWORD,
|
||||
|
||||
mSM_IV_OPEN_NUM
|
||||
};
|
||||
|
||||
+11
-6
@@ -29,6 +29,11 @@
|
||||
#include "m_hand_ovl_h.h"
|
||||
#include "m_inventory_ovl_h.h"
|
||||
#include "m_player.h"
|
||||
#include "m_cpmail_ovl_h.h"
|
||||
#include "m_cporiginal_ovl_h.h"
|
||||
#include "m_haniwa_ovl_h.h"
|
||||
#include "m_mailbox_ovl_h.h"
|
||||
#include "m_needlework_ovl_h.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -173,8 +178,8 @@ struct submenu_overlay_s {
|
||||
/* 0x98C */ mED_Ovl_c* editor_ovl;
|
||||
/* 0x990 */ mBD_Ovl_c* board_ovl;
|
||||
/* 0x994 */ mAD_Ovl_c* address_ovl;
|
||||
/* 0x998 */ void* _998;
|
||||
/* 0x99C */ void* _99C;
|
||||
/* 0x998 */ mMB_Ovl_c* mailbox_ovl;
|
||||
/* 0x99C */ mHW_Ovl_c* haniwa_ovl;
|
||||
/* 0x9A0 */ mTI_Ovl_c* timeIn_ovl;
|
||||
/* 0x9A4 */ mEE_Ovl_c* editEndChk_ovl;
|
||||
/* 0x9A8 */ mWR_Ovl_c* warning_ovl;
|
||||
@@ -183,14 +188,14 @@ struct submenu_overlay_s {
|
||||
/* 0x9B4 */ mMP_Overlay_c* map_ovl;
|
||||
/* 0x9B8 */ mNT_Ovl_c* notice_ovl;
|
||||
/* 0x9BC */ mBR_Ovl_c* birthday_ovl;
|
||||
/* 0x9C0 */ void* _9C0;
|
||||
/* 0x9C0 */ mCM_Ovl_c* cpmail_ovl;
|
||||
/* 0x9C4 */ void* _9C4;
|
||||
/* 0x9C8 */ void* _9C8;
|
||||
/* 0x9CC */ mCL_Ovl_c* catalog_ovl;
|
||||
/* 0x9D0 */ mMU_Overlay_c* music_ovl;
|
||||
/* 0x9D0 */ mMU_Ovl_c* music_ovl;
|
||||
/* 0x9D4 */ mBN_Overlay_c* bank_ovl;
|
||||
/* 0x9D8 */ void* _9D8;
|
||||
/* 0x9DC */ void* _9DC;
|
||||
/* 0x9D8 */ mNW_Ovl_c* needlework_ovl;
|
||||
/* 0x9DC */ mCO_Ovl_c* cporiginal_ovl;
|
||||
/* 0x9E0 */ void* _9E0;
|
||||
/* 0x9E4 */ void* _9E4;
|
||||
/* 0x9E8 */ mDI_Ovl_c* diary_ovl;
|
||||
|
||||
+141
-13
@@ -10,6 +10,57 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#define mTG_TAG_NUM 4
|
||||
#define mTG_TAG_STR_LEN 16
|
||||
#define mTG_TAG_SEL_STRING_LEN 35
|
||||
|
||||
#define mTG_TAG_FLAG_EDGE_FOOT_SELECT (1 << 0)
|
||||
|
||||
#define mTG_MAIL_FLAG_PRESENT (1 << 0)
|
||||
#define mTG_MAIL_FLAG_RECV (1 << 1)
|
||||
|
||||
enum {
|
||||
mTG_MARK_CHK,
|
||||
mTG_MARK_ON,
|
||||
mTG_MARK_OFF,
|
||||
mTG_MARK_RVS,
|
||||
mTG_MARK_CLR,
|
||||
mTG_MARK_CHK_ALL0,
|
||||
|
||||
mTG_MARK_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mTG_MARK_TYPE_NONE,
|
||||
mTG_MARK_TYPE_INV_FG_ITEM,
|
||||
mTG_MARK_TYPE_INV_PLAYERROOM_ITEM,
|
||||
mTG_MARK_TYPE_INV_OTHERROOM_ITEM,
|
||||
mTG_MARK_TYPE_INV_SELL_ITEM,
|
||||
mTG_MARK_TYPE_INV_FG_MAIL,
|
||||
mTG_MARK_TYPE_INV_MAILBOX,
|
||||
mTG_MARK_TYPE_CPMAIL_MAIL,
|
||||
mTG_MARK_TYPE_MAILBOX,
|
||||
mTG_MARK_TYPE_CPMAIL_CPMAIL,
|
||||
mTG_MARK_TYPE_MUSIC,
|
||||
mTG_MARK_TYPE_NEEDLEWORK_ORIGINAL,
|
||||
mTG_MARK_TYPE_CPORIGINAL_ORIGINAL,
|
||||
|
||||
mTG_MARK_TYPE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mTG_CHANGE_ORIGINAL_MARK_NONE,
|
||||
mTG_CHANGE_ORIGINAL_MARK_DECIDE,
|
||||
mTG_CHANGE_ORIGINAL_MARK_MOVE,
|
||||
|
||||
mTG_CHANGE_ORIGINAL_MARK_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mTG_CHANGE_MAIL_MARK_DECIDE,
|
||||
mTG_CHANGE_MAIL_MARK_MOVE,
|
||||
|
||||
mTG_CHANGE_MAIL_MARK_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mTG_TYPE_NONE,
|
||||
@@ -121,24 +172,53 @@ enum {
|
||||
mTG_TABLE_GBA,
|
||||
mTG_TABLE_GBA_NW,
|
||||
mTG_TABLE_CARD,
|
||||
mTG_TABLE_GBA_NW2,
|
||||
mTG_TABLE_CARD_NW,
|
||||
|
||||
mTG_TABLE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mTG_WIN_ITEM,
|
||||
mTG_WIN_QITEM,
|
||||
mTG_WIN_SELECT,
|
||||
|
||||
mTG_WIN_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
mTG_STR0,
|
||||
mTG_STR1,
|
||||
mTG_STR2,
|
||||
|
||||
mTG_STR_NUM
|
||||
};
|
||||
|
||||
#define mTG_RETURN_CLOSE 0
|
||||
#define mTG_RETURN_KEEP 1
|
||||
|
||||
#define mTG_MARK_IDX_UNSET 0x7FFF
|
||||
|
||||
/* sizeof(mTG_tag_c) == 0xB4 */
|
||||
typedef struct tag_s {
|
||||
u8 type;
|
||||
u8 _01;
|
||||
u8 _02;
|
||||
u8 _03;
|
||||
u8 arrow_dir;
|
||||
u8 str2_type;
|
||||
u8 flags;
|
||||
f32 _04[2];
|
||||
f32 pos[2];
|
||||
u8 _14[0x38 - 0x14];
|
||||
f32 base_pos[2];
|
||||
f32 body_scale[2];
|
||||
f32 arrow_scale[2];
|
||||
f32 body_ofs[2];
|
||||
f32 text_ofs[2];
|
||||
f32 _34;
|
||||
int table;
|
||||
int _3C;
|
||||
int _40;
|
||||
u8 _44[0xB4 - 0x44];
|
||||
int tag_col;
|
||||
int tag_row;
|
||||
f32 scale;
|
||||
u8 str0[mTG_TAG_SEL_STRING_LEN];
|
||||
u8 str1[mTG_TAG_SEL_STRING_LEN];
|
||||
u8 str2[mTG_TAG_SEL_STRING_LEN];
|
||||
u8 _B1[0xB4 - 0xB1];
|
||||
} mTG_tag_c;
|
||||
|
||||
typedef void (*mTG_INIT_TAG_DATA_ITEM_WIN_PROC)(Submenu*);
|
||||
@@ -148,7 +228,49 @@ typedef void (*mTG_EXCHANGE_PROC)(Submenu*, mSM_MenuInfo_c*);
|
||||
typedef Mail_c* (*mTG_GET_MAIL_POINTER_PROC)(Submenu*, mHD_Ovl_c*);
|
||||
typedef int (*mTG_GET_TABLE_IDX_PROC)(mTG_tag_c*);
|
||||
|
||||
/* TODO */
|
||||
typedef struct tag_cpmail_mark_pos_s {
|
||||
Mail_c* _00;
|
||||
f32 pos[2];
|
||||
} mTG_cpmail_mark_pos_c;
|
||||
|
||||
typedef struct tag_cpmail_mark_s {
|
||||
Mail_c* _00[4];
|
||||
Mail_c* mail_tbl[4];
|
||||
f32 _20[2][2];
|
||||
f32 _30[2][2];
|
||||
s16 idx_tbl[4];
|
||||
s16 mode;
|
||||
s16 _4A;
|
||||
} mTG_cpmail_mark_c;
|
||||
|
||||
enum {
|
||||
mTG_ORG_TYPE_NW,
|
||||
mTG_ORG_TYPE_CO,
|
||||
|
||||
mTG_ORG_TYPE_NUM
|
||||
};
|
||||
|
||||
typedef struct tag_cporiginal_mark_s {
|
||||
f32 _00[mTG_ORG_TYPE_NUM][2];
|
||||
f32 _10[mTG_ORG_TYPE_NUM][2];
|
||||
s16 idx[mTG_ORG_TYPE_NUM];
|
||||
} mTG_cporiginal_mark_c;
|
||||
|
||||
typedef struct tag_cporiginal_mark_entry_s {
|
||||
mActor_name_t item;
|
||||
float pos[2];
|
||||
} mTG_cporiginal_mark_entry_c;
|
||||
|
||||
/* sizeof(mTG_mark_original_c) == 0x34 */
|
||||
typedef struct tag_mark_original_s {
|
||||
/* 0x00 */ mTG_cporiginal_mark_c mark[1];
|
||||
/* 0x24 */ f32 move_percent;
|
||||
/* 0x28 */ u16 mark_flg[mTG_ORG_TYPE_NUM];
|
||||
/* 0x2C */ s16 mark_max[mTG_ORG_TYPE_NUM];
|
||||
/* 0x30 */ s16 mark_mode;
|
||||
} mTG_mark_original_c;
|
||||
|
||||
/* sizeof(mTG_Ovl_c) == 0x3C4 */
|
||||
struct tag_ovl_s {
|
||||
/* 0x000 */ int sel_tag_idx;
|
||||
/* 0x004 */ int ret_tag_idx;
|
||||
@@ -160,11 +282,17 @@ struct tag_ovl_s {
|
||||
/* 0x2E8 */ mTG_GET_MAIL_POINTER_PROC get_mail_pointer_proc;
|
||||
/* 0x2EC */ mTG_GET_TABLE_IDX_PROC get_table_idx_proc;
|
||||
/* 0x2F0 */ s16 item_name_wait_time;
|
||||
/* 0x2F2 */ u8 _2F2[0x3C4 - 0x2F2];
|
||||
/* 0x2F4 */ mTG_cpmail_mark_pos_c _2F4[4];
|
||||
/* 0x324 */ mTG_cpmail_mark_c cpmail_mark[1];
|
||||
/* 0x370 */ f32 _370;
|
||||
/* 0x374 */ u16 nw_gba_flags;
|
||||
/* 0x376 */ u16 _02;
|
||||
/* 0x378 */ mTG_cporiginal_mark_entry_c original_entries[mTG_ORG_TYPE_NUM];
|
||||
/* 0x390 */ mTG_mark_original_c original_mark;
|
||||
};
|
||||
|
||||
extern int mTG_mark_main(Submenu*, mSM_MenuInfo_c*, int, int);
|
||||
extern int mTG_mark_mainX(Submenu*, mSM_MenuInfo_c*, int, int, int, int);
|
||||
extern int mTG_mark_main(Submenu*, mSM_MenuInfo_c*, int, int*);
|
||||
extern int mTG_mark_mainX(Submenu*, mSM_MenuInfo_c*, int, int, int, int*);
|
||||
|
||||
extern void mTG_tag_ovl_construct(Submenu* submenu);
|
||||
extern void mTG_tag_ovl_destruct(Submenu* submenu);
|
||||
|
||||
@@ -31,7 +31,7 @@ enum {
|
||||
mWR_WARNING_5,
|
||||
mWR_WARNING_6,
|
||||
mWR_WARNING_7,
|
||||
mWR_WARNING_8,
|
||||
mWR_WARNING_SELL_QUEST_ITEM,
|
||||
mWR_WARNING_PUT_MAX_FURNITURE,
|
||||
mWR_WARNING_PUT_FURNITURE,
|
||||
mWR_WARNING_PUT_ITEM,
|
||||
|
||||
Reference in New Issue
Block a user