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