1 |
#pragma once |
2 |
#ifndef ONI_CHARS_H |
3 |
#define ONI_CHARS_H |
4 |
#endif |
5 |
|
6 |
#include "Daodan.h" |
7 |
#include <stdint.h> |
8 |
|
9 |
int DDr_TeamToTeamID(const char*); |
10 |
ONICALL ONrGameState_NewCharacter(int, int); |
11 |
int CHARTest(); |
12 |
|
13 |
typedef struct { |
14 |
float X; |
15 |
float Y; |
16 |
float Z; |
17 |
} Vector3; //probably move to utilities... |
18 |
|
19 |
|
20 |
|
21 |
typedef struct { |
22 |
char Type[4]; //"CHAR" etc. |
23 |
int ObjectId; //not needed |
24 |
int Flags; //The flags of the object...not used for CHAR |
25 |
Vector3 Position; //Position of Object |
26 |
Vector3 Rotation; //Rotation of Object |
27 |
int EditorCallbacks; //Lets try not to mess with it for now. :P |
28 |
int field_28; //unknown |
29 |
|
30 |
} OSD_Header; |
31 |
|
32 |
|
33 |
typedef struct { |
34 |
int32_t Options; //A bitset. Someone had better define these |
35 |
char Class[64]; //Name of the ONCC we use. ONCCName in idb |
36 |
char Name[32]; //Name of the character. ie: ai2_spawn Muro |
37 |
char Weapon[64]; //Name of the weapon he holds. ONWCName in idb |
38 |
char ScriptSpawn[32]; //Script function called when char spawns |
39 |
char ScriptDie[32]; //Script function called when char dies |
40 |
char ScriptAware[32]; //Script function called when char detects something |
41 |
char ScriptAlarm[32]; //Script function called when char is alarmed at something |
42 |
char ScriptHurt[32]; //Script function called when char is hurt for the first time |
43 |
char ScriptDefeat[32]; //Script function called when char is at 1 HP |
44 |
char ScriptNoPath[32]; //Script function called when char loses path. Broken. |
45 |
char ScriptNoAmmo[32]; //Script function called when char is out of ammo for the first time. Char must have ammo at spawn. |
46 |
int32_t AdditionalHealth; //Additional Health given to the character |
47 |
int16_t AmmoUsed; //Ammo given for the char to use |
48 |
int16_t AmmoDropped; //Ammo the char drops |
49 |
int16_t CellsUsed; //Cells given for the char to use |
50 |
int16_t CellsDropped; //Cells the char drops |
51 |
int16_t HypoUsed; //Hypo given for the char to use |
52 |
int16_t HypoDropped; //Hypo the char drops |
53 |
int16_t ShieldUsed; //Bullet shield given for the char to use |
54 |
int16_t ShieldDropped; //Bullet shield the char drops |
55 |
int16_t CloakUsed; //Phase Cloak given for the char to use |
56 |
int16_t CloakDropped; //Phase Cloak the char drops |
57 |
int16_t NCIUsed; //Don't use this... |
58 |
int16_t NCIDropped; //Don't use this... |
59 |
|
60 |
int32_t TeamID; //Team ID |
61 |
int32_t AmmoPercent; //Percent of weapon ammo full |
62 |
int32_t JobID; //Job ID... |
63 |
//0 - none |
64 |
//1 - idle |
65 |
//2 - guard (never used in Oni) |
66 |
//3 - patrol |
67 |
//4 - teambattle (never used in Oni) |
68 |
int16_t PatrolID; //patrol path ID (reference to the Patrol_Path.BINA file) |
69 |
int16_t CombatID; //combat ID (reference to the Combat.BINA file) |
70 |
int16_t MeleeID; //melee ID (reference to the Melee Profile.BINA file) |
71 |
int16_t NeutralID; //neutral ID (reference to the Neutral.BINA file) |
72 |
int32_t AlarmGroups; //Bitset. http://wiki.oni2.net/CHAR |
73 |
int32_t InitialAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
74 |
int32_t MinimalAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
75 |
int32_t StartJobAlertLevel; //0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
76 |
int32_t InvestigatingAlertLevel;//0 - lull, 1 - low, 2 - medium, 3 - high, 4 - combat |
77 |
int32_t PursuitStrongLow; |
78 |
int32_t PursuitWeakLow; |
79 |
int32_t PursuitStrongHigh; |
80 |
int32_t PursuitWeakHigh; |
81 |
int32_t Pursuit5; |
82 |
int32_t field_1FC; |
83 |
} CharacterOSD; |
84 |
|
85 |
typedef struct { |
86 |
OSD_Header Header; |
87 |
CharacterOSD OSD; |
88 |
} CharacterObject; |