1 /*
2 ===========================================================================
3 Copyright (C) 2000 - 2013, Raven Software, Inc.
4 Copyright (C) 2001 - 2013, Activision, Inc.
5 Copyright (C) 2013 - 2015, OpenJK contributors
6 
7 This file is part of the OpenJK source code.
8 
9 OpenJK is free software; you can redistribute it and/or modify it
10 under the terms of the GNU General Public License version 2 as
11 published by the Free Software Foundation.
12 
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 GNU General Public License for more details.
17 
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, see <http://www.gnu.org/licenses/>.
20 ===========================================================================
21 */
22 
23 #ifndef __OBJECTIVES_H__
24 #define __OBJECTIVES_H__
25 
26 // mission Objectives
27 
28 
29 // DO NOT CHANGE MAX_MISSION_OBJ. IT AFFECTS THE SAVEGAME STRUCTURE
30 
31 typedef enum //# Objective_e
32 {
33 	//=================================================
34 	//
35 	//=================================================
36 
37 	LIGHTSIDE_OBJ = 0,
38 	HOTH2_OBJ1,
39 	HOTH2_OBJ2,
40 	HOTH2_OBJ3,
41 	HOTH3_OBJ1,
42 	HOTH3_OBJ2,
43 	HOTH3_OBJ3,
44 	T2_DPREDICAMENT_OBJ1,
45 	T2_DPREDICAMENT_OBJ2,
46 	T2_DPREDICAMENT_OBJ3,
47 	T2_DPREDICAMENT_OBJ4,
48 	T2_RANCOR_OBJ1,
49 	T2_RANCOR_OBJ2,
50 	T2_RANCOR_OBJ3,
51 	T2_RANCOR_OBJ4,
52 	T2_RANCOR_OBJ5,
53 	T2_RANCOR_OBJ5_2,
54 	T2_RANCOR_OBJ6,
55 	T2_WEDGE_OBJ1,
56 	T2_WEDGE_OBJ2,
57 	T2_WEDGE_OBJ3,
58 	T2_WEDGE_OBJ4,
59 	T2_WEDGE_OBJ5,
60 	T2_WEDGE_OBJ6,
61 	T2_WEDGE_OBJ7,
62 	T2_WEDGE_OBJ8,
63 	T2_WEDGE_OBJ9,
64 	T2_WEDGE_OBJ10,
65 	T2_WEDGE_OBJ11,
66 	T2_WEDGE_OBJ12,
67 	T3_RIFT_OBJ1,
68 	T3_RIFT_OBJ2,
69 	T3_RIFT_OBJ3,
70 	T1_DANGER_OBJ1,
71 	T1_DANGER_OBJ2,
72 	T1_DANGER_OBJ3,
73 	T1_DANGER_OBJ4,
74 	T1_DANGER_OBJ5,
75 	T3_BOUNTY_OBJ1,
76 	T3_BOUNTY_OBJ2,
77 	T3_BOUNTY_OBJ3,
78 	T3_BOUNTY_OBJ4,
79 	T3_BOUNTY_OBJ5,
80 	T3_BOUNTY_OBJ6,
81 	T3_BOUNTY_OBJ7,
82 	T3_BOUNTY_OBJ8,
83 	T3_BOUNTY_OBJ9,
84 	T2_ROGUE_OBJ1,
85 	T2_ROGUE_OBJ2,
86 	T2_TRIP_OBJ1,
87 	T2_TRIP_OBJ2,
88 	T3_BYSS_OBJ1,
89 	T3_BYSS_OBJ2,
90 	T3_BYSS_OBJ3,
91 	T3_HEVIL_OBJ1,
92 	T3_HEVIL_OBJ2,
93 	T3_HEVIL_OBJ3,
94 	T3_STAMP_OBJ1,
95 	T3_STAMP_OBJ2,
96 	T3_STAMP_OBJ3,
97 	T3_STAMP_OBJ4,
98 	TASPIR1_OBJ1,
99 	TASPIR1_OBJ2,
100 	TASPIR1_OBJ3,
101 	TASPIR1_OBJ4,
102 	TASPIR2_OBJ1,
103 	TASPIR2_OBJ2,
104 	VJUN1_OBJ1,
105 	VJUN1_OBJ2,
106 	VJUN2_OBJ1,
107 	VJUN3_OBJ1,
108 	YAVIN1_OBJ1,
109 	YAVIN1_OBJ2,
110 	YAVIN2_OBJ1,
111 	T1_FATAL_OBJ1,
112 	T1_FATAL_OBJ2,
113 	T1_FATAL_OBJ3,
114 	T1_FATAL_OBJ4,
115 	T1_FATAL_OBJ5,
116 	T1_FATAL_OBJ6,
117 	KOR1_OBJ1,
118 	KOR1_OBJ2,
119 	KOR2_OBJ1,
120 	KOR2_OBJ2,
121 	KOR2_OBJ3,
122 	KOR2_OBJ4,
123 	T1_RAIL_OBJ1,
124 	T1_RAIL_OBJ2,
125 	T1_RAIL_OBJ3,
126 	T1_SOUR_OBJ1,
127 	T1_SOUR_OBJ2,
128 	T1_SOUR_OBJ3,
129 	T1_SOUR_OBJ4,
130 	T1_SURPRISE_OBJ1,
131 	T1_SURPRISE_OBJ2,
132 	T1_SURPRISE_OBJ3,
133 	T1_SURPRISE_OBJ4,
134 
135 	//# #eol
136 	MAX_OBJECTIVES,
137 } objectiveNumber_t;
138 
139 
140 typedef enum //# MissionFailed_e
141 {
142 	MISSIONFAILED_JAN=0,		//#
143 	MISSIONFAILED_LUKE,			//#
144 	MISSIONFAILED_LANDO,		//#
145 	MISSIONFAILED_R5D2,			//#
146 	MISSIONFAILED_WARDEN,		//#
147 	MISSIONFAILED_PRISONERS,	//#
148 	MISSIONFAILED_EMPLACEDGUNS,	//#
149 	MISSIONFAILED_LADYLUCK,		//#
150 	MISSIONFAILED_KYLECAPTURE,	//#
151 	MISSIONFAILED_TOOMANYALLIESDIED,	//#
152 	MISSIONFAILED_CHEWIE,		//#
153 	MISSIONFAILED_KYLE,			//#
154 	MISSIONFAILED_ROSH,			//#
155 	MISSIONFAILED_WEDGE,		//#
156 	MISSIONFAILED_TURNED,		//# Turned on your friends.
157 
158 	//# #eol
159 	MAX_MISSIONFAILED,
160 } missionFailed_t;
161 
162 
163 typedef enum //# StatusText_e
164 {
165 	//=================================================
166 	//
167 	//=================================================
168 	STAT_INSUBORDINATION = 0,		//# Starfleet will not tolerate such insubordination
169 	STAT_YOUCAUSEDDEATHOFTEAMMATE,	//# You caused the death of a teammate.
170 	STAT_DIDNTPROTECTTECH,			//# You failed to protect Chell, your technician.
171 	STAT_DIDNTPROTECT7OF9,			//# You failed to protect 7 of 9
172 	STAT_NOTSTEALTHYENOUGH,			//# You weren't quite stealthy enough
173 	STAT_STEALTHTACTICSNECESSARY,	//# Starfleet will not tolerate such insubordination
174 	STAT_WATCHYOURSTEP,				//# Watch your step
175 	STAT_JUDGEMENTMUCHDESIRED,		//# Your judgement leaves much to be desired
176 
177 	//# #eol
178 	MAX_STATUSTEXT,
179 } statusText_t;
180 
181 extern qboolean	missionInfo_Updated;
182 
183 #define SET_TACTICAL_OFF	0
184 #define SET_TACTICAL_ON		1
185 
186 #define SET_OBJ_HIDE		0
187 #define SET_OBJ_SHOW		1
188 #define SET_OBJ_PENDING		2
189 #define SET_OBJ_SUCCEEDED	3
190 #define SET_OBJ_FAILED		4
191 
192 #define OBJECTIVE_HIDE 0
193 #define OBJECTIVE_SHOW 1
194 
195 #define OBJECTIVE_STAT_PENDING		0
196 #define OBJECTIVE_STAT_SUCCEEDED	1
197 #define OBJECTIVE_STAT_FAILED		2
198 
199 extern int statusTextIndex;
200 
201 void OBJ_SaveObjectiveData(void);
202 void OBJ_LoadObjectiveData(void);
203 extern void OBJ_SetPendingObjectives(gentity_t *ent);
204 
205 #ifndef G_OBJECTIVES_CPP
206 
207 extern stringID_table_t objectiveTable [];
208 extern stringID_table_t statusTextTable [];
209 extern stringID_table_t missionFailedTable [];
210 
211 #else
212 
213 stringID_table_t objectiveTable [] =
214 {
215 	//=================================================
216 	//
217 	//=================================================
218 	ENUM2STRING(LIGHTSIDE_OBJ),
219 	ENUM2STRING(HOTH2_OBJ1),
220 	ENUM2STRING(HOTH2_OBJ2),
221 	ENUM2STRING(HOTH2_OBJ3),
222 	ENUM2STRING(HOTH3_OBJ1),
223 	ENUM2STRING(HOTH3_OBJ2),
224 	ENUM2STRING(HOTH3_OBJ3),
225 	ENUM2STRING(T2_DPREDICAMENT_OBJ1),
226 	ENUM2STRING(T2_DPREDICAMENT_OBJ2),
227 	ENUM2STRING(T2_DPREDICAMENT_OBJ3),
228 	ENUM2STRING(T2_DPREDICAMENT_OBJ4),
229 	ENUM2STRING(T2_RANCOR_OBJ1),
230 	ENUM2STRING(T2_RANCOR_OBJ2),
231 	ENUM2STRING(T2_RANCOR_OBJ3),
232 	ENUM2STRING(T2_RANCOR_OBJ4),
233 	ENUM2STRING(T2_RANCOR_OBJ5),
234 	ENUM2STRING(T2_RANCOR_OBJ5_2),
235 	ENUM2STRING(T2_RANCOR_OBJ6),
236 	ENUM2STRING(T2_WEDGE_OBJ1),
237 	ENUM2STRING(T2_WEDGE_OBJ2),
238 	ENUM2STRING(T2_WEDGE_OBJ3),
239 	ENUM2STRING(T2_WEDGE_OBJ4),
240 	ENUM2STRING(T2_WEDGE_OBJ5),
241 	ENUM2STRING(T2_WEDGE_OBJ6),
242 	ENUM2STRING(T2_WEDGE_OBJ7),
243 	ENUM2STRING(T2_WEDGE_OBJ8),
244 	ENUM2STRING(T2_WEDGE_OBJ9),
245 	ENUM2STRING(T2_WEDGE_OBJ10),
246 	ENUM2STRING(T2_WEDGE_OBJ11),
247 	ENUM2STRING(T2_WEDGE_OBJ12),
248 	ENUM2STRING(T3_RIFT_OBJ1),
249 	ENUM2STRING(T3_RIFT_OBJ2),
250 	ENUM2STRING(T3_RIFT_OBJ3),
251 	ENUM2STRING(T1_DANGER_OBJ1),
252 	ENUM2STRING(T1_DANGER_OBJ2),
253 	ENUM2STRING(T1_DANGER_OBJ3),
254 	ENUM2STRING(T1_DANGER_OBJ4),
255 	ENUM2STRING(T1_DANGER_OBJ5),
256 	ENUM2STRING(T3_BOUNTY_OBJ1),
257 	ENUM2STRING(T3_BOUNTY_OBJ2),
258 	ENUM2STRING(T3_BOUNTY_OBJ3),
259 	ENUM2STRING(T3_BOUNTY_OBJ4),
260 	ENUM2STRING(T3_BOUNTY_OBJ5),
261 	ENUM2STRING(T3_BOUNTY_OBJ6),
262 	ENUM2STRING(T3_BOUNTY_OBJ7),
263 	ENUM2STRING(T3_BOUNTY_OBJ8),
264 	ENUM2STRING(T3_BOUNTY_OBJ9),
265 	ENUM2STRING(T2_ROGUE_OBJ1),
266 	ENUM2STRING(T2_ROGUE_OBJ2),
267 	ENUM2STRING(T2_TRIP_OBJ1),
268 	ENUM2STRING(T2_TRIP_OBJ2),
269 	ENUM2STRING(T3_BYSS_OBJ1),
270 	ENUM2STRING(T3_BYSS_OBJ2),
271 	ENUM2STRING(T3_BYSS_OBJ3),
272 	ENUM2STRING(T3_HEVIL_OBJ1),
273 	ENUM2STRING(T3_HEVIL_OBJ2),
274 	ENUM2STRING(T3_HEVIL_OBJ3),
275 	ENUM2STRING(T3_STAMP_OBJ1),
276 	ENUM2STRING(T3_STAMP_OBJ2),
277 	ENUM2STRING(T3_STAMP_OBJ3),
278 	ENUM2STRING(T3_STAMP_OBJ4),
279 	ENUM2STRING(TASPIR1_OBJ1),
280 	ENUM2STRING(TASPIR1_OBJ2),
281 	ENUM2STRING(TASPIR1_OBJ3),
282 	ENUM2STRING(TASPIR1_OBJ4),
283 	ENUM2STRING(TASPIR2_OBJ1),
284 	ENUM2STRING(TASPIR2_OBJ2),
285 	ENUM2STRING(VJUN1_OBJ1),
286 	ENUM2STRING(VJUN1_OBJ2),
287 	ENUM2STRING(VJUN2_OBJ1),
288 	ENUM2STRING(VJUN3_OBJ1),
289 	ENUM2STRING(YAVIN1_OBJ1),
290 	ENUM2STRING(YAVIN1_OBJ2),
291 	ENUM2STRING(YAVIN2_OBJ1),
292 	ENUM2STRING(T1_FATAL_OBJ1),
293 	ENUM2STRING(T1_FATAL_OBJ2),
294 	ENUM2STRING(T1_FATAL_OBJ3),
295 	ENUM2STRING(T1_FATAL_OBJ4),
296 	ENUM2STRING(T1_FATAL_OBJ5),
297 	ENUM2STRING(T1_FATAL_OBJ6),
298 	ENUM2STRING(KOR1_OBJ1),
299 	ENUM2STRING(KOR1_OBJ2),
300 	ENUM2STRING(KOR2_OBJ1),
301 	ENUM2STRING(KOR2_OBJ2),
302 	ENUM2STRING(KOR2_OBJ3),
303 	ENUM2STRING(KOR2_OBJ4),
304 	ENUM2STRING(T1_RAIL_OBJ1),
305 	ENUM2STRING(T1_RAIL_OBJ2),
306 	ENUM2STRING(T1_RAIL_OBJ3),
307 	ENUM2STRING(T1_SOUR_OBJ1),
308 	ENUM2STRING(T1_SOUR_OBJ2),
309 	ENUM2STRING(T1_SOUR_OBJ3),
310 	ENUM2STRING(T1_SOUR_OBJ4),
311 	ENUM2STRING(T1_SURPRISE_OBJ1),
312 	ENUM2STRING(T1_SURPRISE_OBJ2),
313 	ENUM2STRING(T1_SURPRISE_OBJ3),
314 	ENUM2STRING(T1_SURPRISE_OBJ4),
315 
316 	//stringID_table_t Must end with a null entry
317 	{ "", 0 }
318 };
319 
320 stringID_table_t missionFailedTable [] =
321 {
322 	ENUM2STRING(MISSIONFAILED_JAN),			//# JAN DIED
323 	ENUM2STRING(MISSIONFAILED_LUKE),		//# LUKE DIED
324 	ENUM2STRING(MISSIONFAILED_LANDO),		//# LANDO DIED
325 	ENUM2STRING(MISSIONFAILED_R5D2),		//# R5D2 DIED
326 	ENUM2STRING(MISSIONFAILED_WARDEN),		//# THE WARDEN DIED
327 	ENUM2STRING(MISSIONFAILED_PRISONERS),	//#	TOO MANY PRISONERS DIED
328 	ENUM2STRING(MISSIONFAILED_EMPLACEDGUNS),//#	ALL EMPLACED GUNS GONE
329 	ENUM2STRING(MISSIONFAILED_LADYLUCK),	//#	LADY LUCK DISTROYED
330 	ENUM2STRING(MISSIONFAILED_KYLECAPTURE),	//# KYLE HAS BEEN CAPTURED
331 	ENUM2STRING(MISSIONFAILED_TOOMANYALLIESDIED),	//# TOO MANY ALLIES DIED
332 	ENUM2STRING(MISSIONFAILED_CHEWIE),
333 	ENUM2STRING(MISSIONFAILED_KYLE),
334 	ENUM2STRING(MISSIONFAILED_ROSH),
335 	ENUM2STRING(MISSIONFAILED_WEDGE),
336 	ENUM2STRING(MISSIONFAILED_TURNED),		//# Turned on your friends.
337 
338 	//stringID_table_t Must end with a null entry
339 	{ "", 0 }
340 };
341 
342 stringID_table_t statusTextTable [] =
343 {
344 	//=================================================
345 	//
346 	//=================================================
347 	ENUM2STRING(STAT_INSUBORDINATION),				//# Starfleet will not tolerate such insubordination
348 	ENUM2STRING(STAT_YOUCAUSEDDEATHOFTEAMMATE),		//# You caused the death of a teammate.
349 	ENUM2STRING(STAT_DIDNTPROTECTTECH),				//# You failed to protect Chell, your technician.
350 	ENUM2STRING(STAT_DIDNTPROTECT7OF9),				//# You failed to protect 7 of 9
351 	ENUM2STRING(STAT_NOTSTEALTHYENOUGH),			//# You weren't quite stealthy enough
352 	ENUM2STRING(STAT_STEALTHTACTICSNECESSARY),		//# Starfleet will not tolerate such insubordination
353 	ENUM2STRING(STAT_WATCHYOURSTEP),				//# Watch your step
354 	ENUM2STRING(STAT_JUDGEMENTMUCHDESIRED),			//# Your judgement leaves much to be desired
355 	//stringID_table_t Must end with a null entry
356 	{ "", 0 }
357 };
358 
359 #endif// #ifndef G_OBJECTIVES_CPP
360 
361 
362 #endif// #ifndef __OBJECTIVES_H__
363 
364