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