Changeset 677 for Daodan/src/Oni_Character.h
- Timestamp:
- Mar 3, 2013, 12:46:33 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Daodan/src/Oni_Character.h
r484 r677 3 3 #define ONI_CHARACTER_H 4 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" 596 7 597 8 enum { … … 605 16 team_syndicateaccessory, 606 17 }; 18 /* 607 19 int16_t ONICALL ONrGameState_NewCharacter(CharacterObject* CHAR, void* AISA, void* flag, uint32_t* list_location); 608 20 int32_t* ONICALL ONrGetActiveCharacter(void* CharacterPtr); 609 21 //int16_t ONICALL ONrGameState_GetPlayerCharacter(); 610 22 */ 611 23 //probably need to name these better. 24 /* 612 25 #define char_unkillable (1 << 5) 613 26 #define char_superammo (1 << 6) … … 620 33 #define char_bossshield (1 << 30) 621 34 #define char_weaponimmune (1 << 31) 622 35 */ 623 36 624 37 //We need a Oni_Structs #include file. 625 38 626 typedef struct { 627 uint32_t TimerMode; 628 char TimerName[32]; 629 uint32_t TimerDuration; 630 uint32_t field_28; 631 uint32_t field_2C; 632 uint32_t Letterbox[3]; 633 uint32_t field_3C; 634 uint32_t field_40; 635 uint32_t CutsceneSyncMark; 636 uint32_t SomeCutsceneSyncMarkField; 637 uint32_t field_4C; 638 uint32_t SplashScreenMachineTime; 639 uint32_t field_54; 640 uint32_t field_58; 641 uint32_t field_5C; 642 uint32_t field_60; 643 uint32_t field_64; 644 uint32_t field_68; 645 uint32_t field_6C; 646 uint32_t field_70; 647 uint32_t FadeStartTime; 648 uint32_t FadeEndTime; 649 uint32_t field_7C; 650 uint32_t Camera; 651 char PathFindingGraph[0x28]; 652 struct Character *PlayerCharacter; 653 uint32_t field_B0; 654 uint32_t field_B4; 655 GameInput Input; 656 uint32_t field_E8; 657 uint32_t field_EC; 658 uint32_t ScreenshotEveryFrame; //bool? 659 uint32_t field_F4; 660 char field_F8; 661 char field_F9; 662 char field_FA; 663 char field_FB; 664 uint32_t field_FC; 665 uint32_t field_100; 666 uint32_t SlowMo; //bool 667 uint32_t SlowMotion; 668 uint32_t field_10C; 669 uint32_t field_110; 670 uint32_t field_114; 671 char SplashScreenTextureName[32]; 672 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 721 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; 722 88 723 89 #endif
Note:
See TracChangeset
for help on using the changeset viewer.