mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-22 22:24:16 -04:00
Implement & link ac_ev_ghost
This commit is contained in:
@@ -578,6 +578,11 @@ ac_ev_castaway.c:
|
||||
ac_ev_dokutu.c:
|
||||
.text: [0x8051DFF4, 0x8051E228]
|
||||
.data: [0x806A05C8, 0x806A0608]
|
||||
ac_ev_ghost.c:
|
||||
.text: [0x8051F10C, 0x80520D78]
|
||||
.rodata: [0x806491E8, 0x80649228]
|
||||
.data: [0x806A06A0, 0x806A0938]
|
||||
.bss: [0x81301820, 0x81301830]
|
||||
ac_ev_gypsy.c:
|
||||
.text: [0x80520D78, 0x80521414]
|
||||
.rodata: [0x80649228, 0x80649238]
|
||||
|
||||
+43
-2
@@ -9,11 +9,44 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define aEGH_MINIMUM_GRASS_COUNT 8
|
||||
|
||||
#define aEGH_BIT_FOUND_GHOST 1
|
||||
|
||||
enum {
|
||||
aEGH_ITEM_LIST_FTR_A,
|
||||
aEGH_ITEM_LIST_FTR_B,
|
||||
aEGH_ITEM_LIST_FTR_C,
|
||||
aEGH_ITEM_LIST_FTR_EVENT,
|
||||
aEGH_ITEM_LIST_FTR_LOTTERY,
|
||||
aEGH_ITEM_LIST_CARPET_A,
|
||||
aEGH_ITEM_LIST_CARPET_B,
|
||||
aEGH_ITEM_LIST_CARPET_C,
|
||||
aEGH_ITEM_LIST_CARPET_EVENT,
|
||||
aEGH_ITEM_LIST_WALL_A,
|
||||
aEGH_ITEM_LIST_WALL_B,
|
||||
aEGH_ITEM_LIST_WALL_C,
|
||||
aEGH_ITEM_LIST_WALL_EVENT,
|
||||
aEGH_ITEM_LIST_CLOTH_A,
|
||||
aEGH_ITEM_LIST_CLOTH_B,
|
||||
aEGH_ITEM_LIST_CLOTH_C,
|
||||
aEGH_ITEM_LIST_CLOTH_EVENT,
|
||||
aEGH_ITEM_LIST_BINSEN_A,
|
||||
aEGH_ITEM_LIST_BINSEN_B,
|
||||
aEGH_ITEM_LIST_BINSEN_C,
|
||||
aEGH_ITEM_LIST_HANIWA,
|
||||
aEGH_ITEM_LIST_UMBRELLA,
|
||||
|
||||
aEGH_ITEM_LIST_NUM
|
||||
};
|
||||
|
||||
typedef struct ev_ghost_s EV_GHOST_ACTOR;
|
||||
|
||||
typedef void (*aEGH_PROC)(EV_GHOST_ACTOR*, GAME_PLAY*);
|
||||
|
||||
struct ev_ghost_s {
|
||||
/* 0x000 */ NPC_ACTOR npc_class;
|
||||
/* 0x994 */ void* think_proc;
|
||||
/* 0x994 */ aEGH_PROC think_proc;
|
||||
/* 0x998 */ int msg_no;
|
||||
/* 0x99C */ mActor_name_t give_item;
|
||||
/* 0x99E */ s16 bye_bye_angle;
|
||||
@@ -21,7 +54,15 @@ struct ev_ghost_s {
|
||||
/* 0x9A1 */ u8 bye_bye_scale_timer;
|
||||
/* 0x9A2 */ u8 bye_bye_transparency_delay_timer;
|
||||
/* 0x9A3 */ u8 think_act;
|
||||
/* 0x9A4 */
|
||||
/* 0x9A4 */ u8 after_talk_think_act;
|
||||
/* 0x9A5 */ u8 _9A5;
|
||||
/* 0x9A6 */ u8 talk_act;
|
||||
/* 0x9A7 */ u8 _9A7;
|
||||
/* 0x9A8 */ u8 melody_inst;
|
||||
/* 0x9A9 */ u8 alpha;
|
||||
/* 0x9AA */ u8 _9AA;
|
||||
/* 0x9AB */ u8 roof_pal;
|
||||
/* 0x9AC */ u8 _9AC;
|
||||
};
|
||||
|
||||
extern ACTOR_PROFILE Ev_Ghost_Profile;
|
||||
|
||||
+17
-2
@@ -95,6 +95,7 @@ typedef void (*aNPC_DRAW_PROC)(ACTOR*, GAME*);
|
||||
|
||||
typedef void (*aNPC_REBUILD_DMA_PROC)();
|
||||
typedef void (*aNPC_ANIMATION_INIT_PROC)(ACTOR*, int, int);
|
||||
typedef void (*aNPC_CHG_SCHEDULE_PROC)(NPC_ACTOR*, GAME_PLAY*, u8);
|
||||
typedef int (*aNPC_CLIP_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int, int);
|
||||
|
||||
typedef int (*aNPC_FORCE_CALL_REQ_PROC)(NPC_ACTOR*, int);
|
||||
@@ -122,7 +123,7 @@ struct ac_npc_clip_s {
|
||||
/* 0x0F8 */ aNPC_REBUILD_DMA_PROC rebuild_dma_proc;
|
||||
/* 0x0FC */ void* _0FC[(0x114 - 0x0FC) / sizeof(void*)];
|
||||
/* 0x114 */ aNPC_ANIMATION_INIT_PROC animation_init_proc;
|
||||
/* 0x118 */ void* _118;
|
||||
/* 0x118 */ aNPC_CHG_SCHEDULE_PROC chg_schedule_proc;
|
||||
/* 0x11C */ void* _11C;
|
||||
/* 0x120 */ aNPC_CLIP_THINK_PROC think_proc;
|
||||
/* 0x124 */ aNPC_FORCE_CALL_REQ_PROC force_call_req_proc;
|
||||
@@ -166,7 +167,9 @@ typedef struct npc_draw_info_s {
|
||||
/* 0x5BC */ u8 _5BC;
|
||||
/* 0x5BD */ u8 _5BD;
|
||||
/* 0x5BE */ u8 _5BE;
|
||||
/* 0x5BE */ u8 _5BF[0x630 - 0x5BF];
|
||||
/* 0x5BE */ u8 _5BF[0x5D0 - 0x5BF];
|
||||
/* 0x5D0 */ f32 animation_speed;
|
||||
/* 0x5D4 */ u8 _5D4[0x630 - 0x5D4];
|
||||
} aNPC_draw_info_c;
|
||||
|
||||
typedef void (*aNPC_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int);
|
||||
@@ -388,6 +391,18 @@ typedef struct npc_accessory_s {
|
||||
typedef void (*aNPC_PROC)(NPC_ACTOR* npc_actorx, GAME_PLAY* play, int schedule_idx);
|
||||
typedef void (*aNPC_SUB_PROC)(NPC_ACTOR* npc_actorx, GAME_PLAY* play);
|
||||
|
||||
enum {
|
||||
aNPC_SCHEDULE_TYPE_FIELD,
|
||||
aNPC_SCHEDULE_TYPE_IN_HOUSE,
|
||||
aNPC_SCHEDULE_TYPE_SLEEP,
|
||||
aNPC_SCHEDULE_TYPE_STAND,
|
||||
aNPC_SCHEDULE_TYPE_WANDER,
|
||||
aNPC_SCHEDULE_TYPE_WALK_WANDER,
|
||||
aNPC_SCHEDULE_TYPE_SPECIAL,
|
||||
|
||||
aNPC_SCHEDULE_TYPE_NUM
|
||||
};
|
||||
|
||||
struct npc_actor_s {
|
||||
ACTOR actor_class;
|
||||
s_xyz _174;
|
||||
|
||||
+1
-1
@@ -372,7 +372,7 @@ typedef struct ghost_common_s {
|
||||
} mEv_gst_common_c;
|
||||
|
||||
typedef struct ghost_event_s {
|
||||
u16 violent_person_str_no;
|
||||
u16 okoruhito_str_no;
|
||||
u16 flags;
|
||||
lbRTC_ymd_c renew_time;
|
||||
} mEv_gst_c;
|
||||
|
||||
@@ -331,6 +331,13 @@ extern int mMsg_CopyAmPm(mMsg_Window_c* msg_p, u8* data, int start_idx, int len)
|
||||
extern int mMsg_CopyRamdomNumber2(u8* data, int start_idx, int len);
|
||||
extern int mMsg_CopyItem(mMsg_Window_c* msg_p, int str_no, u8* data, int start_idx, int len, int article, u32 capitalize);
|
||||
extern int mMsg_CopyMail(mMsg_Window_c* msg_p, int str_no, u8* data, int start_idx, int len, u32 capitalize);
|
||||
extern int mMsg_sound_voice_get(int code);
|
||||
extern int mMsg_sound_voice_get_for_editor(int code);
|
||||
extern void mMsg_sound_spec_change_voice_force(mMsg_Window_c* msg_p);
|
||||
extern int mMsg_sound_spec_change_voice(mMsg_Window_c* msg_p);
|
||||
extern void mMsg_sound_set_voice_click(mMsg_Window_c* msg_p);
|
||||
extern void mMsg_sound_set_voice_silent(mMsg_Window_c* msg_p, int update_mode);
|
||||
extern void mMsg_sound_unset_voice_silent(mMsg_Window_c* msg_p, int update_mode);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
+549
-14
@@ -569,8 +569,515 @@ extern int mNT_check_unknown(mActor_name_t item_no);
|
||||
#define FTR_DRACAENA_WEST 0x13B3
|
||||
|
||||
#define HANIWA_START 0x15B0
|
||||
//
|
||||
#define HANIWA_END 0x17AB
|
||||
#define FTR_HANIWA000_SOUTH (HANIWA_START + 0)
|
||||
#define FTR_HANIWA000_EAST (HANIWA_START + 1)
|
||||
#define FTR_HANIWA000_NORTH (HANIWA_START + 2)
|
||||
#define FTR_HANIWA000_WEST (HANIWA_START + 3)
|
||||
#define FTR_HANIWA001_SOUTH (HANIWA_START + 4)
|
||||
#define FTR_HANIWA001_EAST (HANIWA_START + 5)
|
||||
#define FTR_HANIWA001_NORTH (HANIWA_START + 6)
|
||||
#define FTR_HANIWA001_WEST (HANIWA_START + 7)
|
||||
#define FTR_HANIWA002_SOUTH (HANIWA_START + 8)
|
||||
#define FTR_HANIWA002_EAST (HANIWA_START + 9)
|
||||
#define FTR_HANIWA002_NORTH (HANIWA_START + 10)
|
||||
#define FTR_HANIWA002_WEST (HANIWA_START + 11)
|
||||
#define FTR_HANIWA003_SOUTH (HANIWA_START + 12)
|
||||
#define FTR_HANIWA003_EAST (HANIWA_START + 13)
|
||||
#define FTR_HANIWA003_NORTH (HANIWA_START + 14)
|
||||
#define FTR_HANIWA003_WEST (HANIWA_START + 15)
|
||||
#define FTR_HANIWA004_SOUTH (HANIWA_START + 16)
|
||||
#define FTR_HANIWA004_EAST (HANIWA_START + 17)
|
||||
#define FTR_HANIWA004_NORTH (HANIWA_START + 18)
|
||||
#define FTR_HANIWA004_WEST (HANIWA_START + 19)
|
||||
#define FTR_HANIWA005_SOUTH (HANIWA_START + 20)
|
||||
#define FTR_HANIWA005_EAST (HANIWA_START + 21)
|
||||
#define FTR_HANIWA005_NORTH (HANIWA_START + 22)
|
||||
#define FTR_HANIWA005_WEST (HANIWA_START + 23)
|
||||
#define FTR_HANIWA006_SOUTH (HANIWA_START + 24)
|
||||
#define FTR_HANIWA006_EAST (HANIWA_START + 25)
|
||||
#define FTR_HANIWA006_NORTH (HANIWA_START + 26)
|
||||
#define FTR_HANIWA006_WEST (HANIWA_START + 27)
|
||||
#define FTR_HANIWA007_SOUTH (HANIWA_START + 28)
|
||||
#define FTR_HANIWA007_EAST (HANIWA_START + 29)
|
||||
#define FTR_HANIWA007_NORTH (HANIWA_START + 30)
|
||||
#define FTR_HANIWA007_WEST (HANIWA_START + 31)
|
||||
#define FTR_HANIWA008_SOUTH (HANIWA_START + 32)
|
||||
#define FTR_HANIWA008_EAST (HANIWA_START + 33)
|
||||
#define FTR_HANIWA008_NORTH (HANIWA_START + 34)
|
||||
#define FTR_HANIWA008_WEST (HANIWA_START + 35)
|
||||
#define FTR_HANIWA009_SOUTH (HANIWA_START + 36)
|
||||
#define FTR_HANIWA009_EAST (HANIWA_START + 37)
|
||||
#define FTR_HANIWA009_NORTH (HANIWA_START + 38)
|
||||
#define FTR_HANIWA009_WEST (HANIWA_START + 39)
|
||||
#define FTR_HANIWA010_SOUTH (HANIWA_START + 40)
|
||||
#define FTR_HANIWA010_EAST (HANIWA_START + 41)
|
||||
#define FTR_HANIWA010_NORTH (HANIWA_START + 42)
|
||||
#define FTR_HANIWA010_WEST (HANIWA_START + 43)
|
||||
#define FTR_HANIWA011_SOUTH (HANIWA_START + 44)
|
||||
#define FTR_HANIWA011_EAST (HANIWA_START + 45)
|
||||
#define FTR_HANIWA011_NORTH (HANIWA_START + 46)
|
||||
#define FTR_HANIWA011_WEST (HANIWA_START + 47)
|
||||
#define FTR_HANIWA012_SOUTH (HANIWA_START + 48)
|
||||
#define FTR_HANIWA012_EAST (HANIWA_START + 49)
|
||||
#define FTR_HANIWA012_NORTH (HANIWA_START + 50)
|
||||
#define FTR_HANIWA012_WEST (HANIWA_START + 51)
|
||||
#define FTR_HANIWA013_SOUTH (HANIWA_START + 52)
|
||||
#define FTR_HANIWA013_EAST (HANIWA_START + 53)
|
||||
#define FTR_HANIWA013_NORTH (HANIWA_START + 54)
|
||||
#define FTR_HANIWA013_WEST (HANIWA_START + 55)
|
||||
#define FTR_HANIWA014_SOUTH (HANIWA_START + 56)
|
||||
#define FTR_HANIWA014_EAST (HANIWA_START + 57)
|
||||
#define FTR_HANIWA014_NORTH (HANIWA_START + 58)
|
||||
#define FTR_HANIWA014_WEST (HANIWA_START + 59)
|
||||
#define FTR_HANIWA015_SOUTH (HANIWA_START + 60)
|
||||
#define FTR_HANIWA015_EAST (HANIWA_START + 61)
|
||||
#define FTR_HANIWA015_NORTH (HANIWA_START + 62)
|
||||
#define FTR_HANIWA015_WEST (HANIWA_START + 63)
|
||||
#define FTR_HANIWA016_SOUTH (HANIWA_START + 64)
|
||||
#define FTR_HANIWA016_EAST (HANIWA_START + 65)
|
||||
#define FTR_HANIWA016_NORTH (HANIWA_START + 66)
|
||||
#define FTR_HANIWA016_WEST (HANIWA_START + 67)
|
||||
#define FTR_HANIWA017_SOUTH (HANIWA_START + 68)
|
||||
#define FTR_HANIWA017_EAST (HANIWA_START + 69)
|
||||
#define FTR_HANIWA017_NORTH (HANIWA_START + 70)
|
||||
#define FTR_HANIWA017_WEST (HANIWA_START + 71)
|
||||
#define FTR_HANIWA018_SOUTH (HANIWA_START + 72)
|
||||
#define FTR_HANIWA018_EAST (HANIWA_START + 73)
|
||||
#define FTR_HANIWA018_NORTH (HANIWA_START + 74)
|
||||
#define FTR_HANIWA018_WEST (HANIWA_START + 75)
|
||||
#define FTR_HANIWA019_SOUTH (HANIWA_START + 76)
|
||||
#define FTR_HANIWA019_EAST (HANIWA_START + 77)
|
||||
#define FTR_HANIWA019_NORTH (HANIWA_START + 78)
|
||||
#define FTR_HANIWA019_WEST (HANIWA_START + 79)
|
||||
#define FTR_HANIWA020_SOUTH (HANIWA_START + 80)
|
||||
#define FTR_HANIWA020_EAST (HANIWA_START + 81)
|
||||
#define FTR_HANIWA020_NORTH (HANIWA_START + 82)
|
||||
#define FTR_HANIWA020_WEST (HANIWA_START + 83)
|
||||
#define FTR_HANIWA021_SOUTH (HANIWA_START + 84)
|
||||
#define FTR_HANIWA021_EAST (HANIWA_START + 85)
|
||||
#define FTR_HANIWA021_NORTH (HANIWA_START + 86)
|
||||
#define FTR_HANIWA021_WEST (HANIWA_START + 87)
|
||||
#define FTR_HANIWA022_SOUTH (HANIWA_START + 88)
|
||||
#define FTR_HANIWA022_EAST (HANIWA_START + 89)
|
||||
#define FTR_HANIWA022_NORTH (HANIWA_START + 90)
|
||||
#define FTR_HANIWA022_WEST (HANIWA_START + 91)
|
||||
#define FTR_HANIWA023_SOUTH (HANIWA_START + 92)
|
||||
#define FTR_HANIWA023_EAST (HANIWA_START + 93)
|
||||
#define FTR_HANIWA023_NORTH (HANIWA_START + 94)
|
||||
#define FTR_HANIWA023_WEST (HANIWA_START + 95)
|
||||
#define FTR_HANIWA024_SOUTH (HANIWA_START + 96)
|
||||
#define FTR_HANIWA024_EAST (HANIWA_START + 97)
|
||||
#define FTR_HANIWA024_NORTH (HANIWA_START + 98)
|
||||
#define FTR_HANIWA024_WEST (HANIWA_START + 99)
|
||||
#define FTR_HANIWA025_SOUTH (HANIWA_START + 100)
|
||||
#define FTR_HANIWA025_EAST (HANIWA_START + 101)
|
||||
#define FTR_HANIWA025_NORTH (HANIWA_START + 102)
|
||||
#define FTR_HANIWA025_WEST (HANIWA_START + 103)
|
||||
#define FTR_HANIWA026_SOUTH (HANIWA_START + 104)
|
||||
#define FTR_HANIWA026_EAST (HANIWA_START + 105)
|
||||
#define FTR_HANIWA026_NORTH (HANIWA_START + 106)
|
||||
#define FTR_HANIWA026_WEST (HANIWA_START + 107)
|
||||
#define FTR_HANIWA027_SOUTH (HANIWA_START + 108)
|
||||
#define FTR_HANIWA027_EAST (HANIWA_START + 109)
|
||||
#define FTR_HANIWA027_NORTH (HANIWA_START + 110)
|
||||
#define FTR_HANIWA027_WEST (HANIWA_START + 111)
|
||||
#define FTR_HANIWA028_SOUTH (HANIWA_START + 112)
|
||||
#define FTR_HANIWA028_EAST (HANIWA_START + 113)
|
||||
#define FTR_HANIWA028_NORTH (HANIWA_START + 114)
|
||||
#define FTR_HANIWA028_WEST (HANIWA_START + 115)
|
||||
#define FTR_HANIWA029_SOUTH (HANIWA_START + 116)
|
||||
#define FTR_HANIWA029_EAST (HANIWA_START + 117)
|
||||
#define FTR_HANIWA029_NORTH (HANIWA_START + 118)
|
||||
#define FTR_HANIWA029_WEST (HANIWA_START + 119)
|
||||
#define FTR_HANIWA030_SOUTH (HANIWA_START + 120)
|
||||
#define FTR_HANIWA030_EAST (HANIWA_START + 121)
|
||||
#define FTR_HANIWA030_NORTH (HANIWA_START + 122)
|
||||
#define FTR_HANIWA030_WEST (HANIWA_START + 123)
|
||||
#define FTR_HANIWA031_SOUTH (HANIWA_START + 124)
|
||||
#define FTR_HANIWA031_EAST (HANIWA_START + 125)
|
||||
#define FTR_HANIWA031_NORTH (HANIWA_START + 126)
|
||||
#define FTR_HANIWA031_WEST (HANIWA_START + 127)
|
||||
#define FTR_HANIWA032_SOUTH (HANIWA_START + 128)
|
||||
#define FTR_HANIWA032_EAST (HANIWA_START + 129)
|
||||
#define FTR_HANIWA032_NORTH (HANIWA_START + 130)
|
||||
#define FTR_HANIWA032_WEST (HANIWA_START + 131)
|
||||
#define FTR_HANIWA033_SOUTH (HANIWA_START + 132)
|
||||
#define FTR_HANIWA033_EAST (HANIWA_START + 133)
|
||||
#define FTR_HANIWA033_NORTH (HANIWA_START + 134)
|
||||
#define FTR_HANIWA033_WEST (HANIWA_START + 135)
|
||||
#define FTR_HANIWA034_SOUTH (HANIWA_START + 136)
|
||||
#define FTR_HANIWA034_EAST (HANIWA_START + 137)
|
||||
#define FTR_HANIWA034_NORTH (HANIWA_START + 138)
|
||||
#define FTR_HANIWA034_WEST (HANIWA_START + 139)
|
||||
#define FTR_HANIWA035_SOUTH (HANIWA_START + 140)
|
||||
#define FTR_HANIWA035_EAST (HANIWA_START + 141)
|
||||
#define FTR_HANIWA035_NORTH (HANIWA_START + 142)
|
||||
#define FTR_HANIWA035_WEST (HANIWA_START + 143)
|
||||
#define FTR_HANIWA036_SOUTH (HANIWA_START + 144)
|
||||
#define FTR_HANIWA036_EAST (HANIWA_START + 145)
|
||||
#define FTR_HANIWA036_NORTH (HANIWA_START + 146)
|
||||
#define FTR_HANIWA036_WEST (HANIWA_START + 147)
|
||||
#define FTR_HANIWA037_SOUTH (HANIWA_START + 148)
|
||||
#define FTR_HANIWA037_EAST (HANIWA_START + 149)
|
||||
#define FTR_HANIWA037_NORTH (HANIWA_START + 150)
|
||||
#define FTR_HANIWA037_WEST (HANIWA_START + 151)
|
||||
#define FTR_HANIWA038_SOUTH (HANIWA_START + 152)
|
||||
#define FTR_HANIWA038_EAST (HANIWA_START + 153)
|
||||
#define FTR_HANIWA038_NORTH (HANIWA_START + 154)
|
||||
#define FTR_HANIWA038_WEST (HANIWA_START + 155)
|
||||
#define FTR_HANIWA039_SOUTH (HANIWA_START + 156)
|
||||
#define FTR_HANIWA039_EAST (HANIWA_START + 157)
|
||||
#define FTR_HANIWA039_NORTH (HANIWA_START + 158)
|
||||
#define FTR_HANIWA039_WEST (HANIWA_START + 159)
|
||||
#define FTR_HANIWA040_SOUTH (HANIWA_START + 160)
|
||||
#define FTR_HANIWA040_EAST (HANIWA_START + 161)
|
||||
#define FTR_HANIWA040_NORTH (HANIWA_START + 162)
|
||||
#define FTR_HANIWA040_WEST (HANIWA_START + 163)
|
||||
#define FTR_HANIWA041_SOUTH (HANIWA_START + 164)
|
||||
#define FTR_HANIWA041_EAST (HANIWA_START + 165)
|
||||
#define FTR_HANIWA041_NORTH (HANIWA_START + 166)
|
||||
#define FTR_HANIWA041_WEST (HANIWA_START + 167)
|
||||
#define FTR_HANIWA042_SOUTH (HANIWA_START + 168)
|
||||
#define FTR_HANIWA042_EAST (HANIWA_START + 169)
|
||||
#define FTR_HANIWA042_NORTH (HANIWA_START + 170)
|
||||
#define FTR_HANIWA042_WEST (HANIWA_START + 171)
|
||||
#define FTR_HANIWA043_SOUTH (HANIWA_START + 172)
|
||||
#define FTR_HANIWA043_EAST (HANIWA_START + 173)
|
||||
#define FTR_HANIWA043_NORTH (HANIWA_START + 174)
|
||||
#define FTR_HANIWA043_WEST (HANIWA_START + 175)
|
||||
#define FTR_HANIWA044_SOUTH (HANIWA_START + 176)
|
||||
#define FTR_HANIWA044_EAST (HANIWA_START + 177)
|
||||
#define FTR_HANIWA044_NORTH (HANIWA_START + 178)
|
||||
#define FTR_HANIWA044_WEST (HANIWA_START + 179)
|
||||
#define FTR_HANIWA045_SOUTH (HANIWA_START + 180)
|
||||
#define FTR_HANIWA045_EAST (HANIWA_START + 181)
|
||||
#define FTR_HANIWA045_NORTH (HANIWA_START + 182)
|
||||
#define FTR_HANIWA045_WEST (HANIWA_START + 183)
|
||||
#define FTR_HANIWA046_SOUTH (HANIWA_START + 184)
|
||||
#define FTR_HANIWA046_EAST (HANIWA_START + 185)
|
||||
#define FTR_HANIWA046_NORTH (HANIWA_START + 186)
|
||||
#define FTR_HANIWA046_WEST (HANIWA_START + 187)
|
||||
#define FTR_HANIWA047_SOUTH (HANIWA_START + 188)
|
||||
#define FTR_HANIWA047_EAST (HANIWA_START + 189)
|
||||
#define FTR_HANIWA047_NORTH (HANIWA_START + 190)
|
||||
#define FTR_HANIWA047_WEST (HANIWA_START + 191)
|
||||
#define FTR_HANIWA048_SOUTH (HANIWA_START + 192)
|
||||
#define FTR_HANIWA048_EAST (HANIWA_START + 193)
|
||||
#define FTR_HANIWA048_NORTH (HANIWA_START + 194)
|
||||
#define FTR_HANIWA048_WEST (HANIWA_START + 195)
|
||||
#define FTR_HANIWA049_SOUTH (HANIWA_START + 196)
|
||||
#define FTR_HANIWA049_EAST (HANIWA_START + 197)
|
||||
#define FTR_HANIWA049_NORTH (HANIWA_START + 198)
|
||||
#define FTR_HANIWA049_WEST (HANIWA_START + 199)
|
||||
#define FTR_HANIWA050_SOUTH (HANIWA_START + 200)
|
||||
#define FTR_HANIWA050_EAST (HANIWA_START + 201)
|
||||
#define FTR_HANIWA050_NORTH (HANIWA_START + 202)
|
||||
#define FTR_HANIWA050_WEST (HANIWA_START + 203)
|
||||
#define FTR_HANIWA051_SOUTH (HANIWA_START + 204)
|
||||
#define FTR_HANIWA051_EAST (HANIWA_START + 205)
|
||||
#define FTR_HANIWA051_NORTH (HANIWA_START + 206)
|
||||
#define FTR_HANIWA051_WEST (HANIWA_START + 207)
|
||||
#define FTR_HANIWA052_SOUTH (HANIWA_START + 208)
|
||||
#define FTR_HANIWA052_EAST (HANIWA_START + 209)
|
||||
#define FTR_HANIWA052_NORTH (HANIWA_START + 210)
|
||||
#define FTR_HANIWA052_WEST (HANIWA_START + 211)
|
||||
#define FTR_HANIWA053_SOUTH (HANIWA_START + 212)
|
||||
#define FTR_HANIWA053_EAST (HANIWA_START + 213)
|
||||
#define FTR_HANIWA053_NORTH (HANIWA_START + 214)
|
||||
#define FTR_HANIWA053_WEST (HANIWA_START + 215)
|
||||
#define FTR_HANIWA054_SOUTH (HANIWA_START + 216)
|
||||
#define FTR_HANIWA054_EAST (HANIWA_START + 217)
|
||||
#define FTR_HANIWA054_NORTH (HANIWA_START + 218)
|
||||
#define FTR_HANIWA054_WEST (HANIWA_START + 219)
|
||||
#define FTR_HANIWA055_SOUTH (HANIWA_START + 220)
|
||||
#define FTR_HANIWA055_EAST (HANIWA_START + 221)
|
||||
#define FTR_HANIWA055_NORTH (HANIWA_START + 222)
|
||||
#define FTR_HANIWA055_WEST (HANIWA_START + 223)
|
||||
#define FTR_HANIWA056_SOUTH (HANIWA_START + 224)
|
||||
#define FTR_HANIWA056_EAST (HANIWA_START + 225)
|
||||
#define FTR_HANIWA056_NORTH (HANIWA_START + 226)
|
||||
#define FTR_HANIWA056_WEST (HANIWA_START + 227)
|
||||
#define FTR_HANIWA057_SOUTH (HANIWA_START + 228)
|
||||
#define FTR_HANIWA057_EAST (HANIWA_START + 229)
|
||||
#define FTR_HANIWA057_NORTH (HANIWA_START + 230)
|
||||
#define FTR_HANIWA057_WEST (HANIWA_START + 231)
|
||||
#define FTR_HANIWA058_SOUTH (HANIWA_START + 232)
|
||||
#define FTR_HANIWA058_EAST (HANIWA_START + 233)
|
||||
#define FTR_HANIWA058_NORTH (HANIWA_START + 234)
|
||||
#define FTR_HANIWA058_WEST (HANIWA_START + 235)
|
||||
#define FTR_HANIWA059_SOUTH (HANIWA_START + 236)
|
||||
#define FTR_HANIWA059_EAST (HANIWA_START + 237)
|
||||
#define FTR_HANIWA059_NORTH (HANIWA_START + 238)
|
||||
#define FTR_HANIWA059_WEST (HANIWA_START + 239)
|
||||
#define FTR_HANIWA060_SOUTH (HANIWA_START + 240)
|
||||
#define FTR_HANIWA060_EAST (HANIWA_START + 241)
|
||||
#define FTR_HANIWA060_NORTH (HANIWA_START + 242)
|
||||
#define FTR_HANIWA060_WEST (HANIWA_START + 243)
|
||||
#define FTR_HANIWA061_SOUTH (HANIWA_START + 244)
|
||||
#define FTR_HANIWA061_EAST (HANIWA_START + 245)
|
||||
#define FTR_HANIWA061_NORTH (HANIWA_START + 246)
|
||||
#define FTR_HANIWA061_WEST (HANIWA_START + 247)
|
||||
#define FTR_HANIWA062_SOUTH (HANIWA_START + 248)
|
||||
#define FTR_HANIWA062_EAST (HANIWA_START + 249)
|
||||
#define FTR_HANIWA062_NORTH (HANIWA_START + 250)
|
||||
#define FTR_HANIWA062_WEST (HANIWA_START + 251)
|
||||
#define FTR_HANIWA063_SOUTH (HANIWA_START + 252)
|
||||
#define FTR_HANIWA063_EAST (HANIWA_START + 253)
|
||||
#define FTR_HANIWA063_NORTH (HANIWA_START + 254)
|
||||
#define FTR_HANIWA063_WEST (HANIWA_START + 255)
|
||||
#define FTR_HANIWA064_SOUTH (HANIWA_START + 256)
|
||||
#define FTR_HANIWA064_EAST (HANIWA_START + 257)
|
||||
#define FTR_HANIWA064_NORTH (HANIWA_START + 258)
|
||||
#define FTR_HANIWA064_WEST (HANIWA_START + 259)
|
||||
#define FTR_HANIWA065_SOUTH (HANIWA_START + 260)
|
||||
#define FTR_HANIWA065_EAST (HANIWA_START + 261)
|
||||
#define FTR_HANIWA065_NORTH (HANIWA_START + 262)
|
||||
#define FTR_HANIWA065_WEST (HANIWA_START + 263)
|
||||
#define FTR_HANIWA066_SOUTH (HANIWA_START + 264)
|
||||
#define FTR_HANIWA066_EAST (HANIWA_START + 265)
|
||||
#define FTR_HANIWA066_NORTH (HANIWA_START + 266)
|
||||
#define FTR_HANIWA066_WEST (HANIWA_START + 267)
|
||||
#define FTR_HANIWA067_SOUTH (HANIWA_START + 268)
|
||||
#define FTR_HANIWA067_EAST (HANIWA_START + 269)
|
||||
#define FTR_HANIWA067_NORTH (HANIWA_START + 270)
|
||||
#define FTR_HANIWA067_WEST (HANIWA_START + 271)
|
||||
#define FTR_HANIWA068_SOUTH (HANIWA_START + 272)
|
||||
#define FTR_HANIWA068_EAST (HANIWA_START + 273)
|
||||
#define FTR_HANIWA068_NORTH (HANIWA_START + 274)
|
||||
#define FTR_HANIWA068_WEST (HANIWA_START + 275)
|
||||
#define FTR_HANIWA069_SOUTH (HANIWA_START + 276)
|
||||
#define FTR_HANIWA069_EAST (HANIWA_START + 277)
|
||||
#define FTR_HANIWA069_NORTH (HANIWA_START + 278)
|
||||
#define FTR_HANIWA069_WEST (HANIWA_START + 279)
|
||||
#define FTR_HANIWA070_SOUTH (HANIWA_START + 280)
|
||||
#define FTR_HANIWA070_EAST (HANIWA_START + 281)
|
||||
#define FTR_HANIWA070_NORTH (HANIWA_START + 282)
|
||||
#define FTR_HANIWA070_WEST (HANIWA_START + 283)
|
||||
#define FTR_HANIWA071_SOUTH (HANIWA_START + 284)
|
||||
#define FTR_HANIWA071_EAST (HANIWA_START + 285)
|
||||
#define FTR_HANIWA071_NORTH (HANIWA_START + 286)
|
||||
#define FTR_HANIWA071_WEST (HANIWA_START + 287)
|
||||
#define FTR_HANIWA072_SOUTH (HANIWA_START + 288)
|
||||
#define FTR_HANIWA072_EAST (HANIWA_START + 289)
|
||||
#define FTR_HANIWA072_NORTH (HANIWA_START + 290)
|
||||
#define FTR_HANIWA072_WEST (HANIWA_START + 291)
|
||||
#define FTR_HANIWA073_SOUTH (HANIWA_START + 292)
|
||||
#define FTR_HANIWA073_EAST (HANIWA_START + 293)
|
||||
#define FTR_HANIWA073_NORTH (HANIWA_START + 294)
|
||||
#define FTR_HANIWA073_WEST (HANIWA_START + 295)
|
||||
#define FTR_HANIWA074_SOUTH (HANIWA_START + 296)
|
||||
#define FTR_HANIWA074_EAST (HANIWA_START + 297)
|
||||
#define FTR_HANIWA074_NORTH (HANIWA_START + 298)
|
||||
#define FTR_HANIWA074_WEST (HANIWA_START + 299)
|
||||
#define FTR_HANIWA075_SOUTH (HANIWA_START + 300)
|
||||
#define FTR_HANIWA075_EAST (HANIWA_START + 301)
|
||||
#define FTR_HANIWA075_NORTH (HANIWA_START + 302)
|
||||
#define FTR_HANIWA075_WEST (HANIWA_START + 303)
|
||||
#define FTR_HANIWA076_SOUTH (HANIWA_START + 304)
|
||||
#define FTR_HANIWA076_EAST (HANIWA_START + 305)
|
||||
#define FTR_HANIWA076_NORTH (HANIWA_START + 306)
|
||||
#define FTR_HANIWA076_WEST (HANIWA_START + 307)
|
||||
#define FTR_HANIWA077_SOUTH (HANIWA_START + 308)
|
||||
#define FTR_HANIWA077_EAST (HANIWA_START + 309)
|
||||
#define FTR_HANIWA077_NORTH (HANIWA_START + 310)
|
||||
#define FTR_HANIWA077_WEST (HANIWA_START + 311)
|
||||
#define FTR_HANIWA078_SOUTH (HANIWA_START + 312)
|
||||
#define FTR_HANIWA078_EAST (HANIWA_START + 313)
|
||||
#define FTR_HANIWA078_NORTH (HANIWA_START + 314)
|
||||
#define FTR_HANIWA078_WEST (HANIWA_START + 315)
|
||||
#define FTR_HANIWA079_SOUTH (HANIWA_START + 316)
|
||||
#define FTR_HANIWA079_EAST (HANIWA_START + 317)
|
||||
#define FTR_HANIWA079_NORTH (HANIWA_START + 318)
|
||||
#define FTR_HANIWA079_WEST (HANIWA_START + 319)
|
||||
#define FTR_HANIWA080_SOUTH (HANIWA_START + 320)
|
||||
#define FTR_HANIWA080_EAST (HANIWA_START + 321)
|
||||
#define FTR_HANIWA080_NORTH (HANIWA_START + 322)
|
||||
#define FTR_HANIWA080_WEST (HANIWA_START + 323)
|
||||
#define FTR_HANIWA081_SOUTH (HANIWA_START + 324)
|
||||
#define FTR_HANIWA081_EAST (HANIWA_START + 325)
|
||||
#define FTR_HANIWA081_NORTH (HANIWA_START + 326)
|
||||
#define FTR_HANIWA081_WEST (HANIWA_START + 327)
|
||||
#define FTR_HANIWA082_SOUTH (HANIWA_START + 328)
|
||||
#define FTR_HANIWA082_EAST (HANIWA_START + 329)
|
||||
#define FTR_HANIWA082_NORTH (HANIWA_START + 330)
|
||||
#define FTR_HANIWA082_WEST (HANIWA_START + 331)
|
||||
#define FTR_HANIWA083_SOUTH (HANIWA_START + 332)
|
||||
#define FTR_HANIWA083_EAST (HANIWA_START + 333)
|
||||
#define FTR_HANIWA083_NORTH (HANIWA_START + 334)
|
||||
#define FTR_HANIWA083_WEST (HANIWA_START + 335)
|
||||
#define FTR_HANIWA084_SOUTH (HANIWA_START + 336)
|
||||
#define FTR_HANIWA084_EAST (HANIWA_START + 337)
|
||||
#define FTR_HANIWA084_NORTH (HANIWA_START + 338)
|
||||
#define FTR_HANIWA084_WEST (HANIWA_START + 339)
|
||||
#define FTR_HANIWA085_SOUTH (HANIWA_START + 340)
|
||||
#define FTR_HANIWA085_EAST (HANIWA_START + 341)
|
||||
#define FTR_HANIWA085_NORTH (HANIWA_START + 342)
|
||||
#define FTR_HANIWA085_WEST (HANIWA_START + 343)
|
||||
#define FTR_HANIWA086_SOUTH (HANIWA_START + 344)
|
||||
#define FTR_HANIWA086_EAST (HANIWA_START + 345)
|
||||
#define FTR_HANIWA086_NORTH (HANIWA_START + 346)
|
||||
#define FTR_HANIWA086_WEST (HANIWA_START + 347)
|
||||
#define FTR_HANIWA087_SOUTH (HANIWA_START + 348)
|
||||
#define FTR_HANIWA087_EAST (HANIWA_START + 349)
|
||||
#define FTR_HANIWA087_NORTH (HANIWA_START + 350)
|
||||
#define FTR_HANIWA087_WEST (HANIWA_START + 351)
|
||||
#define FTR_HANIWA088_SOUTH (HANIWA_START + 352)
|
||||
#define FTR_HANIWA088_EAST (HANIWA_START + 353)
|
||||
#define FTR_HANIWA088_NORTH (HANIWA_START + 354)
|
||||
#define FTR_HANIWA088_WEST (HANIWA_START + 355)
|
||||
#define FTR_HANIWA089_SOUTH (HANIWA_START + 356)
|
||||
#define FTR_HANIWA089_EAST (HANIWA_START + 357)
|
||||
#define FTR_HANIWA089_NORTH (HANIWA_START + 358)
|
||||
#define FTR_HANIWA089_WEST (HANIWA_START + 359)
|
||||
#define FTR_HANIWA090_SOUTH (HANIWA_START + 360)
|
||||
#define FTR_HANIWA090_EAST (HANIWA_START + 361)
|
||||
#define FTR_HANIWA090_NORTH (HANIWA_START + 362)
|
||||
#define FTR_HANIWA090_WEST (HANIWA_START + 363)
|
||||
#define FTR_HANIWA091_SOUTH (HANIWA_START + 364)
|
||||
#define FTR_HANIWA091_EAST (HANIWA_START + 365)
|
||||
#define FTR_HANIWA091_NORTH (HANIWA_START + 366)
|
||||
#define FTR_HANIWA091_WEST (HANIWA_START + 367)
|
||||
#define FTR_HANIWA092_SOUTH (HANIWA_START + 368)
|
||||
#define FTR_HANIWA092_EAST (HANIWA_START + 369)
|
||||
#define FTR_HANIWA092_NORTH (HANIWA_START + 370)
|
||||
#define FTR_HANIWA092_WEST (HANIWA_START + 371)
|
||||
#define FTR_HANIWA093_SOUTH (HANIWA_START + 372)
|
||||
#define FTR_HANIWA093_EAST (HANIWA_START + 373)
|
||||
#define FTR_HANIWA093_NORTH (HANIWA_START + 374)
|
||||
#define FTR_HANIWA093_WEST (HANIWA_START + 375)
|
||||
#define FTR_HANIWA094_SOUTH (HANIWA_START + 376)
|
||||
#define FTR_HANIWA094_EAST (HANIWA_START + 377)
|
||||
#define FTR_HANIWA094_NORTH (HANIWA_START + 378)
|
||||
#define FTR_HANIWA094_WEST (HANIWA_START + 379)
|
||||
#define FTR_HANIWA095_SOUTH (HANIWA_START + 380)
|
||||
#define FTR_HANIWA095_EAST (HANIWA_START + 381)
|
||||
#define FTR_HANIWA095_NORTH (HANIWA_START + 382)
|
||||
#define FTR_HANIWA095_WEST (HANIWA_START + 383)
|
||||
#define FTR_HANIWA096_SOUTH (HANIWA_START + 384)
|
||||
#define FTR_HANIWA096_EAST (HANIWA_START + 385)
|
||||
#define FTR_HANIWA096_NORTH (HANIWA_START + 386)
|
||||
#define FTR_HANIWA096_WEST (HANIWA_START + 387)
|
||||
#define FTR_HANIWA097_SOUTH (HANIWA_START + 388)
|
||||
#define FTR_HANIWA097_EAST (HANIWA_START + 389)
|
||||
#define FTR_HANIWA097_NORTH (HANIWA_START + 390)
|
||||
#define FTR_HANIWA097_WEST (HANIWA_START + 391)
|
||||
#define FTR_HANIWA098_SOUTH (HANIWA_START + 392)
|
||||
#define FTR_HANIWA098_EAST (HANIWA_START + 393)
|
||||
#define FTR_HANIWA098_NORTH (HANIWA_START + 394)
|
||||
#define FTR_HANIWA098_WEST (HANIWA_START + 395)
|
||||
#define FTR_HANIWA099_SOUTH (HANIWA_START + 396)
|
||||
#define FTR_HANIWA099_EAST (HANIWA_START + 397)
|
||||
#define FTR_HANIWA099_NORTH (HANIWA_START + 398)
|
||||
#define FTR_HANIWA099_WEST (HANIWA_START + 399)
|
||||
#define FTR_HANIWA100_SOUTH (HANIWA_START + 400)
|
||||
#define FTR_HANIWA100_EAST (HANIWA_START + 401)
|
||||
#define FTR_HANIWA100_NORTH (HANIWA_START + 402)
|
||||
#define FTR_HANIWA100_WEST (HANIWA_START + 403)
|
||||
#define FTR_HANIWA101_SOUTH (HANIWA_START + 404)
|
||||
#define FTR_HANIWA101_EAST (HANIWA_START + 405)
|
||||
#define FTR_HANIWA101_NORTH (HANIWA_START + 406)
|
||||
#define FTR_HANIWA101_WEST (HANIWA_START + 407)
|
||||
#define FTR_HANIWA102_SOUTH (HANIWA_START + 408)
|
||||
#define FTR_HANIWA102_EAST (HANIWA_START + 409)
|
||||
#define FTR_HANIWA102_NORTH (HANIWA_START + 410)
|
||||
#define FTR_HANIWA102_WEST (HANIWA_START + 411)
|
||||
#define FTR_HANIWA103_SOUTH (HANIWA_START + 412)
|
||||
#define FTR_HANIWA103_EAST (HANIWA_START + 413)
|
||||
#define FTR_HANIWA103_NORTH (HANIWA_START + 414)
|
||||
#define FTR_HANIWA103_WEST (HANIWA_START + 415)
|
||||
#define FTR_HANIWA104_SOUTH (HANIWA_START + 416)
|
||||
#define FTR_HANIWA104_EAST (HANIWA_START + 417)
|
||||
#define FTR_HANIWA104_NORTH (HANIWA_START + 418)
|
||||
#define FTR_HANIWA104_WEST (HANIWA_START + 419)
|
||||
#define FTR_HANIWA105_SOUTH (HANIWA_START + 420)
|
||||
#define FTR_HANIWA105_EAST (HANIWA_START + 421)
|
||||
#define FTR_HANIWA105_NORTH (HANIWA_START + 422)
|
||||
#define FTR_HANIWA105_WEST (HANIWA_START + 423)
|
||||
#define FTR_HANIWA106_SOUTH (HANIWA_START + 424)
|
||||
#define FTR_HANIWA106_EAST (HANIWA_START + 425)
|
||||
#define FTR_HANIWA106_NORTH (HANIWA_START + 426)
|
||||
#define FTR_HANIWA106_WEST (HANIWA_START + 427)
|
||||
#define FTR_HANIWA107_SOUTH (HANIWA_START + 428)
|
||||
#define FTR_HANIWA107_EAST (HANIWA_START + 429)
|
||||
#define FTR_HANIWA107_NORTH (HANIWA_START + 430)
|
||||
#define FTR_HANIWA107_WEST (HANIWA_START + 431)
|
||||
#define FTR_HANIWA108_SOUTH (HANIWA_START + 432)
|
||||
#define FTR_HANIWA108_EAST (HANIWA_START + 433)
|
||||
#define FTR_HANIWA108_NORTH (HANIWA_START + 434)
|
||||
#define FTR_HANIWA108_WEST (HANIWA_START + 435)
|
||||
#define FTR_HANIWA109_SOUTH (HANIWA_START + 436)
|
||||
#define FTR_HANIWA109_EAST (HANIWA_START + 437)
|
||||
#define FTR_HANIWA109_NORTH (HANIWA_START + 438)
|
||||
#define FTR_HANIWA109_WEST (HANIWA_START + 439)
|
||||
#define FTR_HANIWA110_SOUTH (HANIWA_START + 440)
|
||||
#define FTR_HANIWA110_EAST (HANIWA_START + 441)
|
||||
#define FTR_HANIWA110_NORTH (HANIWA_START + 442)
|
||||
#define FTR_HANIWA110_WEST (HANIWA_START + 443)
|
||||
#define FTR_HANIWA111_SOUTH (HANIWA_START + 444)
|
||||
#define FTR_HANIWA111_EAST (HANIWA_START + 445)
|
||||
#define FTR_HANIWA111_NORTH (HANIWA_START + 446)
|
||||
#define FTR_HANIWA111_WEST (HANIWA_START + 447)
|
||||
#define FTR_HANIWA112_SOUTH (HANIWA_START + 448)
|
||||
#define FTR_HANIWA112_EAST (HANIWA_START + 449)
|
||||
#define FTR_HANIWA112_NORTH (HANIWA_START + 450)
|
||||
#define FTR_HANIWA112_WEST (HANIWA_START + 451)
|
||||
#define FTR_HANIWA113_SOUTH (HANIWA_START + 452)
|
||||
#define FTR_HANIWA113_EAST (HANIWA_START + 453)
|
||||
#define FTR_HANIWA113_NORTH (HANIWA_START + 454)
|
||||
#define FTR_HANIWA113_WEST (HANIWA_START + 455)
|
||||
#define FTR_HANIWA114_SOUTH (HANIWA_START + 456)
|
||||
#define FTR_HANIWA114_EAST (HANIWA_START + 457)
|
||||
#define FTR_HANIWA114_NORTH (HANIWA_START + 458)
|
||||
#define FTR_HANIWA114_WEST (HANIWA_START + 459)
|
||||
#define FTR_HANIWA115_SOUTH (HANIWA_START + 460)
|
||||
#define FTR_HANIWA115_EAST (HANIWA_START + 461)
|
||||
#define FTR_HANIWA115_NORTH (HANIWA_START + 462)
|
||||
#define FTR_HANIWA115_WEST (HANIWA_START + 463)
|
||||
#define FTR_HANIWA116_SOUTH (HANIWA_START + 464)
|
||||
#define FTR_HANIWA116_EAST (HANIWA_START + 465)
|
||||
#define FTR_HANIWA116_NORTH (HANIWA_START + 466)
|
||||
#define FTR_HANIWA116_WEST (HANIWA_START + 467)
|
||||
#define FTR_HANIWA117_SOUTH (HANIWA_START + 468)
|
||||
#define FTR_HANIWA117_EAST (HANIWA_START + 469)
|
||||
#define FTR_HANIWA117_NORTH (HANIWA_START + 470)
|
||||
#define FTR_HANIWA117_WEST (HANIWA_START + 471)
|
||||
#define FTR_HANIWA118_SOUTH (HANIWA_START + 472)
|
||||
#define FTR_HANIWA118_EAST (HANIWA_START + 473)
|
||||
#define FTR_HANIWA118_NORTH (HANIWA_START + 474)
|
||||
#define FTR_HANIWA118_WEST (HANIWA_START + 475)
|
||||
#define FTR_HANIWA119_SOUTH (HANIWA_START + 476)
|
||||
#define FTR_HANIWA119_EAST (HANIWA_START + 477)
|
||||
#define FTR_HANIWA119_NORTH (HANIWA_START + 478)
|
||||
#define FTR_HANIWA119_WEST (HANIWA_START + 479)
|
||||
#define FTR_HANIWA120_SOUTH (HANIWA_START + 480)
|
||||
#define FTR_HANIWA120_EAST (HANIWA_START + 481)
|
||||
#define FTR_HANIWA120_NORTH (HANIWA_START + 482)
|
||||
#define FTR_HANIWA120_WEST (HANIWA_START + 483)
|
||||
#define FTR_HANIWA121_SOUTH (HANIWA_START + 484)
|
||||
#define FTR_HANIWA121_EAST (HANIWA_START + 485)
|
||||
#define FTR_HANIWA121_NORTH (HANIWA_START + 486)
|
||||
#define FTR_HANIWA121_WEST (HANIWA_START + 487)
|
||||
#define FTR_HANIWA122_SOUTH (HANIWA_START + 488)
|
||||
#define FTR_HANIWA122_EAST (HANIWA_START + 489)
|
||||
#define FTR_HANIWA122_NORTH (HANIWA_START + 490)
|
||||
#define FTR_HANIWA122_WEST (HANIWA_START + 491)
|
||||
#define FTR_HANIWA123_SOUTH (HANIWA_START + 492)
|
||||
#define FTR_HANIWA123_EAST (HANIWA_START + 493)
|
||||
#define FTR_HANIWA123_NORTH (HANIWA_START + 494)
|
||||
#define FTR_HANIWA123_WEST (HANIWA_START + 495)
|
||||
#define FTR_HANIWA124_SOUTH (HANIWA_START + 496)
|
||||
#define FTR_HANIWA124_EAST (HANIWA_START + 497)
|
||||
#define FTR_HANIWA124_NORTH (HANIWA_START + 498)
|
||||
#define FTR_HANIWA124_WEST (HANIWA_START + 499)
|
||||
#define FTR_HANIWA125_SOUTH (HANIWA_START + 500)
|
||||
#define FTR_HANIWA125_EAST (HANIWA_START + 501)
|
||||
#define FTR_HANIWA125_NORTH (HANIWA_START + 502)
|
||||
#define FTR_HANIWA125_WEST (HANIWA_START + 503)
|
||||
#define FTR_HANIWA126_SOUTH (HANIWA_START + 504)
|
||||
#define FTR_HANIWA126_EAST (HANIWA_START + 505)
|
||||
#define FTR_HANIWA126_NORTH (HANIWA_START + 506)
|
||||
#define FTR_HANIWA126_WEST (HANIWA_START + 507)
|
||||
#define HANIWA_END (HANIWA_START + 507)
|
||||
|
||||
#define FTR_CLOTH_START 0x17AC
|
||||
#define FTR_CLOTH_MANNIQUIN000_SOUTH FTR_CLOTH_START
|
||||
@@ -783,18 +1290,46 @@ extern int mNT_check_unknown(mActor_name_t item_no);
|
||||
#define ITM_SHOVEL 0x2202
|
||||
#define ITM_ROD 0x2203
|
||||
#define ITM_UMBRELLA_START (ITM_TOOL_START + 4)
|
||||
#define ITM_GELATO_UMBRELLA 0x2204
|
||||
#define ITM_DAFFODIL_PARASOL 0x2205
|
||||
// TODO: other umbrellas
|
||||
#define ITM_FLAME_UMBRELLA 0x2223
|
||||
#define ITM_MY_ORG_UMBRELLA0 0x2224
|
||||
#define ITM_MY_ORG_UMBRELLA1 0x2225
|
||||
#define ITM_MY_ORG_UMBRELLA2 0x2226
|
||||
#define ITM_MY_ORG_UMBRELLA3 0x2227
|
||||
#define ITM_MY_ORG_UMBRELLA4 0x2228
|
||||
#define ITM_MY_ORG_UMBRELLA5 0x2229
|
||||
#define ITM_MY_ORG_UMBRELLA6 0x222A
|
||||
#define ITM_MY_ORG_UMBRELLA7 0x222B
|
||||
#define ITM_UMBRELLA00 (ITM_TOOL_START + 4)
|
||||
#define ITM_UMBRELLA01 (ITM_TOOL_START + 5)
|
||||
#define ITM_UMBRELLA02 (ITM_TOOL_START + 6)
|
||||
#define ITM_UMBRELLA03 (ITM_TOOL_START + 7)
|
||||
#define ITM_UMBRELLA04 (ITM_TOOL_START + 8)
|
||||
#define ITM_UMBRELLA05 (ITM_TOOL_START + 9)
|
||||
#define ITM_UMBRELLA06 (ITM_TOOL_START + 10)
|
||||
#define ITM_UMBRELLA07 (ITM_TOOL_START + 11)
|
||||
#define ITM_UMBRELLA08 (ITM_TOOL_START + 12)
|
||||
#define ITM_UMBRELLA09 (ITM_TOOL_START + 13)
|
||||
#define ITM_UMBRELLA10 (ITM_TOOL_START + 14)
|
||||
#define ITM_UMBRELLA11 (ITM_TOOL_START + 15)
|
||||
#define ITM_UMBRELLA12 (ITM_TOOL_START + 16)
|
||||
#define ITM_UMBRELLA13 (ITM_TOOL_START + 17)
|
||||
#define ITM_UMBRELLA14 (ITM_TOOL_START + 18)
|
||||
#define ITM_UMBRELLA15 (ITM_TOOL_START + 19)
|
||||
#define ITM_UMBRELLA16 (ITM_TOOL_START + 20)
|
||||
#define ITM_UMBRELLA17 (ITM_TOOL_START + 21)
|
||||
#define ITM_UMBRELLA18 (ITM_TOOL_START + 22)
|
||||
#define ITM_UMBRELLA19 (ITM_TOOL_START + 23)
|
||||
#define ITM_UMBRELLA20 (ITM_TOOL_START + 24)
|
||||
#define ITM_UMBRELLA21 (ITM_TOOL_START + 25)
|
||||
#define ITM_UMBRELLA22 (ITM_TOOL_START + 26)
|
||||
#define ITM_UMBRELLA23 (ITM_TOOL_START + 27)
|
||||
#define ITM_UMBRELLA24 (ITM_TOOL_START + 28)
|
||||
#define ITM_UMBRELLA25 (ITM_TOOL_START + 29)
|
||||
#define ITM_UMBRELLA26 (ITM_TOOL_START + 30)
|
||||
#define ITM_UMBRELLA27 (ITM_TOOL_START + 31)
|
||||
#define ITM_UMBRELLA28 (ITM_TOOL_START + 32)
|
||||
#define ITM_UMBRELLA29 (ITM_TOOL_START + 33)
|
||||
#define ITM_UMBRELLA30 (ITM_TOOL_START + 34)
|
||||
#define ITM_UMBRELLA31 (ITM_TOOL_START + 35)
|
||||
#define ITM_MY_ORG_UMBRELLA0 (ITM_TOOL_START + 36)
|
||||
#define ITM_MY_ORG_UMBRELLA1 (ITM_TOOL_START + 37)
|
||||
#define ITM_MY_ORG_UMBRELLA2 (ITM_TOOL_START + 38)
|
||||
#define ITM_MY_ORG_UMBRELLA3 (ITM_TOOL_START + 39)
|
||||
#define ITM_MY_ORG_UMBRELLA4 (ITM_TOOL_START + 40)
|
||||
#define ITM_MY_ORG_UMBRELLA5 (ITM_TOOL_START + 41)
|
||||
#define ITM_MY_ORG_UMBRELLA6 (ITM_TOOL_START + 42)
|
||||
#define ITM_MY_ORG_UMBRELLA7 (ITM_TOOL_START + 43)
|
||||
#define ITM_UMBRELLA_END (ITM_TOOL_START + 44)
|
||||
#define ITM_SICKLE 0x222C
|
||||
#define ITM_RED_PAINT 0x222D
|
||||
|
||||
@@ -62,7 +62,7 @@ extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play);
|
||||
extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_id, int base_idx);
|
||||
extern void mPlib_Object_Exchange_keep_new_PlayerFaceTex(GAME_PLAY* play);
|
||||
extern void mPlib_Object_Exchange_keep_new_PlayerFacePallet(GAME_PLAY* play, int bank_id, int base_idx);
|
||||
extern void mPlib_request_main_give_type1(GAME_PLAY* play, mActor_name_t item, int mode, int present, int on_surface);
|
||||
extern void mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mode, int present, int on_surface);
|
||||
|
||||
#define GET_PLAYER_ACTOR(play) get_player_actor_withoutCheck(play)
|
||||
#define GET_PLAYER_ACTOR_NOW() get_player_actor_withoutCheck((GAME_PLAY*)gamePT)
|
||||
|
||||
@@ -25,6 +25,7 @@ extern "C" {
|
||||
#define mPr_FLAG_POSTOFFICE_GIFT3 (1 << 5) // 999,999,999 Bells
|
||||
#define mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED (1 << 6) // player is scheduled to receive completion letter & reward
|
||||
#define mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED (1 << 7) // player has received the completion letter & reward
|
||||
#define mPr_FLAG_UPDATE_OUTLOOK_PENDING (1 << 9) // player bought a new coat of roof paint to be repainted
|
||||
|
||||
#define mPr_MONEY_POWER_MIN -80
|
||||
|
||||
|
||||
@@ -28,6 +28,23 @@ extern "C" {
|
||||
#define mSP_SUPER_SUM 90000 // sales sum for upgrading to Nookway
|
||||
#define mSP_DSUPER_SUM 240000 // sales sum for upgrading to Nookington's
|
||||
|
||||
enum {
|
||||
mSP_ROOF_COLOR_RED,
|
||||
mSP_ROOF_COLOR_ORANGE,
|
||||
mSP_ROOF_COLOR_YELLOW,
|
||||
mSP_ROOF_COLOR_PALE_GREEN,
|
||||
mSP_ROOF_COLOR_GREEN,
|
||||
mSP_ROOF_COLOR_SKY_BLUE,
|
||||
mSP_ROOF_COLOR_BLUE,
|
||||
mSP_ROOF_COLOR_PURPLE,
|
||||
mSP_ROOF_COLOR_PINK,
|
||||
mSP_ROOF_COLOR_BLACK,
|
||||
mSP_ROOF_COLOR_WHITE,
|
||||
mSP_ROOF_COLOR_BROWN,
|
||||
|
||||
mSP_ROOF_COLOR_NUM
|
||||
};
|
||||
|
||||
/* item list groups */
|
||||
enum {
|
||||
mSP_LIST_A, /* A priority list */
|
||||
|
||||
@@ -2,6 +2,305 @@
|
||||
|
||||
#include "m_event.h"
|
||||
#include "m_common_data.h"
|
||||
#include "m_msg.h"
|
||||
#include "m_string.h"
|
||||
#include "libultra/libultra.h"
|
||||
#include "m_player_lib.h"
|
||||
#include "m_item_name.h"
|
||||
#include "m_house.h"
|
||||
|
||||
enum {
|
||||
aEGH_TALK_END_WAIT,
|
||||
aEGH_TALK_GIVE_ME_WAIT,
|
||||
aEGH_TALK_SELECT_WAIT,
|
||||
aEGH_TALK_SELECT_ROOF,
|
||||
aEGH_TALK_GIVE_YOU_WAIT,
|
||||
aEGH_TALK_CLEAR_GRASS,
|
||||
|
||||
aEGH_TALK_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
aEGH_THINK_NORMAL_WAIT,
|
||||
aEGH_THINK_IRAI,
|
||||
aEGH_THINK_IRAI_AF,
|
||||
aEGH_THINK_BYE,
|
||||
aEGH_THINK_WELCOM,
|
||||
aEGH_THINK_BYEBYE,
|
||||
aEGH_THINK_SPEAK, // ?
|
||||
|
||||
aEGH_THINK_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
aEGH_THINK_INIT_NONE,
|
||||
aEGH_THINK_INIT_NORMAL_WAIT,
|
||||
aEGH_THINK_INIT_IRAI,
|
||||
aEGH_THINK_INIT_IRAI_AF,
|
||||
aEGH_THINK_INIT_BYE,
|
||||
aEGH_THINK_INIT_WELCOM,
|
||||
aEGH_THINK_INIT_BYEBYE,
|
||||
|
||||
aEGH_THINK_INIT_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
aEGH_THINK_PROC_NONE,
|
||||
aEGH_THINK_PROC_IRAI,
|
||||
aEGH_THINK_PROC_BYE,
|
||||
aEGH_THINK_PROC_BYEBYE,
|
||||
aEGH_THINK_PROC_SPEAK_BYEBYE,
|
||||
|
||||
aEGH_THINK_PROC_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
aEGH_TALK_REQUEST_NONE,
|
||||
aEGH_TALK_REQUEST_NORM,
|
||||
aEGH_TALK_REQUEST_FORCE,
|
||||
|
||||
aEGH_TALK_REQUEST_NUM
|
||||
};
|
||||
|
||||
typedef struct ghost_think_setup_s {
|
||||
u8 think_proc;
|
||||
u8 think_init_proc;
|
||||
u8 talk_request_proc;
|
||||
u8 talk_act;
|
||||
u8 talk_after_act;
|
||||
} aEGH_setup_c;
|
||||
|
||||
static void aEGH_actor_ct(ACTOR*, GAME*);
|
||||
static void aEGH_actor_dt(ACTOR*, GAME*);
|
||||
static void aEGH_actor_move(ACTOR*, GAME*);
|
||||
static void aEGH_actor_draw(ACTOR*, GAME*);
|
||||
static void aEGH_actor_init(ACTOR*, GAME*);
|
||||
static void aEGH_actor_save(ACTOR*, GAME*);
|
||||
|
||||
ACTOR_PROFILE Ev_Ghost_Profile = {
|
||||
mAc_PROFILE_EV_GHOST,
|
||||
ACTOR_PART_NPC,
|
||||
ACTOR_STATE_NONE,
|
||||
SP_NPC_EV_GHOST,
|
||||
ACTOR_OBJ_BANK_KEEP,
|
||||
sizeof(EV_GHOST_ACTOR),
|
||||
&aEGH_actor_ct,
|
||||
&aEGH_actor_dt,
|
||||
&aEGH_actor_init,
|
||||
mActor_NONE_PROC1,
|
||||
&aEGH_actor_save
|
||||
};
|
||||
|
||||
static int aEGH_talk_init(ACTOR*, GAME*);
|
||||
static int aEGH_talk_end_chk(ACTOR*, GAME*);
|
||||
|
||||
static int aEGH_change_talk_proc(EV_GHOST_ACTOR* ghost, u8 talk_act);
|
||||
static void aEGH_setup_think_proc(EV_GHOST_ACTOR* ghost, GAME_PLAY* play, u8 think_act);
|
||||
static void aEGH_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int sched_type);
|
||||
|
||||
static int aEGH_bitset_func(u16 bit);
|
||||
static int aEGH_bitclr_func(u16 bit);
|
||||
static u16 aEGH_bitcheck_func(u16 bit);
|
||||
|
||||
static void aEGH_byebye_check(EV_GHOST_ACTOR* ghost, GAME_PLAY* play);
|
||||
|
||||
static void aEGH_actor_ct(ACTOR* actorx, GAME* game) {
|
||||
static aNPC_ct_data_c ct_data = {
|
||||
&aEGH_actor_move,
|
||||
&aEGH_actor_draw,
|
||||
5,
|
||||
(aNPC_TALK_REQUEST_PROC)&none_proc1,
|
||||
&aEGH_talk_init,
|
||||
&aEGH_talk_end_chk,
|
||||
0
|
||||
};
|
||||
|
||||
mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54);
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time);
|
||||
|
||||
if ((*Common_Get(clip).npc_clip->birth_check_proc)(actorx, game) == TRUE) {
|
||||
ghost->npc_class.schedule.schedule_proc = &aEGH_schedule_proc;
|
||||
(*Common_Get(clip).npc_clip->ct_proc)(actorx, game, &ct_data);
|
||||
ghost->npc_class.palActorIgnoreTimer = -1;
|
||||
ghost->_9A7 = 0;
|
||||
ghost->melody_inst = 0;
|
||||
ghost->npc_class.talk_info.melody_inst = 0;
|
||||
|
||||
if (ghost_save == NULL) {
|
||||
mEv_reserve_save_area(mEv_EVENT_GHOST, 54);
|
||||
ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54);
|
||||
|
||||
if (ghost_save != NULL) {
|
||||
ghost_save->flags = 0;
|
||||
ghost_save->okoruhito_str_no = RANDOM_F(32.0f);
|
||||
mTM_set_renew_time(&ghost_save->renew_time, rtc_time);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (
|
||||
rtc_time->year != ghost_save->renew_time.year ||
|
||||
rtc_time->month != ghost_save->renew_time.month ||
|
||||
rtc_time->day != ghost_save->renew_time.day
|
||||
) {
|
||||
ghost_save->flags = 0;
|
||||
ghost_save->okoruhito_str_no = RANDOM_F(32.0f);
|
||||
mTM_set_renew_time(&ghost_save->renew_time, rtc_time);
|
||||
}
|
||||
|
||||
if ((ghost_save->flags & mEv_GHOST_FLAG_HITODAMA_EXIST) != 0) {
|
||||
Actor_delete(actorx);
|
||||
}
|
||||
}
|
||||
|
||||
if (Common_Get(player_no) == mPr_FOREIGNER) {
|
||||
Actor_delete(actorx);
|
||||
}
|
||||
|
||||
ghost->_9AA = 0;
|
||||
ghost->npc_class.talk_info.default_animation = 126;
|
||||
ghost->_9AC = 0;
|
||||
|
||||
if (aEGH_bitcheck_func(aEGH_BIT_FOUND_GHOST) != FALSE) {
|
||||
ghost->alpha = 140;
|
||||
}
|
||||
else {
|
||||
if (mFI_GetItemNumField_BCT(GRASS_A, GRASS_C) < aEGH_MINIMUM_GRASS_COUNT) {
|
||||
Actor_delete(actorx);
|
||||
}
|
||||
|
||||
ghost->alpha = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_actor_save(ACTOR* actorx, GAME* game) {
|
||||
mNpc_RenewalSetNpc(actorx);
|
||||
}
|
||||
|
||||
static void aEGH_actor_dt(ACTOR* actorx, GAME* game) {
|
||||
mEv_actor_dying_message(mEv_EVENT_GHOST, actorx);
|
||||
(*Common_Get(clip).npc_clip->dt_proc)(actorx, game);
|
||||
}
|
||||
|
||||
static void aEGH_actor_init(ACTOR* actorx, GAME* game) {
|
||||
(*Common_Get(clip).npc_clip->init_proc)(actorx, game);
|
||||
}
|
||||
|
||||
static int aEGH_set_request_act(EV_GHOST_ACTOR* ghost, u8 priority, u8 idx, u8 type, u16 arg0, u16 arg1, u16 arg2) {
|
||||
int res = FALSE;
|
||||
|
||||
if (priority >= ghost->npc_class.request.act_priority) {
|
||||
u16 args[6];
|
||||
|
||||
bzero(args, sizeof(args));
|
||||
args[0] = arg0;
|
||||
args[2] = arg1;
|
||||
args[3] = arg2;
|
||||
ghost->npc_class.request.act_priority = priority;
|
||||
ghost->npc_class.request.act_idx = idx;
|
||||
ghost->npc_class.request.act_type = type;
|
||||
mem_copy((u8*)ghost->npc_class.request.act_args, (u8*)args, sizeof(args));
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static void aEGH_actor_move(ACTOR* actorx, GAME* game) {
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
GAME_PLAY* play = (GAME_PLAY*)game;
|
||||
int step;
|
||||
int alpha;
|
||||
int target_alpha;
|
||||
int delta_alpha;
|
||||
|
||||
if (aEGH_bitcheck_func(aEGH_BIT_FOUND_GHOST) != FALSE) {
|
||||
actorx->actor_specific = 1;
|
||||
}
|
||||
else {
|
||||
actorx->actor_specific = 0;
|
||||
}
|
||||
|
||||
(*Common_Get(clip).npc_clip->move_proc)(actorx, game);
|
||||
aEGH_byebye_check(ghost, play);
|
||||
|
||||
if (ghost->npc_class.schedule.type == aNPC_SCHEDULE_TYPE_WALK_WANDER && ghost->think_act != aEGH_THINK_SPEAK) {
|
||||
ghost->_9AC = 1;
|
||||
(*Common_Get(clip).npc_clip->chg_schedule_proc)((NPC_ACTOR*)ghost, play, aNPC_SCHEDULE_TYPE_SPECIAL);
|
||||
actorx->status_data.weight = 255;
|
||||
}
|
||||
|
||||
alpha = ghost->alpha;
|
||||
|
||||
if (aEGH_bitcheck_func(aEGH_BIT_FOUND_GHOST) != FALSE) {
|
||||
step = 1;
|
||||
|
||||
if (mDemo_Get_talk_actor() == actorx) {
|
||||
ghost->npc_class.draw._5BE = 0;
|
||||
ghost->npc_class.draw.animation_speed = 0.5f;
|
||||
target_alpha = 190;
|
||||
}
|
||||
else {
|
||||
if (actorx->speed > 0.1f) {
|
||||
target_alpha = 80;
|
||||
}
|
||||
else {
|
||||
target_alpha = 140;
|
||||
}
|
||||
|
||||
if (alpha <= 140) {
|
||||
step = 1;
|
||||
}
|
||||
|
||||
ghost->npc_class.draw._5BE = 1;
|
||||
ghost->npc_class.draw.animation_speed = 0.25f;
|
||||
}
|
||||
|
||||
delta_alpha = alpha - target_alpha;
|
||||
if (ABS(delta_alpha) < step) {
|
||||
alpha = target_alpha;
|
||||
}
|
||||
else {
|
||||
if (delta_alpha < 0) {
|
||||
alpha += step;
|
||||
}
|
||||
else {
|
||||
alpha -= step;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (ghost->bye_bye_transparency_delay_timer != 0) {
|
||||
ghost->bye_bye_transparency_delay_timer--;
|
||||
}
|
||||
else {
|
||||
alpha -= 4;
|
||||
|
||||
if (alpha < 0) {
|
||||
alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ghost->alpha = alpha;
|
||||
actorx->shape_info.draw_shadow = FALSE;
|
||||
}
|
||||
|
||||
static void aEGH_actor_draw(ACTOR* actorx, GAME* game) {
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
GRAPH* graph = game->graph;
|
||||
Gfx* gfx;
|
||||
|
||||
OPEN_DISP(graph);
|
||||
gfx = NOW_POLY_XLU_DISP;
|
||||
|
||||
gDPPipeSync(gfx++);
|
||||
gDPSetEnvColor(gfx++, 255, 255, 255, ghost->alpha);
|
||||
|
||||
SET_POLY_XLU_DISP(gfx);
|
||||
CLOSE_DISP(graph);
|
||||
|
||||
(*Common_Get(clip).npc_clip->draw_proc)(actorx, game);
|
||||
}
|
||||
|
||||
#include "../src/ac_ev_ghost_talk.c_inc"
|
||||
#include "../src/ac_ev_ghost_schedule.c_inc"
|
||||
|
||||
@@ -0,0 +1,376 @@
|
||||
static void aEGH_look_player(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
if (ghost->npc_class.action.step == aNPC_ACTION_END_STEP) {
|
||||
u8 action = 4;
|
||||
s16 player_y = ghost->npc_class.actor_class.player_angle_y;
|
||||
s16 rot_y = ghost->npc_class.actor_class.shape_info.rotation.y;
|
||||
s16 diff = player_y - rot_y;
|
||||
|
||||
if (ABS(diff) < DEG2SHORT_ANGLE(67.5f)) {
|
||||
action = 0;
|
||||
}
|
||||
|
||||
aEGH_set_request_act(ghost, 4, action, 2, 1, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static int aEGH_bitset_func(u16 bit) {
|
||||
u32 player_no = Common_Get(player_no);
|
||||
mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54);
|
||||
mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55);
|
||||
|
||||
if (player_no == mPr_FOREIGNER) {
|
||||
if (ghost_common != NULL) {
|
||||
ghost_common->flags |= bit;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (ghost_save != NULL) {
|
||||
ghost_save->flags |= (u16)(bit << player_no);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int aEGH_bitclr_func(u16 bit) {
|
||||
u32 player_no = Common_Get(player_no);
|
||||
mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54);
|
||||
mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55);
|
||||
|
||||
if (player_no == mPr_FOREIGNER) {
|
||||
if (ghost_common != NULL) {
|
||||
ghost_common->flags &= ~bit;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (ghost_save != NULL) {
|
||||
ghost_save->flags &= ~(u16)(bit << player_no);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static u16 aEGH_bitcheck_func(u16 bit) {
|
||||
u32 player_no = Common_Get(player_no);
|
||||
mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54);
|
||||
mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55);
|
||||
|
||||
if (player_no == mPr_FOREIGNER) {
|
||||
if (ghost_common != NULL) {
|
||||
return ghost_common->flags & bit;
|
||||
}
|
||||
}
|
||||
else if (ghost_save != NULL) {
|
||||
return (u16)(bit << player_no) & ghost_save->flags;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int aEGH_equal_block(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
int bx;
|
||||
int bz;
|
||||
|
||||
mFI_Wpos2BlockNum(&bx, &bz, GET_PLAYER_ACTOR(play)->actor_class.world.position);
|
||||
return bx == ghost->npc_class.actor_class.block_x && bz == ghost->npc_class.actor_class.block_z;
|
||||
}
|
||||
|
||||
static int aEGH_time_over() {
|
||||
return Common_Get(time.now_sec) > (4 * mTM_SECONDS_IN_HOUR);
|
||||
}
|
||||
|
||||
static void aEGH_byebye_check(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
ACTOR* actorx = (ACTOR*)ghost;
|
||||
|
||||
if (
|
||||
mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE &&
|
||||
mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE &&
|
||||
aEGH_time_over() != FALSE
|
||||
) {
|
||||
if (aEGH_equal_block(ghost, play)) {
|
||||
switch (ghost->think_act) {
|
||||
case aEGH_THINK_SPEAK:
|
||||
{
|
||||
aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYEBYE);
|
||||
ghost->msg_no = 0x2EDD;
|
||||
ghost->npc_class.actor_class.talk_distance = 1000.0f;
|
||||
ghost->_9AA = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
case aEGH_THINK_NORMAL_WAIT:
|
||||
case aEGH_THINK_IRAI_AF:
|
||||
case aEGH_THINK_BYE:
|
||||
case aEGH_THINK_WELCOM:
|
||||
{
|
||||
Actor_delete((ACTOR*)ghost);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_irai(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
if (ghost->npc_class.actor_class.player_distance_xz > 220.0f) {
|
||||
aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYE);
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_bye(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
if (ghost->npc_class.actor_class.player_distance_xz < 200.0f) {
|
||||
aEGH_setup_think_proc(ghost, play, aEGH_THINK_WELCOM);
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_byebye(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
if (ghost->alpha == 0) {
|
||||
Actor_delete((ACTOR*)ghost);
|
||||
}
|
||||
else {
|
||||
if (ghost->bye_bye_timer != 0) {
|
||||
ghost->bye_bye_timer--;
|
||||
|
||||
if (ghost->bye_bye_timer == 0) {
|
||||
sAdo_SysTrgStart(0x16C);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (ghost->bye_bye_angle < 30000) {
|
||||
ghost->bye_bye_angle += 60;
|
||||
}
|
||||
|
||||
ghost->npc_class.actor_class.shape_info.rotation.y += ghost->bye_bye_angle;
|
||||
ghost->npc_class.actor_class.world.angle.y = ghost->npc_class.actor_class.shape_info.rotation.y;
|
||||
ghost->npc_class.movement.mv_angl = ghost->npc_class.actor_class.world.angle.y;
|
||||
ghost->npc_class.movement.mv_add_angl = 0;
|
||||
}
|
||||
|
||||
if (ghost->bye_bye_scale_timer != 0) {
|
||||
ghost->bye_bye_scale_timer--;
|
||||
}
|
||||
else {
|
||||
ghost->npc_class.actor_class.scale.x += -0.00004f;
|
||||
ghost->npc_class.actor_class.scale.z = ghost->npc_class.actor_class.scale.x;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_speak_byebye(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
ACTOR* actorx = (ACTOR*)ghost;
|
||||
|
||||
if (
|
||||
mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE &&
|
||||
mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE &&
|
||||
aEGH_equal_block(ghost, play) == FALSE
|
||||
) {
|
||||
aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI);
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
|
||||
(*ghost->think_proc)(ghost, play);
|
||||
aEGH_look_player(ghost, play);
|
||||
}
|
||||
|
||||
static void aEGH_think_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
u8 think_act;
|
||||
|
||||
if (ghost->_9AC) {
|
||||
ghost->_9AC = FALSE;
|
||||
}
|
||||
else {
|
||||
if (aEGH_bitcheck_func(aEGH_BIT_FOUND_GHOST)) {
|
||||
ghost->alpha = 140;
|
||||
think_act = aEGH_THINK_SPEAK;
|
||||
}
|
||||
else {
|
||||
ghost->alpha = 0;
|
||||
think_act = aEGH_THINK_IRAI_AF;
|
||||
}
|
||||
|
||||
actorx->actor_class.status_data.weight = 255;
|
||||
actorx->condition_info.hide_request = FALSE;
|
||||
aEGH_setup_think_proc(ghost, play, think_act);
|
||||
actorx->condition_info.demo_flg = aNPC_COND_DEMO_SKIP_FOOTSTEPS_VFX |
|
||||
aNPC_COND_DEMO_SKIP_FEEL_CHECK |
|
||||
aNPC_COND_DEMO_SKIP_FOOTSTEPS |
|
||||
aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK |
|
||||
aNPC_COND_DEMO_SKIP_HEAD_LOOKAT;
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_normal_wait_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
(*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)ghost, 126, FALSE);
|
||||
ghost->npc_class.draw.main_animation.keyframe.frame_control.mode = cKF_FRAMECONTROL_REPEAT;
|
||||
ghost->npc_class.action.idx = 0;
|
||||
aEGH_set_request_act(ghost, 4, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
static void aEGH_irai_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
ghost->npc_class.actor_class.talk_distance = 80.0f;
|
||||
aEGH_normal_wait_init(ghost, play);
|
||||
ghost->msg_no = 0x2EE2;
|
||||
}
|
||||
|
||||
static void aEGH_irai_af_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
ghost->npc_class.actor_class.talk_distance = 55.0f;
|
||||
ghost->msg_no = 0x2EE7;
|
||||
(*Common_Get(clip).npc_clip->chg_schedule_proc)((NPC_ACTOR*)ghost, play, 5);
|
||||
ghost->npc_class.actor_class.status_data.weight = 80;
|
||||
}
|
||||
|
||||
static void aEGH_bye_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
ghost->npc_class.actor_class.talk_distance = 280.0f;
|
||||
aEGH_normal_wait_init(ghost, play);
|
||||
ghost->msg_no = 0x2ED8;
|
||||
}
|
||||
|
||||
static void aEGH_welcom_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
ghost->npc_class.actor_class.talk_distance = 200.0f;
|
||||
aEGH_normal_wait_init(ghost, play);
|
||||
ghost->msg_no = 0x2ED3;
|
||||
}
|
||||
|
||||
static void aEGH_byebye_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
aEGH_bitclr_func(aEGH_BIT_FOUND_GHOST);
|
||||
ghost->bye_bye_angle = -1000;
|
||||
ghost->bye_bye_timer = 25;
|
||||
ghost->bye_bye_scale_timer = 48;
|
||||
ghost->bye_bye_transparency_delay_timer = 43;
|
||||
aEGH_normal_wait_init(ghost, play);
|
||||
ghost->npc_class.head.lock_flag = TRUE;
|
||||
}
|
||||
|
||||
static aEGH_setup_c dt_tbl[aEGH_THINK_NUM] = {
|
||||
{
|
||||
aEGH_THINK_PROC_BYE,
|
||||
aEGH_THINK_INIT_NORMAL_WAIT,
|
||||
aEGH_TALK_REQUEST_NONE,
|
||||
aEGH_TALK_END_WAIT,
|
||||
aEGH_THINK_NORMAL_WAIT
|
||||
},
|
||||
{
|
||||
aEGH_THINK_PROC_BYEBYE,
|
||||
aEGH_THINK_INIT_BYEBYE,
|
||||
aEGH_TALK_REQUEST_NONE,
|
||||
aEGH_TALK_END_WAIT,
|
||||
aEGH_THINK_IRAI
|
||||
},
|
||||
|
||||
{
|
||||
aEGH_THINK_PROC_NONE,
|
||||
aEGH_THINK_INIT_WELCOM,
|
||||
aEGH_TALK_REQUEST_FORCE,
|
||||
aEGH_TALK_END_WAIT,
|
||||
aEGH_THINK_WELCOM
|
||||
},
|
||||
|
||||
{
|
||||
aEGH_THINK_PROC_BYE,
|
||||
aEGH_THINK_INIT_BYE,
|
||||
aEGH_TALK_REQUEST_FORCE,
|
||||
aEGH_TALK_GIVE_ME_WAIT,
|
||||
aEGH_THINK_NORMAL_WAIT
|
||||
},
|
||||
|
||||
{
|
||||
aEGH_THINK_PROC_IRAI,
|
||||
aEGH_THINK_INIT_IRAI,
|
||||
aEGH_TALK_REQUEST_FORCE,
|
||||
aEGH_TALK_SELECT_WAIT,
|
||||
aEGH_THINK_SPEAK
|
||||
},
|
||||
|
||||
{
|
||||
aEGH_THINK_PROC_SPEAK_BYEBYE,
|
||||
aEGH_THINK_INIT_NORMAL_WAIT,
|
||||
aEGH_TALK_REQUEST_FORCE,
|
||||
aEGH_TALK_SELECT_ROOF,
|
||||
aEGH_THINK_IRAI
|
||||
},
|
||||
|
||||
{
|
||||
aEGH_THINK_PROC_NONE,
|
||||
aEGH_THINK_INIT_IRAI_AF,
|
||||
aEGH_TALK_REQUEST_NORM,
|
||||
aEGH_TALK_END_WAIT,
|
||||
aEGH_THINK_SPEAK
|
||||
}
|
||||
};
|
||||
|
||||
static aEGH_PROC proc_table[aEGH_THINK_PROC_NUM] = {
|
||||
(aEGH_PROC)&none_proc1,
|
||||
&aEGH_irai,
|
||||
&aEGH_bye,
|
||||
&aEGH_byebye,
|
||||
&aEGH_speak_byebye
|
||||
};
|
||||
|
||||
static aEGH_PROC init_table[aEGH_THINK_INIT_NUM] = {
|
||||
(aEGH_PROC)&none_proc1,
|
||||
&aEGH_normal_wait_init,
|
||||
&aEGH_irai_init,
|
||||
&aEGH_irai_af_init,
|
||||
&aEGH_bye_init,
|
||||
&aEGH_welcom_init,
|
||||
&aEGH_byebye_init
|
||||
};
|
||||
|
||||
static void aEGH_setup_think_proc(EV_GHOST_ACTOR* ghost, GAME_PLAY* play, u8 think_act) {
|
||||
static aNPC_TALK_REQUEST_PROC talk_request_table[aEGH_TALK_REQUEST_NUM] = {
|
||||
(aNPC_TALK_REQUEST_PROC)&none_proc1,
|
||||
&aEGH_norm_talk_request,
|
||||
&aEGH_force_talk_request
|
||||
};
|
||||
|
||||
aEGH_setup_c* data = &dt_tbl[think_act];
|
||||
|
||||
ghost->think_act = think_act;
|
||||
ghost->think_proc = proc_table[data->think_proc];
|
||||
ghost->npc_class.talk_info.talk_request_proc = talk_request_table[data->talk_request_proc];
|
||||
ghost->talk_act = data->talk_act;
|
||||
ghost->after_talk_think_act = data->talk_after_act;
|
||||
(*init_table[data->think_init_proc])(ghost, play);
|
||||
ghost->_9A7 = TRUE;
|
||||
}
|
||||
|
||||
static void aEGH_think_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int think_type) {
|
||||
switch (think_type) {
|
||||
case 0:
|
||||
aEGH_think_init_proc(actorx, play);
|
||||
break;
|
||||
case 1:
|
||||
aEGH_think_main_proc(actorx, play);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_schedule_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
actorx->think.think_proc = &aEGH_think_proc;
|
||||
(*Common_Get(clip).npc_clip->think_proc)(actorx, play, aNPC_THINK_SPECIAL, 0);
|
||||
}
|
||||
|
||||
static void aEGH_schedule_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) {
|
||||
if ((*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 1) == FALSE) {
|
||||
(*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 2);
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int sched_type) {
|
||||
switch (sched_type) {
|
||||
case 0:
|
||||
aEGH_schedule_init_proc(actorx, play);
|
||||
break;
|
||||
case 1:
|
||||
aEGH_schedule_main_proc(actorx, play);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,625 @@
|
||||
static int aEGH_hitodama_num() {
|
||||
int i;
|
||||
int num;
|
||||
Private_c* priv = Common_Get(now_private);
|
||||
|
||||
for (i = 0, num = 0; i < mEv_GHOST_HITODAMA_NUM; i++) {
|
||||
int n = mPr_GetPossessionItemSumWithCond(priv, ITM_SPIRIT0 + i, mPr_ITEM_COND_NORMAL);
|
||||
|
||||
num += n * (i + 1);
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
static void aEGH_okoruhito() {
|
||||
static u8 pf_string[mMsg_FREE_STRING_LEN];
|
||||
mEv_gst_c* ghost_ev = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54);
|
||||
|
||||
mString_Load_StringFromRom(pf_string, sizeof(pf_string), 0x62E + ghost_ev->okoruhito_str_no);
|
||||
mMsg_Set_item_str(mMsg_Get_base_window_p(), mMsg_FREE_STR1, pf_string, sizeof(pf_string));
|
||||
}
|
||||
|
||||
static void aEGH_delete_hitodama() {
|
||||
int i;
|
||||
int num;
|
||||
Private_c* priv = Common_Get(now_private);
|
||||
|
||||
for (i = 0, num = 0; i < mEv_GHOST_HITODAMA_NUM; i++) {
|
||||
int idx = mPr_GetPossessionItemIdxWithCond(priv, ITM_SPIRIT0 + i, mPr_ITEM_COND_NORMAL);
|
||||
|
||||
while (idx != -1) {
|
||||
mPr_SetPossessionItem(Common_Get(now_private), idx, EMPTY_NO, mPr_ITEM_COND_NORMAL);
|
||||
idx = mPr_GetPossessionItemIdxWithCond(priv, ITM_SPIRIT0 + i, mPr_ITEM_COND_NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static mActor_name_t aEGH_get_collect(int selected_idx, mActor_name_t* list) {
|
||||
while (*list != EMPTY_NO) {
|
||||
if (mSP_CollectCheck(*list) == FALSE) {
|
||||
if (selected_idx > 0) {
|
||||
selected_idx--;
|
||||
}
|
||||
else {
|
||||
return *list;
|
||||
}
|
||||
}
|
||||
|
||||
list++;
|
||||
}
|
||||
|
||||
return EMPTY_NO;
|
||||
}
|
||||
|
||||
static void aEGH_check_collect_num(int* list_num, int* uncollect_num, mActor_name_t* list) {
|
||||
*list_num = 0;
|
||||
*uncollect_num = 0;
|
||||
|
||||
while (*list != EMPTY_NO) {
|
||||
(*list_num)++;
|
||||
|
||||
if (mSP_CollectCheck(*list) == FALSE) {
|
||||
(*uncollect_num)++;
|
||||
}
|
||||
|
||||
list++;
|
||||
}
|
||||
}
|
||||
|
||||
extern mActor_name_t ftr_listA[];
|
||||
extern mActor_name_t ftr_listB[];
|
||||
extern mActor_name_t ftr_listC[];
|
||||
extern mActor_name_t ftr_listEvent[];
|
||||
extern mActor_name_t ftr_listLottery[];
|
||||
extern mActor_name_t carpet_listA[];
|
||||
extern mActor_name_t carpet_listB[];
|
||||
extern mActor_name_t carpet_listC[];
|
||||
extern mActor_name_t carpet_listEvent[];
|
||||
extern mActor_name_t wall_listA[];
|
||||
extern mActor_name_t wall_listB[];
|
||||
extern mActor_name_t wall_listC[];
|
||||
extern mActor_name_t wall_listEvent[];
|
||||
extern mActor_name_t cloth_listA[];
|
||||
extern mActor_name_t cloth_listB[];
|
||||
extern mActor_name_t cloth_listC[];
|
||||
extern mActor_name_t cloth_listEvent[];
|
||||
extern mActor_name_t binsen_listA[];
|
||||
extern mActor_name_t binsen_listB[];
|
||||
extern mActor_name_t binsen_listC[];
|
||||
|
||||
static mActor_name_t list_haniwa[HANIWA_NUM + 1] = {
|
||||
FTR_HANIWA000_SOUTH,
|
||||
FTR_HANIWA001_SOUTH,
|
||||
FTR_HANIWA002_SOUTH,
|
||||
FTR_HANIWA003_SOUTH,
|
||||
FTR_HANIWA004_SOUTH,
|
||||
FTR_HANIWA005_SOUTH,
|
||||
FTR_HANIWA006_SOUTH,
|
||||
FTR_HANIWA007_SOUTH,
|
||||
FTR_HANIWA008_SOUTH,
|
||||
FTR_HANIWA009_SOUTH,
|
||||
FTR_HANIWA010_SOUTH,
|
||||
FTR_HANIWA011_SOUTH,
|
||||
FTR_HANIWA012_SOUTH,
|
||||
FTR_HANIWA013_SOUTH,
|
||||
FTR_HANIWA014_SOUTH,
|
||||
FTR_HANIWA015_SOUTH,
|
||||
FTR_HANIWA016_SOUTH,
|
||||
FTR_HANIWA017_SOUTH,
|
||||
FTR_HANIWA018_SOUTH,
|
||||
FTR_HANIWA019_SOUTH,
|
||||
FTR_HANIWA020_SOUTH,
|
||||
FTR_HANIWA021_SOUTH,
|
||||
FTR_HANIWA022_SOUTH,
|
||||
FTR_HANIWA023_SOUTH,
|
||||
FTR_HANIWA024_SOUTH,
|
||||
FTR_HANIWA025_SOUTH,
|
||||
FTR_HANIWA026_SOUTH,
|
||||
FTR_HANIWA027_SOUTH,
|
||||
FTR_HANIWA028_SOUTH,
|
||||
FTR_HANIWA029_SOUTH,
|
||||
FTR_HANIWA030_SOUTH,
|
||||
FTR_HANIWA031_SOUTH,
|
||||
FTR_HANIWA032_SOUTH,
|
||||
FTR_HANIWA033_SOUTH,
|
||||
FTR_HANIWA034_SOUTH,
|
||||
FTR_HANIWA035_SOUTH,
|
||||
FTR_HANIWA036_SOUTH,
|
||||
FTR_HANIWA037_SOUTH,
|
||||
FTR_HANIWA038_SOUTH,
|
||||
FTR_HANIWA039_SOUTH,
|
||||
FTR_HANIWA040_SOUTH,
|
||||
FTR_HANIWA041_SOUTH,
|
||||
FTR_HANIWA042_SOUTH,
|
||||
FTR_HANIWA043_SOUTH,
|
||||
FTR_HANIWA044_SOUTH,
|
||||
FTR_HANIWA045_SOUTH,
|
||||
FTR_HANIWA046_SOUTH,
|
||||
FTR_HANIWA047_SOUTH,
|
||||
FTR_HANIWA048_SOUTH,
|
||||
FTR_HANIWA049_SOUTH,
|
||||
FTR_HANIWA050_SOUTH,
|
||||
FTR_HANIWA051_SOUTH,
|
||||
FTR_HANIWA052_SOUTH,
|
||||
FTR_HANIWA053_SOUTH,
|
||||
FTR_HANIWA054_SOUTH,
|
||||
FTR_HANIWA055_SOUTH,
|
||||
FTR_HANIWA056_SOUTH,
|
||||
FTR_HANIWA057_SOUTH,
|
||||
FTR_HANIWA058_SOUTH,
|
||||
FTR_HANIWA059_SOUTH,
|
||||
FTR_HANIWA060_SOUTH,
|
||||
FTR_HANIWA061_SOUTH,
|
||||
FTR_HANIWA062_SOUTH,
|
||||
FTR_HANIWA063_SOUTH,
|
||||
FTR_HANIWA064_SOUTH,
|
||||
FTR_HANIWA065_SOUTH,
|
||||
FTR_HANIWA066_SOUTH,
|
||||
FTR_HANIWA067_SOUTH,
|
||||
FTR_HANIWA068_SOUTH,
|
||||
FTR_HANIWA069_SOUTH,
|
||||
FTR_HANIWA070_SOUTH,
|
||||
FTR_HANIWA071_SOUTH,
|
||||
FTR_HANIWA072_SOUTH,
|
||||
FTR_HANIWA073_SOUTH,
|
||||
FTR_HANIWA074_SOUTH,
|
||||
FTR_HANIWA075_SOUTH,
|
||||
FTR_HANIWA076_SOUTH,
|
||||
FTR_HANIWA077_SOUTH,
|
||||
FTR_HANIWA078_SOUTH,
|
||||
FTR_HANIWA079_SOUTH,
|
||||
FTR_HANIWA080_SOUTH,
|
||||
FTR_HANIWA081_SOUTH,
|
||||
FTR_HANIWA082_SOUTH,
|
||||
FTR_HANIWA083_SOUTH,
|
||||
FTR_HANIWA084_SOUTH,
|
||||
FTR_HANIWA085_SOUTH,
|
||||
FTR_HANIWA086_SOUTH,
|
||||
FTR_HANIWA087_SOUTH,
|
||||
FTR_HANIWA088_SOUTH,
|
||||
FTR_HANIWA089_SOUTH,
|
||||
FTR_HANIWA090_SOUTH,
|
||||
FTR_HANIWA091_SOUTH,
|
||||
FTR_HANIWA092_SOUTH,
|
||||
FTR_HANIWA093_SOUTH,
|
||||
FTR_HANIWA094_SOUTH,
|
||||
FTR_HANIWA095_SOUTH,
|
||||
FTR_HANIWA096_SOUTH,
|
||||
FTR_HANIWA097_SOUTH,
|
||||
FTR_HANIWA098_SOUTH,
|
||||
FTR_HANIWA099_SOUTH,
|
||||
FTR_HANIWA100_SOUTH,
|
||||
FTR_HANIWA101_SOUTH,
|
||||
FTR_HANIWA102_SOUTH,
|
||||
FTR_HANIWA103_SOUTH,
|
||||
FTR_HANIWA104_SOUTH,
|
||||
FTR_HANIWA105_SOUTH,
|
||||
FTR_HANIWA106_SOUTH,
|
||||
FTR_HANIWA107_SOUTH,
|
||||
FTR_HANIWA108_SOUTH,
|
||||
FTR_HANIWA109_SOUTH,
|
||||
FTR_HANIWA110_SOUTH,
|
||||
FTR_HANIWA111_SOUTH,
|
||||
FTR_HANIWA112_SOUTH,
|
||||
FTR_HANIWA113_SOUTH,
|
||||
FTR_HANIWA114_SOUTH,
|
||||
FTR_HANIWA115_SOUTH,
|
||||
FTR_HANIWA116_SOUTH,
|
||||
FTR_HANIWA117_SOUTH,
|
||||
FTR_HANIWA118_SOUTH,
|
||||
FTR_HANIWA119_SOUTH,
|
||||
FTR_HANIWA120_SOUTH,
|
||||
FTR_HANIWA121_SOUTH,
|
||||
FTR_HANIWA122_SOUTH,
|
||||
FTR_HANIWA123_SOUTH,
|
||||
FTR_HANIWA124_SOUTH,
|
||||
FTR_HANIWA125_SOUTH,
|
||||
FTR_HANIWA126_SOUTH,
|
||||
EMPTY_NO /* end of list */
|
||||
};
|
||||
|
||||
static mActor_name_t umbrella_list[UMBRELLA_NUM + 1] = {
|
||||
ITM_UMBRELLA00,
|
||||
ITM_UMBRELLA01,
|
||||
ITM_UMBRELLA02,
|
||||
ITM_UMBRELLA03,
|
||||
ITM_UMBRELLA04,
|
||||
ITM_UMBRELLA05,
|
||||
ITM_UMBRELLA06,
|
||||
ITM_UMBRELLA07,
|
||||
ITM_UMBRELLA08,
|
||||
ITM_UMBRELLA09,
|
||||
ITM_UMBRELLA10,
|
||||
ITM_UMBRELLA11,
|
||||
ITM_UMBRELLA12,
|
||||
ITM_UMBRELLA13,
|
||||
ITM_UMBRELLA14,
|
||||
ITM_UMBRELLA15,
|
||||
ITM_UMBRELLA16,
|
||||
ITM_UMBRELLA17,
|
||||
ITM_UMBRELLA18,
|
||||
ITM_UMBRELLA19,
|
||||
ITM_UMBRELLA20,
|
||||
ITM_UMBRELLA21,
|
||||
ITM_UMBRELLA22,
|
||||
ITM_UMBRELLA23,
|
||||
ITM_UMBRELLA24,
|
||||
ITM_UMBRELLA25,
|
||||
ITM_UMBRELLA26,
|
||||
ITM_UMBRELLA27,
|
||||
ITM_UMBRELLA28,
|
||||
ITM_UMBRELLA29,
|
||||
ITM_UMBRELLA30,
|
||||
ITM_UMBRELLA31,
|
||||
EMPTY_NO /* end of list */
|
||||
};
|
||||
|
||||
static mActor_name_t aEGH_not_collect_get() {
|
||||
static mActor_name_t* item_list[aEGH_ITEM_LIST_NUM] = {
|
||||
ftr_listA,
|
||||
ftr_listB,
|
||||
ftr_listC,
|
||||
ftr_listEvent,
|
||||
ftr_listLottery,
|
||||
carpet_listA,
|
||||
carpet_listB,
|
||||
carpet_listC,
|
||||
carpet_listEvent,
|
||||
wall_listA,
|
||||
wall_listB,
|
||||
wall_listC,
|
||||
wall_listEvent,
|
||||
cloth_listA,
|
||||
cloth_listB,
|
||||
cloth_listC,
|
||||
cloth_listEvent,
|
||||
binsen_listA,
|
||||
binsen_listB,
|
||||
binsen_listC,
|
||||
list_haniwa,
|
||||
umbrella_list
|
||||
};
|
||||
|
||||
int list_num_tbl[aEGH_ITEM_LIST_NUM];
|
||||
int uncollect_num_tbl[aEGH_ITEM_LIST_NUM];
|
||||
int no_uncollected_flag = FALSE;
|
||||
int selected_idx;
|
||||
mActor_name_t item;
|
||||
int i;
|
||||
int total_count;
|
||||
|
||||
/* Calculate total items in each list and uncollected items in each list */
|
||||
for (i = 0; i < aEGH_ITEM_LIST_NUM; i++) {
|
||||
aEGH_check_collect_num(&list_num_tbl[i], &uncollect_num_tbl[i], item_list[i]);
|
||||
}
|
||||
|
||||
for (i = 0, total_count = 0; i < aEGH_ITEM_LIST_NUM; i++) {
|
||||
total_count += uncollect_num_tbl[i];
|
||||
}
|
||||
|
||||
/* If no uncollected items remain, select one at random from all lists */
|
||||
if (total_count == 0) {
|
||||
no_uncollected_flag = TRUE; /* all items collected */
|
||||
for (i = 0, total_count = 0; i < aEGH_ITEM_LIST_NUM; i++) {
|
||||
total_count += list_num_tbl[i];
|
||||
}
|
||||
}
|
||||
|
||||
selected_idx = RANDOM(total_count);
|
||||
if (no_uncollected_flag) {
|
||||
/* Transform the absolute idx into the list idx by removing all entries up to the selected list */
|
||||
for (i = 0; i < aEGH_ITEM_LIST_NUM && selected_idx >= list_num_tbl[i]; i++) {
|
||||
selected_idx -= list_num_tbl[i];
|
||||
}
|
||||
|
||||
if (i != aEGH_ITEM_LIST_NUM) {
|
||||
item = item_list[i][selected_idx];
|
||||
}
|
||||
else {
|
||||
item = ITM_FOOD_PEACH; /* If we somehow failed to select an item, we'll give them a peach */
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* Transform the absolute idx into the list idx by removing all entries up to the selected list */
|
||||
for (i = 0; i < aEGH_ITEM_LIST_NUM && selected_idx >= uncollect_num_tbl[i]; i++) {
|
||||
selected_idx -= uncollect_num_tbl[i];
|
||||
}
|
||||
|
||||
if (i != aEGH_ITEM_LIST_NUM) {
|
||||
item = aEGH_get_collect(selected_idx, item_list[i]); /* Get the uncollected item from the list */
|
||||
|
||||
if (item == EMPTY_NO) {
|
||||
item = ITM_FOOD_APPLE; /* If we somehow failed to get an uncollected item, we'll give them an apple */
|
||||
}
|
||||
}
|
||||
else {
|
||||
item = ITM_FOOD_PEACH; /* If we somehow failed to select an item, we'll give them a peach */
|
||||
}
|
||||
}
|
||||
|
||||
return mRmTp_FtrItemNo2Item1ItemNo(item, TRUE);
|
||||
}
|
||||
|
||||
static void aEGH_give_me_wait(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9);
|
||||
|
||||
switch (order) {
|
||||
case 1:
|
||||
{
|
||||
mPlib_request_main_give_type1((GAME*)play, ITM_SPIRIT0, 7, FALSE, FALSE);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 2);
|
||||
mMsg_Set_LockContinue(mMsg_Get_base_window_p());
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3);
|
||||
aEGH_delete_hitodama();
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
if (Common_Get(clip).handOverItem_clip->master_actor == NULL) {
|
||||
mMsg_Unset_LockContinue(mMsg_Get_base_window_p());
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0);
|
||||
aEGH_change_talk_proc(ghost, aEGH_TALK_SELECT_WAIT);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_select_wait(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9);
|
||||
mMsg_Window_c* msg_p = mMsg_Get_base_window_p();
|
||||
mEv_gst_c* ghost_data = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54);
|
||||
|
||||
if (order == 1 && mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p())) {
|
||||
ghost->after_talk_think_act = 1;
|
||||
ghost_data->flags |= 0x8000;
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0);
|
||||
|
||||
switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) {
|
||||
case mChoice_CHOICE0: /* Clear weeds */
|
||||
{
|
||||
u32 num_weeds = mFI_GetItemNumField(GRASS_A, GRASS_C);
|
||||
|
||||
if (num_weeds < 50) {
|
||||
mMsg_Set_continue_msg_num(msg_p, 0x2EF1);
|
||||
}
|
||||
else if (num_weeds < 150) {
|
||||
mMsg_Set_continue_msg_num(msg_p, 0x2EF2);
|
||||
}
|
||||
else if (num_weeds < 450) {
|
||||
mMsg_Set_continue_msg_num(msg_p, 0x2EF3);
|
||||
}
|
||||
else if (num_weeds < 900) {
|
||||
mMsg_Set_continue_msg_num(msg_p, 0x2EF4);
|
||||
}
|
||||
else {
|
||||
mMsg_Set_continue_msg_num(msg_p, 0x2EF5);
|
||||
}
|
||||
|
||||
aEGH_change_talk_proc(ghost, aEGH_TALK_CLEAR_GRASS);
|
||||
break;
|
||||
}
|
||||
|
||||
case mChoice_CHOICE1:
|
||||
{
|
||||
aEGH_change_talk_proc(ghost, aEGH_TALK_SELECT_ROOF);
|
||||
ghost->roof_pal = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case mChoice_CHOICE2:
|
||||
{
|
||||
u8 name[mIN_ITEM_NAME_LEN];
|
||||
|
||||
aEGH_change_talk_proc(ghost, aEGH_TALK_GIVE_YOU_WAIT);
|
||||
ghost->give_item = aEGH_not_collect_get();
|
||||
mIN_copy_name_str(name, ghost->give_item);
|
||||
mMsg_Set_item_str_art(msg_p, mMsg_ITEM_STR0, name, mIN_ITEM_NAME_LEN, mIN_get_item_article(ghost->give_item));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_select_roof(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9);
|
||||
int arrange_idx = mHS_get_arrange_idx(Common_Get(player_no));
|
||||
mHm_hs_c* home = Save_GetPointer(homes[arrange_idx]);
|
||||
|
||||
if (order == 1 && mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p())) {
|
||||
int selected;
|
||||
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0);
|
||||
selected = mChoice_Get_ChoseNum(mChoice_Get_base_window_p());
|
||||
|
||||
if (selected >= mChoice_CHOICE3) {
|
||||
ghost->roof_pal += 3;
|
||||
|
||||
if (ghost->roof_pal >= mSP_ROOF_COLOR_NUM) {
|
||||
ghost->roof_pal = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
ghost->roof_pal += (u8)selected;
|
||||
home->outlook_pal = ghost->roof_pal;
|
||||
|
||||
/* Only update the 'next outlook' palette if the player doesn't have a coat of paint already scheduled */
|
||||
if ((Common_Get(now_private)->state_flags & mPr_FLAG_UPDATE_OUTLOOK_PENDING) == 0) {
|
||||
home->next_outlook_pal = ghost->roof_pal;
|
||||
}
|
||||
|
||||
aEGH_change_talk_proc(ghost, aEGH_TALK_END_WAIT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_give_you_wait(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) {
|
||||
int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1);
|
||||
|
||||
if (order == 2) {
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 0, ghost->give_item);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 1, 7);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 2, 0);
|
||||
mPr_SetFreePossessionItem(Common_Get(now_private), ghost->give_item, mPr_ITEM_COND_NORMAL);
|
||||
aEGH_change_talk_proc(ghost, aEGH_TALK_END_WAIT);
|
||||
}
|
||||
}
|
||||
|
||||
static int aEGH_change_talk_proc(EV_GHOST_ACTOR* ghost, u8 talk_act) {
|
||||
ghost->talk_act = talk_act;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void aEGH_set_force_talk_info(ACTOR* actorx) {
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55);
|
||||
|
||||
mDemo_Set_msg_num(ghost->msg_no + RANDOM(5));
|
||||
aEGH_okoruhito();
|
||||
|
||||
switch (ghost->msg_no) {
|
||||
case 0x2EE2:
|
||||
{
|
||||
mDemo_Set_talk_turn(TRUE);
|
||||
mDemo_Set_camera(CAMERA2_PROCESS_TALK);
|
||||
|
||||
if (aEGH_bitcheck_func(aEGH_BIT_FOUND_GHOST) == FALSE) {
|
||||
sAdo_SysTrgStart(0x6B);
|
||||
aEGH_bitset_func(aEGH_BIT_FOUND_GHOST);
|
||||
}
|
||||
|
||||
ghost_common->flags |= mEv_GHOST_FLAG_ACTIVE;
|
||||
break;
|
||||
}
|
||||
|
||||
case 0x2EDD:
|
||||
{
|
||||
mDemo_Set_talk_turn(TRUE);
|
||||
mDemo_Set_camera(CAMERA2_PROCESS_NORMAL);
|
||||
break;
|
||||
}
|
||||
|
||||
case 0x2ED3:
|
||||
case 0x2ED8:
|
||||
{
|
||||
mDemo_Set_talk_turn(FALSE);
|
||||
mDemo_Set_camera(CAMERA2_PROCESS_NORMAL);
|
||||
mMsg_sound_set_voice_click(mMsg_Get_base_window_p());
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
mDemo_Set_talk_turn(FALSE);
|
||||
mDemo_Set_camera(CAMERA2_PROCESS_NORMAL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
aEGH_change_talk_proc(ghost, aEGH_TALK_END_WAIT);
|
||||
}
|
||||
|
||||
static void aEGH_force_talk_request(ACTOR* actorx, GAME* game) {
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
GAME_PLAY* play = (GAME_PLAY*)game;
|
||||
f32 dist = GET_PLAYER_ACTOR(play)->actor_class.world.position.y - actorx->world.position.y;
|
||||
|
||||
if (dist < 0.0f) {
|
||||
dist = -dist;
|
||||
}
|
||||
|
||||
if (!(
|
||||
!(ghost->_9A7 == FALSE && actorx->player_distance_xz < actorx->talk_distance) ||
|
||||
!(dist < 60.0f) && (ghost->_9AA == FALSE)
|
||||
)) {
|
||||
mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aEGH_set_force_talk_info);
|
||||
}
|
||||
else {
|
||||
ghost->_9A7 = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static void aEGH_set_norm_talk_info(ACTOR* actorx) {
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
int hitodama_num;
|
||||
int msg_no;
|
||||
|
||||
aEGH_okoruhito();
|
||||
mDemo_Set_talk_turn(TRUE);
|
||||
mDemo_Set_camera(CAMERA2_PROCESS_TALK);
|
||||
aEGH_change_talk_proc(ghost, aEGH_TALK_END_WAIT);
|
||||
|
||||
hitodama_num = aEGH_hitodama_num();
|
||||
if (hitodama_num == 0) {
|
||||
msg_no = 0x2EE7 + RANDOM(5);
|
||||
}
|
||||
else if (hitodama_num >= mEv_GHOST_HITODAMA_NUM) {
|
||||
msg_no = 0x2EF0;
|
||||
aEGH_change_talk_proc(ghost, aEGH_TALK_GIVE_ME_WAIT);
|
||||
Save_Get(event_save_common).ghost_day = 0;
|
||||
}
|
||||
else {
|
||||
msg_no = 0x2EEB + hitodama_num;
|
||||
}
|
||||
|
||||
mDemo_Set_msg_num(msg_no);
|
||||
}
|
||||
|
||||
static void aEGH_norm_talk_request(ACTOR* actorx, GAME* game) {
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
|
||||
if (ghost->_9A7 == FALSE) {
|
||||
mDemo_Request(mDemo_TYPE_TALK, actorx, &aEGH_set_norm_talk_info);
|
||||
}
|
||||
else {
|
||||
ghost->_9A7 = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static int aEGH_talk_init(ACTOR* actorx, GAME* game) {
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
|
||||
ghost->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1;
|
||||
mDemo_Set_ListenAble();
|
||||
mDemo_Start(actorx);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
typedef void (*aEGH_TALK_PROC)(EV_GHOST_ACTOR*, GAME_PLAY*);
|
||||
|
||||
static int aEGH_talk_end_chk(ACTOR* actorx, GAME* game) {
|
||||
static aEGH_TALK_PROC proc[aEGH_TALK_NUM] = {
|
||||
(aEGH_TALK_PROC)&none_proc1,
|
||||
&aEGH_give_me_wait,
|
||||
&aEGH_select_wait,
|
||||
&aEGH_select_roof,
|
||||
&aEGH_give_you_wait,
|
||||
(aEGH_TALK_PROC)&none_proc1
|
||||
};
|
||||
|
||||
EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx;
|
||||
GAME_PLAY* play = (GAME_PLAY*)game;
|
||||
int res = FALSE;
|
||||
|
||||
(*proc[ghost->talk_act])(ghost, play);
|
||||
|
||||
if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) {
|
||||
if (ghost->talk_act == aEGH_TALK_CLEAR_GRASS) {
|
||||
Save_Set(clear_grass, TRUE);
|
||||
}
|
||||
|
||||
aEGH_setup_think_proc(ghost, play, ghost->after_talk_think_act);
|
||||
|
||||
if (ghost->melody_inst != 0) {
|
||||
ghost->npc_class.talk_info.melody_inst = ghost->melody_inst;
|
||||
ghost->melody_inst = 0;
|
||||
}
|
||||
|
||||
res = TRUE;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1219,7 +1219,7 @@ static void init_weekly_event() {
|
||||
sched_date = after_n_day(today_date.raw, ofs - rtc_time->weekday);
|
||||
event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date;
|
||||
Save_Get(event_save_common).weekly_event.type = mEv_EVENT_DOZAEMON; // Gulliver
|
||||
Save_Get(event_save_common).current_event_state = 0;
|
||||
Save_Get(event_save_common).dozaemon_completed = FALSE;
|
||||
}
|
||||
|
||||
/* Check if Guillver should spawn today */
|
||||
|
||||
@@ -1082,7 +1082,7 @@ extern int mMpswd_check_present_user(mActor_name_t item) {
|
||||
price = mSP_ItemNo2ItemPrice(item);
|
||||
}
|
||||
}
|
||||
else if (item >= ITM_GELATO_UMBRELLA && item <= ITM_MY_ORG_UMBRELLA7) {
|
||||
else if (item >= ITM_UMBRELLA00 && item <= ITM_MY_ORG_UMBRELLA7) {
|
||||
price = mSP_ItemNo2ItemPrice(item);
|
||||
}
|
||||
else if (
|
||||
@@ -1193,7 +1193,7 @@ static int mMpswd_check_present_other(mActor_name_t item) {
|
||||
case ITEM1_CAT_TOOL:
|
||||
{
|
||||
/* allow umbrellas */
|
||||
if (item >= ITM_GELATO_UMBRELLA && item <= ITM_FLAME_UMBRELLA) {
|
||||
if (item >= ITM_UMBRELLA00 && item <= ITM_UMBRELLA31) {
|
||||
res = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
+1
-1
@@ -2074,7 +2074,7 @@ extern void mSP_RandomUmbSelect(mActor_name_t* umb_list, int count) {
|
||||
int set = FALSE;
|
||||
|
||||
while (!set) {
|
||||
mActor_name_t umb = ITM_GELATO_UMBRELLA + RANDOM(UMBRELLA_NUM);
|
||||
mActor_name_t umb = ITM_UMBRELLA00 + RANDOM(UMBRELLA_NUM);
|
||||
|
||||
if (mSP_GoodsExistAlready(umb_list, count, umb) == FALSE) {
|
||||
umb_list[i] = umb;
|
||||
|
||||
+2
-2
@@ -744,7 +744,7 @@ static void mSCR_talk_pickup_all(TAISOU_NPC0_ACTOR* taisou_actor, GAME_PLAY* pla
|
||||
switch (mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9)) {
|
||||
case 1:
|
||||
{
|
||||
mPlib_request_main_give_type1(play, ITM_EXCERCISE_CARD00, 7, FALSE, FALSE);
|
||||
mPlib_request_main_give_type1((GAME*)play, ITM_EXCERCISE_CARD00, 7, FALSE, FALSE);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 2);
|
||||
mMsg_Set_LockContinue(mMsg_Get_base_window_p());
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3);
|
||||
@@ -772,7 +772,7 @@ static void mSCR_talk_inspection(TAISOU_NPC0_ACTOR* taisou_actor, GAME_PLAY* pla
|
||||
switch (order) {
|
||||
case 1:
|
||||
{
|
||||
mPlib_request_main_give_type1(play, ITM_EXCERCISE_CARD00, 8, FALSE, FALSE);
|
||||
mPlib_request_main_give_type1((GAME*)play, ITM_EXCERCISE_CARD00, 8, FALSE, FALSE);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 2);
|
||||
mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3);
|
||||
mMsg_Set_continue_msg_num(msg_win, 0x3422 + taisou_actor->talk_state);
|
||||
|
||||
+2
-2
@@ -53,8 +53,8 @@ extern void mTD_player_keydata_init(GAME_PLAY* play) {
|
||||
else if (tool == ITM_ROD) {
|
||||
tool = ITM_ROD;
|
||||
}
|
||||
else if (tool == ITM_GELATO_UMBRELLA) {
|
||||
tool = ITM_GELATO_UMBRELLA;
|
||||
else if (tool == ITM_UMBRELLA00) {
|
||||
tool = ITM_UMBRELLA00;
|
||||
}
|
||||
|
||||
mPlib_SetData2_controller_data_for_title_demo(tool);
|
||||
|
||||
Reference in New Issue
Block a user