ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/src/Oni_Character.h
(Generate patch)

Comparing Daodan/src/Oni_Character.h (file contents):
Revision 676 by gumby, Fri Dec 11 08:58:07 2009 UTC vs.
Revision 677 by alloc, Sat Mar 2 23:46:33 2013 UTC

# Line 2 | Line 2
2   #ifndef ONI_CHARACTER_H
3   #define ONI_CHARACTER_H
4  
5 < #include "Oni.h"
6 < #include <stdint.h>
7 < #include <stdbool.h>
8 <
9 < typedef struct {
10 <        float X;
11 <        float Y;
12 <        float Z;        
13 < } Vector3; //probably move to utilities...
14 <
15 < typedef struct {
16 <        float X;
17 <        float Y;
18 <        float Z;
19 <        float W;
20 < } Quaternion;
21 <
22 < typedef struct {
23 <        float RotationScale[9];
24 <        Vector3 Translation;
25 < } Matrix4x3;
26 <
27 < typedef struct {
28 <        Vector3 Center;
29 <        float Radius;
30 < } Sphere;
31 <
32 < typedef struct {
33 <        Sphere Sphere_; //fix this name
34 <        int Child1;
35 <        int Child2;    
36 < } SphereTreeNode;
37 <
38 < typedef struct {
39 <        Vector3 Min;
40 <        Vector3 Max;
41 < } BoundingBox;
42 <
43 <
44 < enum { //action flags
45 <        Action_Escape                    = 1,
46 <        Action_Console                   = 2,
47 <        Action_PauseScreen               = 4,
48 <        Action_Cutscene_1                = 8,
49 <        Action_Cutscene_2                = 0x10,
50 <        Action_F4                        = 0x20,
51 <        Action_F5                        = 0x40,
52 <        Action_F6                        = 0x80,
53 <        Action_F7                        = 0x100,
54 <        Action_F8                        = 0x200,
55 <        Action_StartRecord               = 0x400,
56 <        Action_StopRecord                = 0x800,
57 <        Action_PlayRecord                = 0x1000,
58 <        Action_F12                       = 0x2000,
59 <        Action_Unknown1                  = 0x4000,
60 <        Action_LookMode                  = 0x8000,
61 <        Action_Screenshot                = 0x10000,
62 <        Action_Unknown2                  = 0x20000,
63 <        Action_Unknown3                  = 0x40000,
64 <        Action_Unknown4                  = 0x80000,
65 <        Action_Unknown5                  = 0x100000,
66 <        Action_Forward                   = 0x200000,
67 <        Action_Backward                  = 0x400000,
68 <        Action_TurnLeft                  = 0x800000,
69 <        Action_TurnRight                 = 0x1000000,
70 <        Action_StepLeft                  = 0x2000000,
71 <        Action_StepRight                 = 0x4000000,
72 <        Action_Jump                      = 0x8000000,
73 <        Action_Crouch                    = 0x10000000,
74 <        Action_Punch                     = 0x20000000,
75 <        Action_Kick                      = 0x40000000,
76 <        Action_Block                     = 0x80000000,
77 <        //used in second action field
78 <        Action2_Walk                     = 1,
79 <        Action2_Action                   = 2,
80 <        Action2_Hypo                     = 4,
81 <        Action2_Reload                   = 8,
82 <        Action2_Swap                     = 0x10,
83 <        Action2_Drop                     = 0x20,
84 <        Action2_Fire1                    = 0x40,
85 <        Action2_Fire2                    = 0x80,
86 <        Action2_Fire3                    = 0x100,
87 < };
88 <
89 <
90 < typedef struct {
91 <        int32_t Actions1;
92 <        int32_t Actions2;
93 < } InputAction;
94 <
95 <
96 < typedef struct {
97 <        float MouseDeltaX;
98 <        float MouseDeltaY;
99 <        float field_8;
100 <        float field_C;
101 <        InputAction Current;
102 <        InputAction Stopped;
103 <        InputAction Start;
104 <        InputAction Stop;
105 < } GameInput;
106 <
107 < typedef struct {
108 <        int Type;                               //'CHAR' etc.
109 <        int ObjectId;                   //not needed
110 <        int Flags;                              //The flags of the object...not used for CHAR
111 <        Vector3 Position;               //Position of Object
112 <        Vector3 Rotation;               //Rotation of Object
113 <        int EditorCallbacks;    //Lets try not to mess with it for now. :P
114 <        int field_28;                   //unknown
115 < } OSD_Header;
116 <
117 < typedef struct {
118 <        int32_t Flags;
119 <        int32_t Frame;
120 <        int32_t field_8;
121 <        int32_t field_C;
122 <        int32_t field_10;
123 <        int32_t field_14;
124 <        int32_t field_18;
125 <        int32_t field_1C;
126 <        int32_t FILMInstance;
127 < } PlayingFilm;
128 <
129 < typedef enum {
130 <        chr_isplayer          = 1 << 0,
131 <        chr_randomskin        = 1 << 1,
132 <        chr_notprespawned     = 1 << 2,
133 <        chr_noncombatant      = 1 << 3,
134 <        chr_multispawnable    = 1 << 4,
135 <        chr_unkillable        = 1 << 5,
136 <        chr_superammo         = 1 << 6,
137 <        chr_omniscient        = 1 << 8,
138 <        chr_haslsi            = 1 << 9,
139 <        chr_boss              = 1 << 10,
140 <        chr_upgradedifficulty = 1 << 11,
141 <        chr_noautodrop        = 1 << 12,
142 <        chr_dontaim           = 1 << 13,
143 <        chr_nocollision       = 1 << 17,
144 <        chr_noshadow          = 1 << 24,
145 <        chr_invincible        = 1 << 25,
146 <        chr_bossshield        = 1 << 30,
147 <        chr_weaponimmune      = 1 << 31,
148 < } chr_flags;
149 < /*
150 < enum {
151 < chr_isplayer                    =               0x00000001,     //is player character
152 < chr_randomskin                  =               0x00000002,     //gets random skin from ONCV
153 < chr_notprespawned               =               0x00000004,     //isn't spawned at level creation
154 < chr_noncombatant                =               0x00000008,     //doesn't fight
155 < chr_multispawnable              =               0x00000010,     //can spawn up to 5 without forcing
156 < chr_unknown                             =               0x00000020,     //
157 < chr_unkillable                  =               0x00000040,     //can only be brought to 1 hp
158 < chr_superammo                   =               0x00000080,     //infinite ammo
159 < chr_omniscient                  =               0x00000100,     //touchofdeath
160 < chr_haslsi                              =               0x00000200,     //drops an lsi
161 < chr_boss                                =               0x00000400,     //is a boss character
162 < chr_upgradedifficulty   =               0x00000800,     //upgrade the difficulty if you play on med\hard
163 < chr_noautodrop                  =               0x00001000,     //uses drop fields instead of has fields on death
164 < }; //
165 < */
166 <
167 < typedef struct {
168 <        uint32_t Options;                               //A bitset. Someone had better define these
169 <        char Class[64];                                 //Name of the ONCC we use. ONCCName in idb
170 <        char Name[32];                                  //Name of the character. ie: ai2_spawn Muro
171 <        char Weapon[64];                                //Name of the weapon he holds. ONWCName in idb
172 <        char ScriptSpawn[32];                   //Script function called when char spawns
173 <        char ScriptDie[32];                             //Script function called when char dies
174 <        char ScriptAware[32];                   //Script function called when char detects something
175 <        char ScriptAlarm[32];                   //Script function called when char is alarmed at something
176 <        char ScriptHurt[32];                    //Script function called when char is hurt for the first time
177 <        char ScriptDefeat[32];                  //Script function called when char is at 1 HP
178 <        char ScriptNoPath[32];                  //Script function called when char loses path. Broken.
179 <        char ScriptNoAmmo[32];                  //Script function called when char is out of ammo for the first time. Char must have ammo at spawn.
180 <        int32_t AdditionalHealth;               //Additional Health given to the character
181 <        int16_t AmmoUsed;                               //Ammo given for the char to use
182 <        int16_t AmmoDropped;                    //Ammo the char drops
183 <        int16_t CellsUsed;                              //Cells given for the char to use
184 <        int16_t CellsDropped;                   //Cells the char drops
185 <        int16_t HypoUsed;                               //Hypo given for the char to use
186 <        int16_t HypoDropped;                    //Hypo the char drops
187 <        int16_t ShieldUsed;                             //Bullet shield given for the char to use
188 <        int16_t ShieldDropped;                  //Bullet shield the char drops
189 <        int16_t CloakUsed;                              //Phase Cloak given for the char to use
190 <        int16_t CloakDropped;                   //Phase Cloak the char drops
191 <        int16_t NCIUsed;                                //Don't use this...
192 <        int16_t NCIDropped;                             //Don't use this...
193 <        int32_t TeamID;                                 //Team ID
194 <        int32_t AmmoPercent;                    //Percent of weapon ammo full
195 <        int32_t JobID;                                  //Job ID...
196 <                                                                        //0 - none
197 <                                                                        //1 - idle
198 <                                                                        //2 - guard (never used in Oni)
199 <                                                                        //3 - patrol
200 <                                                                        //4 - teambattle (never used in Oni)
201 <        int16_t PatrolID;                               //patrol path ID (reference to the Patrol_Path.BINA file)
202 <        int16_t CombatID;                               //combat ID (reference to the Combat.BINA file)
203 <        int16_t MeleeID;                                //melee ID (reference to the Melee Profile.BINA file)
204 <        int16_t NeutralID;                              //neutral ID (reference to the Neutral.BINA file)
205 <        int32_t AlarmGroups;                    //Bitset. http://wiki.oni2.net/CHAR
206 <        int32_t InitialAlertLevel;              //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
207 <        int32_t MinimalAlertLevel;              //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
208 <        int32_t StartJobAlertLevel;             //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
209 <        int32_t InvestigatingAlertLevel;//0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
210 <        int32_t PursuitStrongLow;
211 <        int32_t PursuitWeakLow;
212 <        int32_t PursuitStrongHigh;
213 <        int32_t PursuitWeakHigh;
214 <        int32_t Pursuit5;
215 <        int32_t field_1FC;
216 < } CharacterOSD;
217 <
218 < typedef struct {
219 <        OSD_Header Header;
220 <        CharacterOSD OSD;
221 < } CharacterObject;
222 <
223 < typedef struct {
224 <        Vector3 Center;
225 <        float Radius;
226 < } BoundingSphere;
227 <
228 < typedef struct {
229 <        int32_t ONCP; //probably pointer
230 <        int32_t field_4;        //who knows?
231 <        int32_t Instance; //probably link to actual particle
232 <        int32_t Bone; //duh
233 < } AttachedParticle;
234 <
235 < typedef struct { //Inventory
236 <        int32_t Weapons[3];
237 <        int16_t field_1A0; //10 bucks says this is the current weapon
238 <        int16_t AmmoUsed;                               //Ammo given for the char to use
239 <        int16_t HypoUsed;                               //Hypo given for the char to use
240 <        int16_t CellsUsed;                              //Cells given for the char to use
241 <        int16_t AmmoDropped;                    //Ammo the char drops
242 <        int16_t HypoDropped;                    //Hypo the char drops
243 <        int16_t CellsDropped;                   //Cells the char drops
244 <        int16_t field_1A;       //who knows? InverseHypoRegenRate?
245 <        int16_t field_1C;      
246 <        int16_t field_1E;
247 <        char hasLSI;
248 <        char field_1B5;
249 <        int16_t field_1B6;
250 <        int16_t ShieldUsed;                             //Bullet shield given for the char to use
251 <        int16_t CloakUsed;                              //Phase Cloak given for the char to use
252 <        int32_t field_28;                       //probably bullet shield dropped
253 <        int32_t DoorKeys;               //Lol. We can use this later for other sorts of items.
254 < } Inventory;
255 <
256 < typedef struct {
257 <        uint32_t SphereTree;
258 <        Vector3 ObBox[8];
259 <        Vector3 * ObBowPtr;
260 <        Vector3 Velocity;
261 <        Quaternion field_74;
262 <        Vector3 Position;
263 <        Quaternion Rotation;
264 <        float Scale;
265 <        Matrix4x3 Matrix;
266 <        Matrix4x3 InitMatrix;
267 <        float field_104;
268 <        float Gravity;
269 <        float field_10C;
270 <        float field_110;
271 <        float Friction_1;
272 <        float Friction_2;
273 <        Vector3 Force;
274 <        uint32_t Flags;
275 <        uint32_t Type;
276 <        char AnimState[0x18];
277 <        void* Callbacks;
278 <        void* Owner;
279 < } PhyContext;
280 <
281 < typedef struct { //ActiveCharacter
282 <        int16_t Number;
283 <        int16_t field_2; //probably Number is an int32
284 <        PhyContext * PhyContext_;
285 <        SphereTreeNode SphereTree1;             //probably SphereTree[7]...
286 <        SphereTreeNode SphereTree3[4];
287 <        SphereTreeNode SphereTree2[2];
288 <        int16_t field_B0;
289 <        int16_t field_B2;
290 <        int16_t field_B4;
291 <        int16_t field_B6;
292 <        Vector3 field_B8;
293 <        Vector3 AccelerateWith;
294 <        int32_t field_D0;
295 <        Vector3 field_D4;
296 <        int32_t field_E0;
297 <        int32_t field_E4;
298 <        int32_t field_E8;
299 <        int32_t field_EC;
300 <        float SomePhyPosY;
301 <        int16_t field_F4;
302 <        int16_t IsInAirTimer;
303 <        Vector3 FallingVelocity;
304 <        Vector3 JumpVelocity;
305 <        char StartJumpPending;
306 <        char field_111;
307 <        int16_t field_112;
308 <        Vector3 field_114;
309 <        int32_t LastDamageSourceCharacter;
310 <        int32_t field_11C;
311 <        int32_t field_120;
312 <        int32_t field_124;
313 <        int32_t field_128;
314 <        int32_t field_12C;
315 <        BoundingSphere BoundingSphere_; //fix this name
316 <        Vector3 field_140;
317 <        Vector3 field_14C;
318 <        int32_t field_158;
319 <        int32_t field_15C;
320 <        Vector3 Location;
321 <        int32_t field_16C[6]; //16C-184 ???
322 <        int32_t AkiraNode;
323 <        int32_t GraphNode;
324 <        int32_t PelvisHeight;
325 <        int32_t MovementStatePtr;
326 <        int32_t ActiveWeapon;           //NOTE: FIGURE OUT THIS MESS OF INVENTORY...
327 <        int32_t field_198;              //maybe weap 3, maybe not...
328 <        int32_t InventoryWeapon;
329 <        int16_t field_1A0;      //unused?
330 <        int16_t AmmoUsable;                             //Ammo given for the char to use
331 <        int16_t HypoUsable;                             //Hypo given for the char to use
332 <        int16_t CellsUsable;                            //Cells given for the char to use
333 <        int16_t AmmoDropped;                    //Ammo the char drops
334 <        int16_t HypoDropped;                    //Hypo the char drops
335 <        int16_t CellsDropped;                   //Cells the char drops
336 <        int16_t field_1AE;      
337 <        int16_t InverseHypoRegenRate;
338 <        int16_t ShieldDropped;
339 <        int16_t CloakDropped;
340 <        int16_t field_1B4;
341 <        int16_t field_1B6;
342 <        int16_t ShieldUsable;
343 <        int16_t CloakUsable;
344 <        int16_t field_1BC[9]; //1BC-1E0
345 <        int32_t NotIdleStartTime;
346 <        int32_t TimeToIdle;
347 <        int32_t field_1E8[1315]; //1E8-1648 what the hell is all this?
348 <        BoundingBox BoundingBox_; //fix this name
349 <        int32_t field_1660;
350 <        int32_t field_1664;
351 <        int32_t ShieldPower; //Same as Boss Shield Power???
352 <        int32_t field_166C;
353 <        int32_t NumberOfKills; //^_^
354 <        int32_t InflictedDamage; //^_^
355 <        int32_t field_1678[260];        //1678-1A88 more wtf
356 <        int32_t field_1A88; //here starts animation junk? It was 4 bools in idb O_o
357 <        int32_t Executor_AimingDirection; //possibly throw junk?
358 <        int32_t field_1A98;
359 <        int32_t field_1A9C;
360 <        int32_t Executor_ActualMovementMode;
361 <        int32_t field_1AA4;
362 <        int32_t field_1AA8;
363 <        int32_t field_1AAC;
364 <        int32_t Executor_HasFacingOverride; //a bool...
365 <        float   Executor_AimingSpeed;
366 <        onibool field_1AB8; //actually a bitset...
367 <        onibool Executor_HasMoveOverride;
368 <        int16_t field_1ABA;
369 <        int32_t field_1ABC;
370 <        int32_t field_1AC0;
371 <        int32_t field_1AC4;
372 <        int32_t Executor_FacingOverride;
373 <        int32_t Executor_HasAttackOverride; //another bool :P
374 <        int32_t field_1AD0;
375 <        int32_t field_1AD4;
376 <        int32_t field_1AD8;
377 <        int32_t field_1ADC;
378 <        int32_t field_1AE0;
379 <        int32_t field_1AE4;
380 <        int32_t Executor_HasThrowOverride; //another another bool
381 <        int32_t field_1AEC;
382 <        int32_t field_1AF0;
383 <        int32_t field_1AF4;
384 <        int32_t Animation;
385 <        int16_t AnimationToState;
386 <        int16_t AnimationFromState;
387 <        int16_t AnimationType;
388 <        int16_t NextAnimationType;
389 <        int16_t field_1B04;
390 <        int16_t field_1B06;
391 <        int32_t Stitch; //bool
392 <        float StitchHeight;
393 <        int16_t InterpolationFromState;
394 <        int16_t field_1B12;
395 <        Vector3 StitchVelocity;
396 <        int16_t InterpolationCurrentFrame;
397 <        int16_t InterpolationLength;
398 <        Quaternion InterpolationStartRotations[19];
399 <        int32_t field_1C54;
400 <        int32_t field_1C58;
401 <        int32_t field_1C5C;
402 <        int32_t field_1C60;
403 <        int32_t Overlay;
404 <        int32_t field_1C68;
405 <        int32_t field_1C6C;
406 <        int32_t field_1C70;
407 <        int32_t field_1C74;
408 <        int32_t field_1C78;
409 <        int32_t field_1C7C;
410 <        int32_t field_1C80;
411 <        int32_t field_1C84;
412 <        int16_t Frame;
413 <        int16_t SoftPause;
414 <        int16_t HardPause;
415 <        int16_t field1C8E;
416 <        int32_t field1C90;
417 <        int16_t field1C94;
418 <        int16_t field1C96;
419 <        int16_t Dizzy;
420 <        int16_t field1C9A;
421 <        int32_t field1C9C;
422 <        int16_t AnimationVarient;
423 <        int16_t TimeToPeace;
424 <        int16_t NumAnimationAttachedParticles;
425 <        int16_t field_1CA6; //spacing
426 <        AttachedParticle AnimationAttachedParticles[16];
427 <        int32_t TRAMParticles;
428 <        onibool FixedParticlesAttached;
429 <        onibool FixedParticlesStarted;
430 <        int16_t NumFixedParticles;
431 <        AttachedParticle FixedParticles[16];
432 <        int16_t CurrentAnimationType;
433 <        int16_t field_1EB2; //spacing
434 <        int32_t field_1EB4;
435 <        int32_t field_1EB8;
436 <        int32_t field_1EBC;
437 <        int32_t field_1EC0;
438 <        int32_t field_1EC4;
439 <        int32_t field_1EC8;
440 <        int32_t field_1ED0;
441 <        int32_t field_1ED4;
442 <        int32_t field_1ED8;
443 <        int32_t field_1EE0;
444 <        int32_t field_1EE4;
445 <        int32_t field_1EE8;
446 <        Quaternion Rotations[19];
447 <        Quaternion OverlayRotations[19];
448 <        int32_t field_2150;
449 <        int32_t field_2154;
450 <        GameInput Input;
451 <        InputAction PreviousActions;
452 <        int32_t SprintTimer;
453 <        int32_t field_2194;
454 <        Vector3 field_2198;
455 <        int32_t field_21A4;
456 <        int32_t field_21A8;
457 <        int32_t field_21AC;
458 <        Vector3 field_21B0;
459 <        float HeadFacing;
460 <        float HeadPitch;
461 <        int32_t field_21C4;
462 <        int32_t field_21C8;
463 <        int32_t field_21D0;
464 <        int32_t field_21D4;
465 <        onibool field_21D8;
466 <        onibool field_21D9;
467 <        onibool field_21DA;
468 <        onibool field_21DB;
469 <        onibool field_21DC;
470 <        onibool field_21DD;
471 <        onibool field_21DE;
472 <        onibool field_21DF;
473 <        onibool field_21E0;
474 <        onibool HasAlternateTrigger;
475 <        onibool field_21E2;
476 <        onibool ReleaseTrigger;
477 <        onibool ReleaseAlternateTrigger;
478 <        onibool TurningLeft;
479 <        onibool TurningRight;
480 <        onibool field_21E7;
481 <        int32_t field_21E8;
482 <        int32_t field_21EC;
483 <        int32_t field_21F0;
484 <        PlayingFilm PlayingFilm_; //fix this name
485 <        int32_t field_2218[24]; //2218-2278
486 <        Matrix4x3 BoneMatrices[19];
487 <        Matrix4x3 WeaponMatrix;
488 <        int32_t field_2638[113]; //2638-27FC
489 <        int16_t ShadowIndex;
490 <        int16_t field_27FE;
491 <        int16_t field_2780;
492 <        onibool ShieldParts[19];
493 <        onibool field_2815; //padding...
494 <        onibool field_2816;
495 <        onibool field_2817;
496 <        int32_t field_2818[8];
497 < } ActiveCharacter;
498 <
499 < //This struct is good.
500 < typedef struct { //Character
501 <        char Number;
502 <        char field_2;
503 <        int16_t ActiveCharacterIndex;
504 <        int32_t Flags;
505 <        int32_t field_8;
506 <        int32_t* ONCC;                  //change type to ONCC when we get that far...
507 <        int16_t field_10;
508 <        int16_t Team;
509 <        char Name[32];
510 <        float BodySize;
511 <        int32_t Health;
512 <        int32_t MaxHealth;
513 <        int32_t ASIA_ID; //might be 16 with 2 byte padding
514 <        int32_t field_44;
515 <        char ScriptSpawn[32];                   //Script function called when char spawns
516 <        char ScriptDie[32];                             //Script function called when char dies
517 <        char ScriptAware[32];                   //Script function called when char detects something
518 <        char ScriptAlarm[32];                   //Script function called when char is alarmed at something
519 <        char ScriptHurt[32];                    //Script function called when char is hurt for the first time
520 <        char ScriptDefeat[32];                  //Script function called when char is at 1 HP
521 <        char ScriptNoAmmo[32];                  //Script function called when char is out of ammo for the first time. Char must have ammo at spawn.
522 <        char ScriptNoPath[32];                  //Script function called when char loses path. Broken.
523 <        Vector3 Position;
524 <        Vector3 LastPosition;
525 <        Vector3 Location;
526 <        float Facing;
527 <        float DesiredFacing;
528 <        float CosmeticFacing;
529 <        float field_178;
530 <        float field_17C;
531 <        float field_180;
532 <        int32_t BNV;
533 <        int32_t GraphNode;
534 <        float PelvisHeight;
535 <        float field_190;
536 <        Inventory Inventory_; //is there a better way to do this?
537 <        Vector3 Velocity;
538 <        int32_t field_1D0;
539 <        int32_t Recoil;
540 <        int32_t field_1D8;
541 <        int32_t field_1DC;
542 <        int32_t LastNotIdleGameTime;
543 <        int32_t IdleDelay;
544 <        int32_t Type;
545 <        int32_t field_1EC;
546 <        int32_t CombatFlags;
547 <        int32_t JobId;
548 <        int32_t Goal;
549 <        int32_t field_1FC;
550 <        int32_t field_200;
551 <        int32_t field_204;
552 <        int32_t field_208[428]; //208-8B8  
553 <        int32_t CombatState;    //I think....
554 <        int32_t field_8BC;
555 <        int32_t PatrolPathOSD[10];      //actually another struct. Not needed atm.
556 <        int32_t PatrolPathPoints[5][64]; //64 of another struct
557 <        int32_t field_DE8[98];  //DE8-F70
558 <        int32_t CombatStatePtr;
559 <        int32_t KnowledgeState[4]; //Another struct
560 <        int32_t field_F84;
561 <        int32_t AlertDecayTimer;
562 <        int32_t field_F8C;
563 <        int32_t field_F90;
564 <        int32_t InitialAlertLevel;              //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
565 <        int32_t MinimalAlertLevel;              //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
566 <        int32_t StartJobAlertLevel;             //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
567 <        int32_t InvestigatingAlertLevel;//0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat
568 <        int32_t StartleTime;
569 <        int32_t field_FA8;
570 <        int32_t field_FAC;
571 <        int32_t field_FB0;
572 <        int32_t PursuitStrongLow;
573 <        int32_t PursuitWeakLow;
574 <        int32_t PursuitStrongHigh;
575 <        int32_t PursuitWeakHigh;
576 <        int32_t Pursuit5;
577 <        int32_t field_FC8[4];
578 <        int32_t AlarmGroups; //a bitset
579 <        int32_t field_FDC[17]; //FDC-1020
580 <        int32_t DazeTimer;
581 <        int32_t field_1024[17]; //1024-1068
582 <        int32_t MeleePtr; //probably MELE. Looks somewhat important.
583 <        int32_t field_106C[270]; //106C-14A4 skipping lots of junk and a little pathfinding stuff that we might want later.
584 <        int32_t MovementMode;
585 <        int32_t field_14A8;
586 <        int32_t field_14AC;
587 <        int32_t MovementModifiers; //hopefully sprinting, pistol, rifle, etc.
588 <        int32_t field_14B4[101]; //14B4-1648 Glossing over a few other things we don't need having to do with AI direction.
589 <        BoundingBox BoundingBox_;
590 <        int32_t field_1660;
591 <        int32_t BossShieldPower;        //a multiplier? or just a flag? who knows
592 <        int32_t field_1668[6];
593 <        int32_t CurrentConsoleActionMarker; //not sure.
594 <        int32_t field_1684[7];
595 < } Character;
5 > //#include <stdint.h>
6 > #include "bool.h"
7  
8   enum {
9          team_konoko,
# Line 604 | Line 15 | enum {
15          team_switzerland,
16          team_syndicateaccessory,
17   };
18 + /*
19   int16_t ONICALL ONrGameState_NewCharacter(CharacterObject* CHAR, void* AISA, void* flag, uint32_t* list_location);
20   int32_t* ONICALL ONrGetActiveCharacter(void* CharacterPtr);
21   //int16_t ONICALL ONrGameState_GetPlayerCharacter();
22 <
22 > */
23   //probably need to name these better.
24 + /*
25   #define char_unkillable        (1 <<  5)
26   #define char_superammo         (1 <<  6)
27   #define char_unstoppable       (1 <<  8)
# Line 619 | Line 32 | int32_t* ONICALL ONrGetActiveCharacter(v
32   #define char_invincible        (1 << 25)
33   #define char_bossshield        (1 << 30)
34   #define char_weaponimmune      (1 << 31)
35 <
35 > */
36  
37   //We need a Oni_Structs #include file.
38  
39 < typedef struct {
40 <        uint32_t TimerMode;
41 <        char TimerName[32];
42 <        uint32_t TimerDuration;
43 <        uint32_t field_28;
44 <        uint32_t field_2C;
45 <        uint32_t Letterbox[3];
46 <        uint32_t field_3C;
47 <        uint32_t field_40;
48 <        uint32_t CutsceneSyncMark;
49 <        uint32_t SomeCutsceneSyncMarkField;
50 <        uint32_t field_4C;
51 <        uint32_t SplashScreenMachineTime;
52 <        uint32_t field_54;
53 <        uint32_t field_58;
54 <        uint32_t field_5C;
55 <        uint32_t field_60;
56 <        uint32_t field_64;
57 <        uint32_t field_68;
58 <        uint32_t field_6C;
59 <        uint32_t field_70;
60 <        uint32_t FadeStartTime;
61 <        uint32_t FadeEndTime;
62 <        uint32_t field_7C;
63 <        uint32_t Camera;
64 <        char PathFindingGraph[0x28];
65 <        struct Character *PlayerCharacter;
66 <        uint32_t field_B0;
67 <        uint32_t field_B4;
68 <        GameInput Input;
69 <        uint32_t field_E8;
70 <        uint32_t field_EC;
71 <        uint32_t ScreenshotEveryFrame; //bool?
72 <        uint32_t field_F4;
73 <        char field_F8;
74 <        char field_F9;
75 <        char field_FA;
76 <        char field_FB;
77 <        uint32_t field_FC;
78 <        uint32_t field_100;
79 <        uint32_t SlowMo;        //bool
80 <        uint32_t SlowMotion;
81 <        uint32_t field_10C;
82 <        uint32_t field_110;
83 <        uint32_t field_114;
84 <        char SplashScreenTextureName[32];
85 <        uint32_t field_138;
673 <        uint32_t field_13C;
674 <        uint32_t field_140;
675 <        uint32_t GameTime;
676 <        uint32_t field_148;
677 <        uint32_t field_14C;
678 <        uint32_t Level;
679 <        uint32_t field_154;
680 <        char MotionBlur[0x44][64];
681 <        uint32_t MotionBlurCount;
682 <        uint16_t field_125C;
683 <        uint16_t field_125E;
684 <        Character CharacterStorage[128];
685 <        uint16_t CharacterCount;
686 <        uint16_t padding_1;
687 <        uint32_t field_B6264;
688 <        char ActiveCharacters[0x2838][64]; //Active Character Struct isn't the proper size atm.
689 <        uint16_t ActiveCharactersCount;
690 <        char Shadows[32][0x804];
691 <        uint32_t field_1670EA;
692 <        uint32_t ShadowCount;
693 <        ActiveCharacter* ActiveCharacterList[128]; //or just Character*? Anyways, we wont need to use this.
694 <        uint32_t ActiveCharacterListCount;
695 <        uint32_t ActiveCharacterListLock;
696 <        Character* LivingCharacterList[128];
697 <        uint32_t LivingCharacterListCount;
698 <        uint32_t LivingCharacterListLock;
699 <        ActiveCharacter* PresentCharacterList[128];
700 <        uint32_t PresentCharacterListCount;
701 <        uint32_t PresentCharacterListLock;
702 <        void* ObjectList;
703 <        char DoorArray[8];
704 <        char Sky[0x290];
705 <        uint32_t field_1679A4;
706 <        uint32_t Triggers;
707 <        char IsGamePaused;
708 <        char IsInputEnabled;
709 <        char field_1679AE;
710 <        char field_1679AF;
711 <        uint32_t LockedActions1;
712 <        uint32_t LockedActions2;
713 <        uint32_t field_1679B8;
714 <        uint32_t WinLose;
715 <        uint32_t ConditionSoundsCount;
716 <        uint32_t ConditionSounds[5];
717 <        uint16_t LevelNumber;
718 <        uint16_t padding_5;
719 <        uint16_t field_1679DC;
720 < } GameState;
39 > typedef enum {
40 >        ONcCharacterFlag_Dead_1_Animating               =       0x00000001,     // health is 0
41 >        ONcCharacterFlag_Dead                                   =       ONcCharacterFlag_Dead_1_Animating,
42 >        ONcCharacterFlag_Dead_2_Moving                  =       0x00000002,     // no longer animating
43 >        ONcCharacterFlag_Dead_3_Cosmetic                =       0x00000004,     // no longer moving
44 >        ONcCharacterFlag_Dead_4_Gone                    =       0x00000008,     // dead except but still drawn
45 >
46 >        ONcCharacterFlag_HastyAnim                              =       0x00000010,     // do this queued animation ASAP
47 >        ONcCharacterFlag_Unkillable                             =       0x00000020,     // the character cannot be killed, only defeated
48 >        ONcCharacterFlag_InfiniteAmmo                   =       0x00000040,     // the character always has infinite ammo
49 >        ONcCharacterFlag_PleaseBlock                    =       0x00000080,     // set if the character should block, cleared once block begins
50 >        
51 >        ONcCharacterFlag_Unstoppable                    =       0x00000100,     // this character cannot be knocked down, staggered, stunned, etc
52 >        ONcCharacterFlag_ScriptControl                  =       0x00000200,     // set if the character is completely under script control
53 >        ONcCharacterFlag_DeathLock                              =       0x00000400,     // this character should never die all the way
54 >        ONcCharacterFlag_WasUpdated                             =       0x00000800,     // this character's animation was changed
55 >                
56 >        ONcCharacterFlag_BeingThrown                    =       0x00001000,     // this character is being thrown
57 >        ONcCharacterFlag_DontUseGunVarient              =       0x00002000,     // this character should not use a weapon varient
58 >        ONcCharacterFlag_Draw                                   =       0x00004000,     // DoFrame has been executed for this character
59 >        ONcCharacterFlag_InUse                                  =       0x00008000,     // this character is active and in use
60 >
61 >        ONcCharacterFlag_DontUseFightVarient    =       0x00010000,
62 >        ONcCharacterFlag_NoCollision                    =       0x00020000,     // no collision for this character
63 >        ONcCharacterFlag_Teleporting                    =       0x00040000,     // this character is teleporting and does not accept collision
64 >        ONcCharacterFlag_NoCorpse                               =       0x00080000,     // no corpse for this character
65 >
66 >        ONcCharacterFlag_ActiveLock                             =       0x00100000,     // the character is locked active
67 >        ONcCharacterFlag_ChrAnimate                             =       0x00200000,     // the character is currently runing a chr_animate command
68 >        ONcCharacterFlag_AIMovement                             =       0x00400000,     // the character is using AI movement
69 >        ONcCharacterFlag_NeutralUninterruptable =       0x00800000,     // running an uninterruptable neutral interaction
70 >
71 >        ONcCharacterFlag_NoShadow                               =       0x01000000,     //
72 >        ONcCharacterFlag_Invincible                             =       0x02000000,     // character is invincible
73 >        ONcCharacterFlag_NoAutoDrop                             =       0x04000000,     // character should not automatically drop items when killed (invisibility, shield, LSI)
74 >        ONcCharacterFlag_RestrictedMovement             =       0x08000000,     // character cannot move fast (used for player holding barabbas' gun)
75 >
76 >        ONcCharacterFlag_Boss                                   =       0x10000000,     // character is a boss (used for final muro group fight)
77 >        ONcCharacterFlag_FinalFlash                             =       0x20000000,     // 'final flash' has been played for this character's death
78 >        ONcCharacterFlag_BossShield                             =       0x40000000, // this character has the boss shield
79 >        ONcCharacterFlag_WeaponImmune                   =       0x80000000      // this character is immune to weapon damage
80 >
81 > } ONtCharacterFlags;
82 >
83 > typedef enum {
84 >        ONcCharacterFlag2_WeaponEmpty                   =       0x00000001, // character's weapon is empty, punch instead
85 >        ONcCharacterFlag2_UltraMode                             =       0x00000002
86  
87 + } ONtCharacterFlags2;
88  
89   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)