1 | #pragma once |
---|
2 | #ifndef ONI_CHARACTER_H |
---|
3 | #define ONI_CHARACTER_H |
---|
4 | |
---|
5 | #include "Daodan.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 struct { |
---|
130 | uint32_t Options; //A bitset. Someone had better define these |
---|
131 | char Class[64]; //Name of the ONCC we use. ONCCName in idb |
---|
132 | char Name[32]; //Name of the character. ie: ai2_spawn Muro |
---|
133 | char Weapon[64]; //Name of the weapon he holds. ONWCName in idb |
---|
134 | char ScriptSpawn[32]; //Script function called when char spawns |
---|
135 | char ScriptDie[32]; //Script function called when char dies |
---|
136 | char ScriptAware[32]; //Script function called when char detects something |
---|
137 | char ScriptAlarm[32]; //Script function called when char is alarmed at something |
---|
138 | char ScriptHurt[32]; //Script function called when char is hurt for the first time |
---|
139 | char ScriptDefeat[32]; //Script function called when char is at 1 HP |
---|
140 | char ScriptNoPath[32]; //Script function called when char loses path. Broken. |
---|
141 | char ScriptNoAmmo[32]; //Script function called when char is out of ammo for the first time. Char must have ammo at spawn. |
---|
142 | int32_t AdditionalHealth; //Additional Health given to the character |
---|
143 | int16_t AmmoUsed; //Ammo given for the char to use |
---|
144 | int16_t AmmoDropped; //Ammo the char drops |
---|
145 | int16_t CellsUsed; //Cells given for the char to use |
---|
146 | int16_t CellsDropped; //Cells the char drops |
---|
147 | int16_t HypoUsed; //Hypo given for the char to use |
---|
148 | int16_t HypoDropped; //Hypo the char drops |
---|
149 | int16_t ShieldUsed; //Bullet shield given for the char to use |
---|
150 | int16_t ShieldDropped; //Bullet shield the char drops |
---|
151 | int16_t CloakUsed; //Phase Cloak given for the char to use |
---|
152 | int16_t CloakDropped; //Phase Cloak the char drops |
---|
153 | int16_t NCIUsed; //Don't use this... |
---|
154 | int16_t NCIDropped; //Don't use this... |
---|
155 | int32_t TeamID; //Team ID |
---|
156 | int32_t AmmoPercent; //Percent of weapon ammo full |
---|
157 | int32_t JobID; //Job ID... |
---|
158 | //0 - none |
---|
159 | //1 - idle |
---|
160 | //2 - guard (never used in Oni) |
---|
161 | //3 - patrol |
---|
162 | //4 - teambattle (never used in Oni) |
---|
163 | int16_t PatrolID; //patrol path ID (reference to the Patrol_Path.BINA file) |
---|
164 | int16_t CombatID; //combat ID (reference to the Combat.BINA file) |
---|
165 | int16_t MeleeID; //melee ID (reference to the Melee Profile.BINA file) |
---|
166 | int16_t NeutralID; //neutral ID (reference to the Neutral.BINA file) |
---|
167 | int32_t AlarmGroups; //Bitset. http://wiki.oni2.net/CHAR |
---|
168 | int32_t InitialAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
---|
169 | int32_t MinimalAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
---|
170 | int32_t StartJobAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
---|
171 | int32_t InvestigatingAlertLevel;//0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
---|
172 | int32_t PursuitStrongLow; |
---|
173 | int32_t PursuitWeakLow; |
---|
174 | int32_t PursuitStrongHigh; |
---|
175 | int32_t PursuitWeakHigh; |
---|
176 | int32_t Pursuit5; |
---|
177 | int32_t field_1FC; |
---|
178 | } CharacterOSD; |
---|
179 | |
---|
180 | typedef struct { |
---|
181 | OSD_Header Header; |
---|
182 | CharacterOSD OSD; |
---|
183 | } CharacterObject; |
---|
184 | |
---|
185 | typedef struct { |
---|
186 | Vector3 Center; |
---|
187 | float Radius; |
---|
188 | } BoundingSphere; |
---|
189 | |
---|
190 | typedef struct { |
---|
191 | int32_t ONCP; //probably pointer |
---|
192 | int32_t field_4; //who knows? |
---|
193 | int32_t Instance; //probably link to actual particle |
---|
194 | int32_t Bone; //duh |
---|
195 | } AttachedParticle; |
---|
196 | |
---|
197 | typedef struct { //Inventory |
---|
198 | int32_t Weapons[3]; |
---|
199 | int16_t field_1A0; //10 bucks says this is the current weapon |
---|
200 | int16_t AmmoUsed; //Ammo given for the char to use |
---|
201 | int16_t HypoUsed; //Hypo given for the char to use |
---|
202 | int16_t CellsUsed; //Cells given for the char to use |
---|
203 | int16_t AmmoDropped; //Ammo the char drops |
---|
204 | int16_t HypoDropped; //Hypo the char drops |
---|
205 | int16_t CellsDropped; //Cells the char drops |
---|
206 | int16_t field_1A; //who knows? InverseHypoRegenRate? |
---|
207 | int16_t field_1C; |
---|
208 | int16_t field_1E; |
---|
209 | int16_t hasLSI; |
---|
210 | int16_t field_1B6; |
---|
211 | int16_t ShieldUsed; //Bullet shield given for the char to use |
---|
212 | int16_t CloakUsed; //Phase Cloak given for the char to use |
---|
213 | int32_t field_28; //probably bullet shield dropped |
---|
214 | int32_t DoorKeys; //Lol. We can use this later for other sorts of items. |
---|
215 | } Inventory; |
---|
216 | |
---|
217 | typedef struct { //ActiveCharacter |
---|
218 | int16_t Number; |
---|
219 | int16_t field_2; //probably Number is an int32 |
---|
220 | int32_t PhyContext; |
---|
221 | SphereTreeNode SphereTree1; //probably SphereTree[7]... |
---|
222 | SphereTreeNode SphereTree3[4]; |
---|
223 | SphereTreeNode SphereTree2[2]; |
---|
224 | int16_t field_B0; |
---|
225 | int16_t field_B2; |
---|
226 | int16_t field_B4; |
---|
227 | int16_t field_B6; |
---|
228 | Vector3 field_B8; |
---|
229 | Vector3 AccelerateWith; |
---|
230 | int16_t field_D0; |
---|
231 | Vector3 field_D4; |
---|
232 | int32_t field_E0; |
---|
233 | int32_t field_E4; |
---|
234 | int32_t field_E8; |
---|
235 | int32_t field_EC; |
---|
236 | int32_t field_F0; |
---|
237 | int32_t field_F4; |
---|
238 | int16_t IsInAir; |
---|
239 | Vector3 FallingVelocity; |
---|
240 | Vector3 JumpVelocity; |
---|
241 | int16_t field_110; |
---|
242 | int16_t field_112; |
---|
243 | int32_t field_114; |
---|
244 | int32_t field_118; |
---|
245 | int32_t field_11C; |
---|
246 | int32_t field_120; |
---|
247 | int32_t field_124; |
---|
248 | int32_t field_128; |
---|
249 | int32_t field_12C; |
---|
250 | BoundingSphere BoundingSphere_; //fix this name |
---|
251 | Vector3 field_140; |
---|
252 | Vector3 field_14C; |
---|
253 | int32_t field_158; |
---|
254 | int32_t field_15C; |
---|
255 | Vector3 Location; |
---|
256 | int32_t field_16C[6]; //16C-184 ??? |
---|
257 | int32_t AkiraNode; |
---|
258 | int32_t GraphNode; |
---|
259 | int32_t PelvisHeight; |
---|
260 | int32_t MovementStatePtr; |
---|
261 | int32_t ActiveWeapon; //NOTE: FIGURE OUT THIS MESS OF INVENTORY... |
---|
262 | int32_t field_198; //maybe weap 3, maybe not... |
---|
263 | int32_t InventoryWeapon; |
---|
264 | int16_t field_1A0; //unused? |
---|
265 | int16_t AmmoUsable; //Ammo given for the char to use |
---|
266 | int16_t HypoUsable; //Hypo given for the char to use |
---|
267 | int16_t CellsUsable; //Cells given for the char to use |
---|
268 | int16_t AmmoDropped; //Ammo the char drops |
---|
269 | int16_t HypoDropped; //Hypo the char drops |
---|
270 | int16_t CellsDropped; //Cells the char drops |
---|
271 | int16_t field_1AE; |
---|
272 | int16_t InverseHypoRegenRate; |
---|
273 | int16_t ShieldDropped; |
---|
274 | int16_t CloakDropped; |
---|
275 | int16_t field_1B4; |
---|
276 | int16_t field_1B6; |
---|
277 | int16_t ShieldUsable; |
---|
278 | int16_t CloakUsable; |
---|
279 | int16_t field_1BC[9]; //1BC-1E0 |
---|
280 | int32_t NotIdleStartTime; |
---|
281 | int32_t TimeToIdle; |
---|
282 | int32_t field_1E8[1315]; //1E8-1648 what the hell is all this? |
---|
283 | BoundingBox BoundingBox_; //fix this name |
---|
284 | int32_t field_1660; |
---|
285 | int32_t field_1664; |
---|
286 | int32_t ShieldPower; //Same as Boss Shield Power??? |
---|
287 | int32_t field_166C; |
---|
288 | int32_t NumberOfKills; //^_^ |
---|
289 | int32_t InflictedDamage; //^_^ |
---|
290 | int32_t field_1678[260]; //1678-1A88 more wtf |
---|
291 | int32_t field_1A88; //here starts animation junk? It was 4 bools in idb O_o |
---|
292 | int32_t Executor_AimingDirection; //possibly throw junk? |
---|
293 | int32_t field_1A98; |
---|
294 | int32_t field_1A9C; |
---|
295 | int32_t Executor_ActualMovementMode; |
---|
296 | int32_t field_1AA4; |
---|
297 | int32_t field_1AA8; |
---|
298 | int32_t field_1AAC; |
---|
299 | int32_t Executor_HasFacingOverride; //a bool... |
---|
300 | float Executor_AimingSpeed; |
---|
301 | bool field_1AB8; //actually a bitset... |
---|
302 | bool Executor_HasMoveOverride; |
---|
303 | int16_t field_1ABA; |
---|
304 | int32_t field_1ABC; |
---|
305 | int32_t field_1AC0; |
---|
306 | int32_t field_1AC4; |
---|
307 | int32_t Executor_FacingOverride; |
---|
308 | int32_t Executor_HasAttackOverride; //another bool :P |
---|
309 | int32_t field_1AD0; |
---|
310 | int32_t field_1AD4; |
---|
311 | int32_t field_1AD8; |
---|
312 | int32_t field_1ADC; |
---|
313 | int32_t field_1AE0; |
---|
314 | int32_t field_1AE4; |
---|
315 | int32_t Executor_HasThrowOverride; //another another bool |
---|
316 | int32_t field_1AEC; |
---|
317 | int32_t field_1AF0; |
---|
318 | int32_t field_1AF4; |
---|
319 | int32_t Animation; |
---|
320 | int16_t AnimationToState; |
---|
321 | int16_t AnimationFromState; |
---|
322 | int16_t AnimationType; |
---|
323 | int16_t NextAnimationType; |
---|
324 | int16_t field_1B04; |
---|
325 | int16_t field_1B06; |
---|
326 | int32_t Stitch; //bool |
---|
327 | float StitchHeight; |
---|
328 | int16_t InterpolationFromState; |
---|
329 | int16_t field_1B12; |
---|
330 | Vector3 StitchVelocity; |
---|
331 | int16_t InterpolationCurrentFrame; |
---|
332 | int16_t InterpolationLength; |
---|
333 | Quaternion InterpolationStartRotations[19]; |
---|
334 | int32_t field_1C54; |
---|
335 | int32_t field_1C58; |
---|
336 | int32_t field_1C5C; |
---|
337 | int32_t field_1C60; |
---|
338 | int32_t Overlay; |
---|
339 | int32_t field_1C68; |
---|
340 | int32_t field_1C6C; |
---|
341 | int32_t field_1C70; |
---|
342 | int32_t field_1C74; |
---|
343 | int32_t field_1C78; |
---|
344 | int32_t field_1C7C; |
---|
345 | int32_t field_1C80; |
---|
346 | int32_t field_1C84; |
---|
347 | int16_t Frame; |
---|
348 | int16_t SoftPause; |
---|
349 | int16_t HardPause; |
---|
350 | int16_t field1C8E; |
---|
351 | int32_t field1C90; |
---|
352 | int16_t field1C94; |
---|
353 | int16_t field1C96; |
---|
354 | int16_t Dizzy; |
---|
355 | int16_t field1C9A; |
---|
356 | int32_t field1C9C; |
---|
357 | int16_t AnimationVarient; |
---|
358 | int16_t TimeToPeace; |
---|
359 | int16_t NumAnimationAttachedParticles; |
---|
360 | int16_t field_1CA6; //spacing |
---|
361 | AttachedParticle AnimationAttachedParticles[16]; |
---|
362 | int32_t TRAMParticles; |
---|
363 | bool FixedParticlesAttached; |
---|
364 | bool FixedParticlesStarted; |
---|
365 | int16_t NumFixedParticles; |
---|
366 | AttachedParticle FixedParticles[16]; |
---|
367 | int16_t CurrentAnimationType; |
---|
368 | int16_t field_1EB2; //spacing |
---|
369 | int32_t field_1EB4; |
---|
370 | int32_t field_1EB8; |
---|
371 | int32_t field_1EBC; |
---|
372 | int32_t field_1EC0; |
---|
373 | int32_t field_1EC4; |
---|
374 | int32_t field_1EC8; |
---|
375 | int32_t field_1ED0; |
---|
376 | int32_t field_1ED4; |
---|
377 | int32_t field_1ED8; |
---|
378 | int32_t field_1EE0; |
---|
379 | int32_t field_1EE4; |
---|
380 | int32_t field_1EE8; |
---|
381 | Quaternion Rotations[19]; |
---|
382 | Quaternion OverlayRotations[19]; |
---|
383 | int32_t field_2150; |
---|
384 | int32_t field_2154; |
---|
385 | GameInput Input; |
---|
386 | InputAction PreviousActions; |
---|
387 | int32_t SprintTimer; |
---|
388 | int32_t field_2194; |
---|
389 | Vector3 field_2198; |
---|
390 | int32_t field_21A4; |
---|
391 | int32_t field_21A8; |
---|
392 | int32_t field_21AC; |
---|
393 | Vector3 field_21B0; |
---|
394 | float HeadFacing; |
---|
395 | float HeadPitch; |
---|
396 | int32_t field_21C4; |
---|
397 | int32_t field_21C8; |
---|
398 | int32_t field_21D0; |
---|
399 | int32_t field_21D4; |
---|
400 | bool field_21D8; |
---|
401 | bool field_21D9; |
---|
402 | bool field_21DA; |
---|
403 | bool field_21DB; |
---|
404 | bool field_21DC; |
---|
405 | bool field_21DD; |
---|
406 | bool field_21DE; |
---|
407 | bool field_21DF; |
---|
408 | bool field_21E0; |
---|
409 | bool HasAlternateTrigger; |
---|
410 | bool field_21E2; |
---|
411 | bool ReleaseTrigger; |
---|
412 | bool ReleaseAlternateTrigger; |
---|
413 | bool TurningLeft; |
---|
414 | bool TurningRight; |
---|
415 | bool field_21E7; |
---|
416 | int32_t field_21E8; |
---|
417 | int32_t field_21EC; |
---|
418 | int32_t field_21F0; |
---|
419 | PlayingFilm PlayingFilm_; //fix this name |
---|
420 | int32_t field_2218[24]; //2218-2278 |
---|
421 | Matrix4x3 BoneMatrices[19]; |
---|
422 | Matrix4x3 WeaponMatrix; |
---|
423 | int32_t field_2638[113]; //2638-27FC |
---|
424 | int16_t ShadowIndex; |
---|
425 | int16_t field_27FE; |
---|
426 | int16_t field_2780; |
---|
427 | bool ShieldParts[19]; |
---|
428 | bool field_2815; //padding... |
---|
429 | bool field_2816; |
---|
430 | bool field_2817; |
---|
431 | int32_t field_2818[8]; |
---|
432 | } ActiveCharacter; |
---|
433 | |
---|
434 | //This struct is good. |
---|
435 | typedef struct { //Character |
---|
436 | char Number; |
---|
437 | char field_2; |
---|
438 | int16_t ActiveCharacterIndex; |
---|
439 | int32_t Flags; |
---|
440 | int32_t field_8; |
---|
441 | int32_t ONCC; //change type to ONCC when we get that far... |
---|
442 | int16_t field_10; |
---|
443 | int16_t Team; |
---|
444 | char Name[32]; |
---|
445 | float BodySize; |
---|
446 | int32_t Health; |
---|
447 | int32_t MaxHealth; |
---|
448 | int32_t ASIA_ID; //might be 16 with 2 byte padding |
---|
449 | int32_t field_44; |
---|
450 | char ScriptSpawn[32]; //Script function called when char spawns |
---|
451 | char ScriptDie[32]; //Script function called when char dies |
---|
452 | char ScriptAware[32]; //Script function called when char detects something |
---|
453 | char ScriptAlarm[32]; //Script function called when char is alarmed at something |
---|
454 | char ScriptHurt[32]; //Script function called when char is hurt for the first time |
---|
455 | char ScriptDefeat[32]; //Script function called when char is at 1 HP |
---|
456 | char ScriptNoAmmo[32]; //Script function called when char is out of ammo for the first time. Char must have ammo at spawn. |
---|
457 | char ScriptNoPath[32]; //Script function called when char loses path. Broken. |
---|
458 | Vector3 Position; |
---|
459 | Vector3 LastPosition; |
---|
460 | Vector3 Location; |
---|
461 | float Facing; |
---|
462 | float DesiredFacing; |
---|
463 | float CosmeticFacing; |
---|
464 | float field_178; |
---|
465 | float field_17C; |
---|
466 | float field_180; |
---|
467 | int32_t BNV; |
---|
468 | int32_t GraphNode; |
---|
469 | float PelvisHeight; |
---|
470 | float field_190; |
---|
471 | Inventory Inventory_; //is there a better way to do this? |
---|
472 | Vector3 Velocity; |
---|
473 | int32_t field_1D0; |
---|
474 | int32_t Recoil; |
---|
475 | int32_t field_1D8; |
---|
476 | int32_t field_1DC; |
---|
477 | int32_t LastNotIdleGameTime; |
---|
478 | int32_t IdleDelay; |
---|
479 | int32_t Type; |
---|
480 | int32_t field_1EC; |
---|
481 | int32_t CombatFlags; |
---|
482 | int32_t JobId; |
---|
483 | int32_t Goal; |
---|
484 | int32_t field_1FC; |
---|
485 | int32_t field_200; |
---|
486 | int32_t field_204; |
---|
487 | int32_t field_208[428]; //208-8B8 |
---|
488 | int32_t CombatState; //I think.... |
---|
489 | int32_t field_8BC; |
---|
490 | int32_t PatrolPathOSD[10]; //actually another struct. Not needed atm. |
---|
491 | int32_t PatrolPathPoints[5][64]; //64 of another struct |
---|
492 | int32_t field_DE8[98]; //DE8-F70 |
---|
493 | int32_t CombatStatePtr; |
---|
494 | int32_t KnowledgeState[4]; //Another struct |
---|
495 | int32_t field_F84; |
---|
496 | int32_t AlertDecayTimer; |
---|
497 | int32_t field_F8C; |
---|
498 | int32_t field_F90; |
---|
499 | int32_t InitialAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
---|
500 | int32_t MinimalAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
---|
501 | int32_t StartJobAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
---|
502 | int32_t InvestigatingAlertLevel;//0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
---|
503 | int32_t StartleTime; |
---|
504 | int32_t field_FA8; |
---|
505 | int32_t field_FAC; |
---|
506 | int32_t field_FB0; |
---|
507 | int32_t PursuitStrongLow; |
---|
508 | int32_t PursuitWeakLow; |
---|
509 | int32_t PursuitStrongHigh; |
---|
510 | int32_t PursuitWeakHigh; |
---|
511 | int32_t Pursuit5; |
---|
512 | int32_t field_FC8[4]; |
---|
513 | int32_t AlarmGroups; //a bitset |
---|
514 | int32_t field_FDC[17]; //FDC-1020 |
---|
515 | int32_t DazeTimer; |
---|
516 | int32_t field_1024[17]; //1024-1068 |
---|
517 | int32_t MeleePtr; //probably MELE. Looks somewhat important. |
---|
518 | int32_t field_106C[270]; //106C-14A4 skipping lots of junk and a little pathfinding stuff that we might want later. |
---|
519 | int32_t MovementMode; |
---|
520 | int32_t field_14A8; |
---|
521 | int32_t field_14AC; |
---|
522 | int32_t MovementModifiers; //hopefully sprinting, pistol, rifle, etc. |
---|
523 | int32_t field_14B4[101]; //14B4-1648 Glossing over a few other things we don't need having to do with AI direction. |
---|
524 | BoundingBox BoundingBox_; |
---|
525 | int32_t field_1660; |
---|
526 | int32_t BossShieldPower; //a multiplier? or just a flag? who knows |
---|
527 | int32_t field_1668[6]; |
---|
528 | int32_t CurrentConsoleActionMarker; //not sure. |
---|
529 | int32_t field_1684[7]; |
---|
530 | } Character; |
---|
531 | |
---|
532 | enum { |
---|
533 | team_konoko, |
---|
534 | team_tctf, |
---|
535 | team_syndicate, |
---|
536 | team_neutral, |
---|
537 | team_securityguard, |
---|
538 | team_rougekonoko, |
---|
539 | team_switzerland, |
---|
540 | team_syndicateaccessory, |
---|
541 | }; |
---|
542 | |
---|
543 | typedef enum { |
---|
544 | chr_isplayer = 1 << 0, |
---|
545 | chr_randomskin = 1 << 1, |
---|
546 | chr_notprespawned = 1 << 2, |
---|
547 | chr_noncombatant = 1 << 3, |
---|
548 | chr_multispawnable = 1 << 4, |
---|
549 | chr_unkillable = 1 << 5, |
---|
550 | chr_superammo = 1 << 6, |
---|
551 | chr_omniscient = 1 << 8, |
---|
552 | chr_haslsi = 1 << 9, |
---|
553 | chr_boss = 1 << 10, |
---|
554 | chr_upgradedifficulty = 1 << 11, |
---|
555 | chr_noautodrop = 1 << 12, |
---|
556 | chr_dontaim = 1 << 13, |
---|
557 | chr_nocollision = 1 << 17, |
---|
558 | chr_noshadow = 1 << 24, |
---|
559 | chr_invincible = 1 << 25, |
---|
560 | chr_bossshield = 1 << 30, |
---|
561 | chr_weaponimmune = 1 << 31, |
---|
562 | } chr_flags; |
---|
563 | /* |
---|
564 | enum { |
---|
565 | chr_isplayer = 0x00000001, //is player character |
---|
566 | chr_randomskin = 0x00000002, //gets random skin from ONCV |
---|
567 | chr_notprespawned = 0x00000004, //isn't spawned at level creation |
---|
568 | chr_noncombatant = 0x00000008, //doesn't fight |
---|
569 | chr_multispawnable = 0x00000010, //can spawn up to 5 without forcing |
---|
570 | chr_unknown = 0x00000020, // |
---|
571 | chr_unkillable = 0x00000040, //can only be brought to 1 hp |
---|
572 | chr_superammo = 0x00000080, //infinite ammo |
---|
573 | chr_omniscient = 0x00000100, //touchofdeath |
---|
574 | chr_haslsi = 0x00000200, //drops an lsi |
---|
575 | chr_boss = 0x00000400, //is a boss character |
---|
576 | chr_upgradedifficulty = 0x00000800, //upgrade the difficulty if you play on med\hard |
---|
577 | chr_noautodrop = 0x00001000, //uses drop fields instead of has fields on death |
---|
578 | }; // |
---|
579 | */ |
---|
580 | int16_t ONICALL ONrGameState_NewCharacter(CharacterObject* CHAR, void* AISA, void* flag, int* list_location); |
---|
581 | int32_t* ONICALL ONrGetActiveCharacter(void* CharacterPtr); |
---|
582 | //int16_t ONICALL ONrGameState_GetPlayerCharacter(); |
---|
583 | |
---|
584 | |
---|
585 | #endif |
---|