1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
|
#ifndef D_A_NPC_BM1_H
#define D_A_NPC_BM1_H
#include "JSystem/JParticle/JPAEmitter.h"
#include "d/d_npc.h"
#include "f_op/f_op_actor.h"
class daNpc_Bm1_c : public fopNpc_npc_c {
public:
typedef s8 SpecificType;
enum {
SPECIFIC_TYPE_Quill_0_e,
SPECIFIC_TYPE_Quill_1_e,
SPECIFIC_TYPE_Quill_2_e,
SPECIFIC_TYPE_Quill_3_e,
SPECIFIC_TYPE_Quill_4_e,
SPECIFIC_TYPE_Akoot_e,
SPECIFIC_TYPE_Skett_e,
SPECIFIC_TYPE_Basht_e,
SPECIFIC_TYPE_Bisht_e,
SPECIFIC_TYPE_Hoskit_e,
SPECIFIC_TYPE_Ilari_0xA_e,
SPECIFIC_TYPE_Ilari_0xB_e,
SPECIFIC_TYPE_Ilari_0xC_e,
SPECIFIC_TYPE_Pashli_e,
SPECIFIC_TYPE_Namali_e,
SPECIFIC_TYPE_Kogoli_e,
SPECIFIC_TYPE_Invalid_e = 0xFF
};
typedef s8 Type;
enum {
TYPE_Uninitialized_e,
TYPE_Quill_e,
TYPE_Akoot_e,
TYPE_Skett_e,
TYPE_Basht_e,
TYPE_Bisht_e,
TYPE_Hoskit_e,
TYPE_Ilari_e,
TYPE_Pashli_e,
TYPE_Namali_e,
TYPE_Kogoli_e,
TYPE_Invalid_e = 0xFF,
};
struct anm_prm_c {
/* 0x00 */ s8 anmNum;
/* 0x01 */ s8 btpNum;
/* 0x04 */ f32 morf;
/* 0x08 */ f32 speed;
/* 0x0C */ int loopMode;
/* 0x10 */ BOOL hasArms;
};
typedef BOOL (daNpc_Bm1_c::*ActionFunc)(void*);
bool IamKakkuto() { return mSpecificType == SPECIFIC_TYPE_Akoot_e; }
bool IamSukketo() { return mSpecificType == SPECIFIC_TYPE_Skett_e; }
void clr_manzai() { mbManzai = false; }
bool getOdoroki() { return m880; }
s8 getStt() { return mStatus; }
u16 get_oldMsgStat() { return mOldMsgStat; }
void setFocus() { m882 = true; }
void setTelescopeDemo() { m881 = true; }
void set_manzai() { mbManzai = true; }
void nodeWngControl(J3DNode*, J3DModel*);
void nodeArmControl(J3DNode*, J3DModel*);
void nodeBm1Control(J3DNode*, J3DModel*);
bool chk_appCnd();
bool init_PST_0();
bool init_PST_1();
bool init_PST_2();
bool init_PST_3();
bool init_PST_4();
bool init_BMB_0();
bool init_BMB_1();
bool init_BMB_2();
bool init_BMC_0();
bool init_BMC_1();
bool init_BMC_2();
bool init_BMC_3();
bool init_BMD_0();
bool init_BMD_1();
bool init_SKT_0();
bool init_KKT_0();
bool createInit();
void setMtx(bool);
char* anmNum_toResID(int);
char* headAnmNum_toResID(int);
char* wingAnmNum_toResID(int);
char* btpNum_toResID(int);
bool setBtp(bool, int);
bool iniTexPttrnAnm(bool);
void plyTexPttrnAnm();
void setAnm_tex(s8);
BOOL setAnm_anm(anm_prm_c*);
void setAnm_NUM(int, int);
bool setAnm();
void setPlaySpd(float);
void chg_anmTag();
void control_anmTag();
void chg_anmAtr(u8);
void control_anmAtr();
void setAnm_ATR(int);
void anmAtr(u16);
void eventOrder();
void checkOrder();
u8 chk_manzai();
bool chk_talk();
bool chk_partsNotMove();
void lookBack();
u16 next_msgStatus(u32*);
s8 getBitMask();
u32 getMsg_PST_1();
u32 getMsg_PST_3();
u32 getMsg_SKT_0();
u32 getMsg_KKT_0();
u32 getMsg_BMB_0();
u32 getMsg_BMB_1();
u32 getMsg_BMB_2();
u32 getMsg_BMC_0();
u32 getMsg_BMC_2();
u32 getMsg_BMC_3();
u32 getMsg_BMD_0();
u32 getMsg_BMD_1();
u32 getMsg();
bool chkAttention();
void setAttention(bool);
fopAc_ac_c* searchByID(fpc_ProcID);
bool partner_srch_sub(fpcLyIt_JudgeFunc);
void partner_srch();
u32 bm_movPass(bool);
void bm_setFlyAnm();
void bm_clcFlySpd();
void bm_clcMovSpd();
bool bm_flyMove();
void bm_nMove();
void setPrtcl_Flyaway();
void delPrtcl_Flyaway();
void setPrtcl_Land0();
void delPrtcl_Land0();
void setPrtcl_Hane0();
void flwPrtcl_Hane0();
void delPrtcl_Hane0();
void setPrtcl_Hane1();
void flwPrtcl_Hane1();
void delPrtcl_Hane1();
bool decideType(int, int);
void eInit_setLocFlag(int*);
void eInit_setShapeAngleY(int*, short);
void eInit_setEvTimer(int*);
cXyz eInit_calcRelativPos(cXyz*, int*);
void eInit_ATTENTION_(int*, int*, int*, cXyz*, int*, int*, int*);
void eInit_SET_PLYER_GOL_(int*, cXyz*, int*);
float eInit_prmFloat(float*, float);
void eInit_FLY_(int*, float*, float*, float*, float*);
void eInit_DEL_ACTOR_();
void eInit_WLK_(int*, float*, float*, cXyz*, int*, int*, int*);
void eInit_INI_EVN_1_();
void eInit_SET_NXT_PTH_INF_();
void eInit_SET_ANM_(int*);
void eInit_MOV_PTH_POINT_(int*, int*, int*, int*);
void event_actionInit(int);
bool eMove_ATTENTION_();
bool eMove_KMA_FLY_();
bool eMove_FLY_();
bool eMove_WLK_();
bool event_action();
void cut_init_360_TRN(int);
bool cut_move_360_TRN();
void privateCut(int);
void endEvent();
BOOL isEventEntry();
void event_proc(int);
BOOL set_action(ActionFunc, void*);
BOOL chk_action(ActionFunc); // Unused
void setStt(s8);
BOOL d_wait();
BOOL lookup();
BOOL orooro();
BOOL wait_1();
BOOL talk_1();
BOOL talk_2();
BOOL manzai();
BOOL wait_4();
BOOL flyawy();
BOOL wait_5();
BOOL wait_6(); //Unused
BOOL h_wait();
BOOL wait_7();
BOOL wait_3();
BOOL wait_8();
BOOL wait_2();
BOOL walk_1();
BOOL CHKwai();
BOOL demo_action1(void*);
BOOL wait_action1(void*);
BOOL wait_action2(void*);
BOOL wait_action3(void*);
BOOL wait_action4(void*);
BOOL wait_action5(void*);
BOOL wait_action6(void*);
BOOL wait_action7(void*);
BOOL wait_action8(void*);
BOOL wait_action9(void*);
BOOL wait_actionA(void*);
bool demo();
void shadowDraw();
BOOL _draw();
BOOL _execute();
BOOL _delete();
cPhs_State _create();
J3DModelData* create_Anm();
J3DModelData* create_hed_Anm();
J3DModelData* create_wng_Anm();
J3DModelData* create_arm_Anm();
bool create_itm_Mdl();
BOOL CreateHeap();
private:
/* 0x6C4 */ request_of_phase_process_class mPhs;
/* 0x6CC */ char mArcName[4];
/* 0x6D0 */ s8 m_hed_jnt_num;
/* 0x6D1 */ s8 m_bbone_jnt_num;
/* 0x6D2 */ s8 m_nec_jnt_num;
/* 0x6D3 */ s8 m_arm_L_jnt_num;
/* 0x6D4 */ s8 m_arm_R_jnt_num;
/* 0x6D8 */ J3DModel* mpBinderModel;
/* 0x6DC */ J3DModel* mpBagModel;
/* 0x6E0 */ J3DModel* mpKnifeModel;
/* 0x6E4 */ J3DModel* mpStickModel;
/* 0x6E8 */ u32 mShadowID;
/* 0x6EC */ mDoExt_McaMorf* mpHeadMorf;
/* 0x6F0 */ J3DAnmTexPattern* m_hed_tex_pttrn;
/* 0x6F4 */ mDoExt_btpAnm mHeadBtpAnm;
/* 0x708 */ u8 mBlinkFrame;
/* 0x70A */ s16 mBlinkTimer;
/* 0x70C */ s16 pad70C;
/* 0x710 */ mDoExt_McaMorf* mpWingMorf;
/* 0x714 */ s8 m_wngL1_jnt_num;
/* 0x715 */ s8 m_wngR1_jnt_num;
/* 0x716 */ s8 m_wngL3_jnt_num;
/* 0x717 */ s8 m_wngR3_jnt_num;
/* 0x718 */ u8 pad718[0x71C - 0x718]; //Possibly an unused mDoExt_McaMorf* ?
/* 0x71C */ mDoExt_McaMorf* mpArmMorf;
/* 0x720 */ s8 m_armL1_jnt_num;
/* 0x721 */ s8 m_armR1_jnt_num;
/* 0x722 */ s8 m_armL2_jnt_num;
/* 0x723 */ s8 m_armR2_jnt_num;
/* 0x724 */ s8 m_hnd_R_jnt_num;
/* 0x728 */ ActionFunc mCurrActionFunc;
/* 0x734 */ Mtx mLeftArmMtx;
/* 0x764 */ Mtx mRightArmMtx;
/* 0x794 */ dNpc_PathRun_c mPathRun;
/* 0x79C */ dNpc_EventCut_c mEventCut;
/* 0x808 */ fpc_ProcID mPartnerProcID;
/* 0x80C */ cXyz mInitialPos;
/* 0x818 */ csXyz m818;
/* 0x820 */ cXyz mEyePos;
/* 0x82C */ cXyz m82C;
/* 0x838 */ cXyz mTargetPos;
/* 0x844 */ f32 mFrame;
/* 0x848 */ f32 mTargetFlySpeed;
/* 0x84C */ f32 mFlySpeedY;
/* 0x850 */ f32 mTargetFlyStep;
/* 0x854 */ f32 mFlyAccelY;
/* 0x858 */ f32 m858;
/* 0x85C */ s16 m85C;
/* 0x85E */ s16 m85E;
/* 0x860 */ s16 m860;
/* 0x862 */ s16 mEventIdTable[4];
/* 0x86A */ s16 mEventIdx;
/* 0x86C */ s16 m86C;
/* 0x86E */ s16 m86E;
/* 0x870 */ s16 m870;
/* 0x872 */ s16 m872;
/* 0x874 */ s16 mHeadLookAtMaxVel;
/* 0x876 */ s16 m876;
/* 0x878 */ u16 mOldMsgStat;
/* 0x87A */ s8 mbMorfAnimStopped;
/* 0x87B */ s8 m87B;
/* 0x87C */ s8 m87C;
/* 0x87D */ u8 m87D;
/* 0x87E */ u8 m87E;
/* 0x87F */ bool m87F;
/* 0x880 */ bool m880;
/* 0x881 */ bool m881;
/* 0x882 */ bool m882;
/* 0x883 */ bool mbManzai;
/* 0x884 */ bool mbInitPostman0;
/* 0x885 */ bool mbHasArms;
/* 0x886 */ bool mbSetShapeAngle;
/* 0x887 */ u8 m887;
/* 0x888 */ u8 m888;
/* 0x889 */ bool m889;
/* 0x88A */ bool m88A;
/* 0x88B */ u8 m88B;
/* 0x88C */ bool mbRanExecute;
/* 0x88D */ u8 m88D;
/* 0x88E */ u8 m88E;
/* 0x88F */ u8 m88F;
/* 0x890 */ s32 mbSetEyePos;
/* 0x894 */ bool mbAttention;
/* 0x895 */ bool m895;
/* 0x896 */ bool m896;
/* 0x897 */ bool mbInDemo;
/* 0x898 */ cXyz mWingLPos;
/* 0x8A4 */ cXyz mWingRPos;
/* 0x8B0 */ cXyz mArmLPos;
/* 0x8BC */ cXyz mArmRPos;
/* 0x8C8 */ u8 m8C8;
/* 0x8C9 */ u8 m8C9[0x8CC - 0x8C9];
/* 0x8CC */ u8 m8CC;
/* 0x8CD */ u8 m8CD[0x8D4 - 0x8CD];
/* 0x8D4 */ JPABaseEmitter* mpFlyawayEmitterL;
/* 0x8D8 */ JPABaseEmitter* mpFlyawayEmitterR;
/* 0x8DC */ JPABaseEmitter* mpLandEmitterL;
/* 0x8E0 */ JPABaseEmitter* mpLandEmitterR;
/* 0x8E4 */ JPABaseEmitter* mpFeatherEmitterL;
/* 0x8E8 */ JPABaseEmitter* mpFeatherEmitterR;
/* 0x8EC */ JPABaseEmitter* mpFeather1EmitterL;
/* 0x8F0 */ JPABaseEmitter* mpFeather1EmitterR;
#if VERSION == VERSION_DEMO
/* 0x8F4 */ u8 mDemoUnused[4]; //Possibly an unused emitter
#endif
/* 0x8F4 */ s8 m8F4;
/* 0x8F5 */ s8 mActionIndex;
/* 0x8F6 */ s8 mActNo;
/* 0x8F7 */ u8 m8F7;
/* 0x8F8 */ u8 m8F8;
/* 0x8F9 */ s8 mBtpNum;
/* 0x8FA */ s8 mAnmNum;
/* 0x8FB */ u8 m8FB[0x8FD - 0x8FB];
/* 0x8FD */ s8 m8FD;
/* 0x8FE */ s8 mStatus;
/* 0x8FF */ s8 m8FF;
/* 0x900 */ s8 mLookBackState;
/* 0x901 */ s8 mType;
/* 0x902 */ SpecificType mSpecificType;
/* 0x903 */ s8 mSpawnCondition;
/* 0x904 */ s8 m904;
/* 0x904 */ s8 m905;
};
#endif /* D_A_NPC_BM1_H */
|