1 #ifndef __SOLDER_PROFILE_H
2 #define __SOLDER_PROFILE_H
3
4 #include "Debug.h"
5 #include "JA2Types.h"
6 #include "Soldier_Profile_Type.h"
7
8
9 extern INT8 gbSkillTraitBonus[NUM_SKILLTRAITS];
10 extern BOOLEAN gfPotentialTeamChangeDuringDeath;
11
12 extern MERCPROFILESTRUCT gMercProfiles[NUM_PROFILES];
13
GetProfile(ProfileID const id)14 static inline MERCPROFILESTRUCT& GetProfile(ProfileID const id)
15 {
16 if (id < lengthof(gMercProfiles))
17 return gMercProfiles[id];
18 SLOGA("invalid profile id %d", id);
19 abort();
20 }
21
22 //enums for the mercs
23 enum NPCIDs
24 {
25 BARRY = 0,
26 BLOOD = 1,
27 LYNX = 2,
28 GRIZZLY = 3,
29 VICKY = 4,
30 TREVOR = 5,
31 GRUNTY = 6,
32 IVAN = 7,
33 STEROID = 8,
34 IGOR = 9,
35 SHADOW = 10,
36 RED = 11,
37 REAPER = 12,
38 FIDEL = 13,
39 FOX = 14,
40 SIDNEY = 15,
41 GUS = 16,
42 BUNS = 17,
43 ICE = 18,
44 SPIDER = 19,
45 CLIFF = 20,
46 RAVEN = 25,
47 MAGIC = 29,
48 DR_Q = 33,
49 NAILS = 34,
50 SCOPE = 36,
51
52 BIFF = 40,
53 HAYWIRE,
54 GASKET,
55 RAZOR,
56 FLO,
57 GUMPY,
58 LARRY_NORMAL,
59 LARRY_DRUNK,
60 COUGAR,
61 NUMB,
62 BUBBA,
63
64 MIGUEL = 57,
65 CARLOS,
66 IRA,
67 DIMITRI,
68
69 DEVIN, // 61
70 ROBOT,
71 HAMOUS,
72 SLAY,
73 RPC65,
74 DYNAMO,
75 SHANK,
76 IGGY,
77 VINCE,
78 CONRAD,
79
80 RPC71, // 71
81 MADDOG,
82 DARREL,
83 PERKO,
84 QUEEN,
85 AUNTIE,
86 ENRICO,
87 CARMEN,
88 JOE,
89 STEVE,
90
91 RAT, // 81
92 ANNIE,
93 CHRIS,
94 BOB,
95 BRENDA,
96 KINGPIN,
97 DARREN,
98 MARIA,
99 ANGEL,
100 JOEY,
101
102 TONY, // 91
103 FRANK,
104 SPIKE,
105 DAMON,
106 KYLE,
107 MICKY,
108 SKYRIDER,
109 PABLO,
110 SAL,
111 FATHER,
112
113 FATIMA, // 101
114 WARDEN,
115 GORDON,
116 GABBY,
117 ERNEST,
118 FRED,
119 MADAME,
120 YANNI,
121 MARTHA,
122 TIFFANY,
123
124 T_REX, // 111
125 DRUGGIST, // ELGIN
126 JAKE,
127 PACOS,
128 GERARD,
129 SKIPPER,
130 HANS,
131 JOHN,
132 MARY,
133 GENERAL,
134
135 SERGEANT, // 121
136 ARMAND,
137 LORA,
138 FRANZ,
139 HOWARD,
140 SAM,
141 ELDIN,
142 ARNIE,
143 TINA,
144 FREDO,
145
146 WALTER, // 131
147 JENNY,
148 BILLY,
149 BREWSTER,
150 ELLIOT,
151 DEREK,
152 OLIVER,
153 WALDO,
154 DOREEN,
155 JIM,
156
157 JACK, // 141
158 OLAF,
159 RAY,
160 OLGA,
161 TYRONE,
162 MADLAB,
163 KEITH,
164 MATT,
165 MIKE,
166 DARYL,
167
168 HERVE, // 151
169 PETER,
170 ALBERTO,
171 CARLO,
172 MANNY,
173 OSWALD,
174 CALVIN,
175 CARL,
176 SPECK,
177
178 PROF_HUMMER,
179
180 PROF_ELDERODO, // 161
181 PROF_ICECREAM,
182 PROF_HELICOPTER,
183 NPC164,
184 NPC165,
185 NPC166,
186 NPC167,
187 NPC168,
188 NPC169
189 };
190
191 BOOLEAN IsProfileIdAnAimOrMERCMerc(UINT8 ubProfileID);
192
193 void LoadMercProfiles();
194
195 // Overload the default for the face index (which is the profile ID)
196 void SetProfileFaceData(ProfileID, UINT8 face_idx, UINT16 eyes_x, UINT16 eyes_y, UINT16 mouth_x, UINT16 mouth_y);
197
198 SOLDIERTYPE* FindSoldierByProfileID(ProfileID);
199 SOLDIERTYPE* FindSoldierByProfileIDOnPlayerTeam(ProfileID);
200
201 BOOLEAN RecruitRPC( UINT8 ubCharNum );
202
203 BOOLEAN RecruitEPC( UINT8 ubCharNum );
204 BOOLEAN UnRecruitEPC(ProfileID);
205
206 INT8 WhichBuddy( UINT8 ubCharNum, UINT8 ubBuddy );
207 INT8 WhichHated( UINT8 ubCharNum, UINT8 ubHated );
208
209 INT8 GetFirstBuddyOnTeam(MERCPROFILESTRUCT const&);
210
211 SOLDIERTYPE* ChangeSoldierTeam(SOLDIERTYPE*, UINT8 team);
212
213 bool IsProfileATerrorist(ProfileID);
214 BOOLEAN IsProfileAHeadMiner( UINT8 ubProfile );
215
216 void UpdateSoldierPointerDataIntoProfile();
217
218
219 void DecideOnAssassin();
220
221 extern BOOLEAN gubNumTerrorists;
222
223 void MakeRemainingTerroristsTougher( void );
224 void MakeRemainingAssassinsTougher();
225 SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier );
226
227 BOOLEAN DoesNPCOwnBuilding( SOLDIERTYPE *pSoldier, INT16 sGridNo );
228
229 #endif
230