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 	KEJIM_POST_OBJ1 = 0,		//# KEJIM POST
37 	KEJIM_POST_OBJ2,			//# KEJIM POST
38 	KEJIM_BASE_OBJ1,			//# KEJIM BASE
39 	KEJIM_BASE_OBJ2,			//# KEJIM BASE
40 	KEJIM_BASE_OBJ3,			//# KEJIM BASE
41 	ARTUS_MINE_OBJ1,			//# ARTUS MINE
42 	ARTUS_MINE_OBJ2,			//# ARTUS MINE
43 	ARTUS_MINE_OBJ3,			//# ARTUS MINE
44 	ARTUS_DETENTION_OBJ1,		//# ARTUS DETENTION
45 	ARTUS_DETENTION_OBJ2,		//# ARTUS DETENTION
46 	ARTUS_TOPSIDE_OBJ1,			//# ARTUS TOPSIDE
47 	ARTUS_TOPSIDE_OBJ2,			//# ARTUS TOPSIDE
48 	YAVIN_TEMPLE_OBJ1,			//# YAVIN TEMPLE
49 	YAVIN_TRIAL_OBJ1,			//# YAVIN TRIAL
50 	YAVIN_TRIAL_OBJ2,			//# YAVIN TRIAL
51 	NS_STREETS_OBJ1,			//# NS STREETS
52 	NS_STREETS_OBJ2,			//# NS STREETS
53 	NS_STREETS_OBJ3,			//# NS STREETS
54 	NS_HIDEOUT_OBJ1,			//# NS HIDEOUT
55 	NS_HIDEOUT_OBJ2,			//# NS HIDEOUT
56 	NS_STARPAD_OBJ1,			//# NS STARPAD
57 	NS_STARPAD_OBJ2,			//# NS STARPAD
58 	NS_STARPAD_OBJ3,			//# NS STARPAD
59 	NS_STARPAD_OBJ4,			//# NS STARPAD
60 	NS_STARPAD_OBJ5,			//# NS STARPAD
61 	BESPIN_UNDERCITY_OBJ1,		//# BESPIN UNDERCITY
62 	BESPIN_UNDERCITY_OBJ2,		//# BESPIN UNDERCITY
63 	BESPIN_STREETS_OBJ1,		//# BESPIN STREETS
64 	BESPIN_STREETS_OBJ2,		//# BESPIN STREETS
65 	BESPIN_PLATFORM_OBJ1,		//# BESPIN PLATFORM
66 	BESPIN_PLATFORM_OBJ2,		//# BESPIN PLATFORM
67 	CAIRN_BAY_OBJ1,				//# CAIRN BAY
68 	CAIRN_BAY_OBJ2,				//# CAIRN BAY
69 	CAIRN_ASSEMBLY_OBJ1,		//# CAIRN ASSEMBLY
70 	CAIRN_REACTOR_OBJ1,			//# CAIRN REACTOR
71 	CAIRN_REACTOR_OBJ2,			//# CAIRN REACTOR
72 	CAIRN_DOCK1_OBJ1,			//# CAIRN DOCK1
73 	CAIRN_DOCK1_OBJ2,			//# CAIRN DOCK1
74 	DOOM_COMM_OBJ1,				//# DOOM COMM
75 	DOOM_COMM_OBJ2,				//# DOOM COMM
76 	DOOM_COMM_OBJ3,				//# DOOM COMM
77 	DOOM_DETENTION_OBJ1,		//# DOOM DETENTION
78 	DOOM_DETENTION_OBJ2,		//# DOOM DETENTION
79 	DOOM_SHIELDS_OBJ1,			//# DOOM SHIELDS
80 	DOOM_SHIELDS_OBJ2,			//# DOOM SHIELDS
81 	YAVIN_SWAMP_OBJ1,			//# YAVIN SWAMP
82 	YAVIN_SWAMP_OBJ2,			//# YAVIN SWAMP
83 	YAVIN_CANYON_OBJ1,			//# YAVIN CANYON
84 	YAVIN_CANYON_OBJ2,			//# YAVIN CANYON
85 	YAVIN_COURTYARD_OBJ1,		//# YAVIN COURTYARD
86 	YAVIN_COURTYARD_OBJ2,		//# YAVIN COURTYARD
87 	YAVIN_FINAL_OBJ1,			//# YAVIN FINAL
88 	KEJIM_POST_OBJ3,			//# KEJIM POST - GRAPHICS IN IT.
89 	KEJIM_POST_OBJ4,			//# KEJIM POST - GRAPHICS IN IT.
90 	KEJIM_POST_OBJ5,			//# KEJIM POST - GRAPHICS IN IT.
91 	ARTUS_DETENTION_OBJ3,		//# ARTUS DETENTION
92 	DOOM_COMM_OBJ4,				//# DOOM COMM - GRAPHICS IN IT.
93 	DOOM_SHIELDS_OBJ3,			//# DOOM SHIELDS
94 	DEMO_OBJ1,					//# DEMO
95 	DEMO_OBJ2,					//# DEMO
96 	DEMO_OBJ3,					//# DEMO
97 	DEMO_OBJ4,					//# DEMO
98 
99 	//# #eol
100 	MAX_OBJECTIVES,
101 } objectiveNumber_t;
102 
103 
104 typedef enum //# MissionFailed_e
105 {
106 	MISSIONFAILED_JAN=0,		//#
107 	MISSIONFAILED_LUKE,			//#
108 	MISSIONFAILED_LANDO,		//#
109 	MISSIONFAILED_R5D2,			//#
110 	MISSIONFAILED_WARDEN,		//#
111 	MISSIONFAILED_PRISONERS,	//#
112 	MISSIONFAILED_EMPLACEDGUNS,	//#
113 	MISSIONFAILED_LADYLUCK,		//#
114 	MISSIONFAILED_KYLECAPTURE,	//#
115 	MISSIONFAILED_TOOMANYALLIESDIED,	//#
116 	//# #eol
117 	MAX_MISSIONFAILED,
118 } missionFailed_t;
119 
120 
121 typedef enum //# StatusText_e
122 {
123 	//=================================================
124 	//
125 	//=================================================
126 	STAT_INSUBORDINATION = 0,		//# Starfleet will not tolerate such insubordination
127 	STAT_YOUCAUSEDDEATHOFTEAMMATE,	//# You caused the death of a teammate.
128 	STAT_DIDNTPROTECTTECH,			//# You failed to protect Chell, your technician.
129 	STAT_DIDNTPROTECT7OF9,			//# You failed to protect 7 of 9
130 	STAT_NOTSTEALTHYENOUGH,			//# You weren't quite stealthy enough
131 	STAT_STEALTHTACTICSNECESSARY,	//# Starfleet will not tolerate such insubordination
132 	STAT_WATCHYOURSTEP,				//# Watch your step
133 	STAT_JUDGEMENTMUCHDESIRED,		//# Your judgement leaves much to be desired
134 
135 	//# #eol
136 	MAX_STATUSTEXT,
137 } statusText_t;
138 
139 extern qboolean	missionInfo_Updated;
140 
141 #define SET_TACTICAL_OFF	0
142 #define SET_TACTICAL_ON		1
143 
144 #define SET_OBJ_HIDE		0
145 #define SET_OBJ_SHOW		1
146 #define SET_OBJ_PENDING		2
147 #define SET_OBJ_SUCCEEDED	3
148 #define SET_OBJ_FAILED		4
149 
150 #define OBJECTIVE_HIDE 0
151 #define OBJECTIVE_SHOW 1
152 
153 #define OBJECTIVE_STAT_PENDING		0
154 #define OBJECTIVE_STAT_SUCCEEDED	1
155 #define OBJECTIVE_STAT_FAILED		2
156 
157 extern int statusTextIndex;
158 
159 void OBJ_SaveObjectiveData(void);
160 void OBJ_LoadObjectiveData(void);
161 extern void OBJ_SetPendingObjectives(gentity_t *ent);
162 
163 #ifndef G_OBJECTIVES_CPP
164 
165 extern stringID_table_t objectiveTable [];
166 extern stringID_table_t statusTextTable [];
167 extern stringID_table_t missionFailedTable [];
168 
169 #else
170 
171 stringID_table_t objectiveTable [] =
172 {
173 	//=================================================
174 	//
175 	//=================================================
176 	ENUM2STRING(KEJIM_POST_OBJ1),		//# KEJIM POST
177 	ENUM2STRING(KEJIM_POST_OBJ2),			//# KEJIM POST
178 	ENUM2STRING(KEJIM_BASE_OBJ1),			//# KEJIM BASE
179 	ENUM2STRING(KEJIM_BASE_OBJ2),			//# KEJIM BASE
180 	ENUM2STRING(KEJIM_BASE_OBJ3),			//# KEJIM BASE
181 	ENUM2STRING(ARTUS_MINE_OBJ1),			//# ARTUS MINE
182 	ENUM2STRING(ARTUS_MINE_OBJ2),			//# ARTUS MINE
183 	ENUM2STRING(ARTUS_MINE_OBJ3),			//# ARTUS MINE
184 	ENUM2STRING(ARTUS_DETENTION_OBJ1),		//# ARTUS DETENTION
185 	ENUM2STRING(ARTUS_DETENTION_OBJ2),		//# ARTUS DETENTION
186 	ENUM2STRING(ARTUS_TOPSIDE_OBJ1),			//# ARTUS TOPSIDE
187 	ENUM2STRING(ARTUS_TOPSIDE_OBJ2),			//# ARTUS TOPSIDE
188 	ENUM2STRING(YAVIN_TEMPLE_OBJ1),			//# YAVIN TEMPLE
189 	ENUM2STRING(YAVIN_TRIAL_OBJ1),			//# YAVIN TRIAL
190 	ENUM2STRING(YAVIN_TRIAL_OBJ2),			//# YAVIN TRIAL
191 	ENUM2STRING(NS_STREETS_OBJ1),			//# NS STREETS
192 	ENUM2STRING(NS_STREETS_OBJ2),			//# NS STREETS
193 	ENUM2STRING(NS_STREETS_OBJ3),			//# NS STREETS
194 	ENUM2STRING(NS_HIDEOUT_OBJ1),			//# NS HIDEOUT
195 	ENUM2STRING(NS_HIDEOUT_OBJ2),			//# NS HIDEOUT
196 	ENUM2STRING(NS_STARPAD_OBJ1),			//# NS STARPAD
197 	ENUM2STRING(NS_STARPAD_OBJ2),			//# NS STARPAD
198 	ENUM2STRING(NS_STARPAD_OBJ3),			//# NS STARPAD
199 	ENUM2STRING(NS_STARPAD_OBJ4),			//# NS STARPAD
200 	ENUM2STRING(NS_STARPAD_OBJ5),			//# NS STARPAD
201 	ENUM2STRING(BESPIN_UNDERCITY_OBJ1),		//# BESPIN UNDERCITY
202 	ENUM2STRING(BESPIN_UNDERCITY_OBJ2),		//# BESPIN UNDERCITY
203 	ENUM2STRING(BESPIN_STREETS_OBJ1),		//# BESPIN STREETS
204 	ENUM2STRING(BESPIN_STREETS_OBJ2),		//# BESPIN STREETS
205 	ENUM2STRING(BESPIN_PLATFORM_OBJ1),		//# BESPIN PLATFORM
206 	ENUM2STRING(BESPIN_PLATFORM_OBJ2),		//# BESPIN PLATFORM
207 	ENUM2STRING(CAIRN_BAY_OBJ1),				//# CAIRN BAY
208 	ENUM2STRING(CAIRN_BAY_OBJ2),				//# CAIRN BAY
209 	ENUM2STRING(CAIRN_ASSEMBLY_OBJ1),		//# CAIRN ASSEMBLY
210 	ENUM2STRING(CAIRN_REACTOR_OBJ1),			//# CAIRN REACTOR
211 	ENUM2STRING(CAIRN_REACTOR_OBJ2),			//# CAIRN REACTOR
212 	ENUM2STRING(CAIRN_DOCK1_OBJ1),			//# CAIRN DOCK1
213 	ENUM2STRING(CAIRN_DOCK1_OBJ2),			//# CAIRN DOCK1
214 	ENUM2STRING(DOOM_COMM_OBJ1),				//# DOOM COMM
215 	ENUM2STRING(DOOM_COMM_OBJ2),				//# DOOM COMM
216 	ENUM2STRING(DOOM_COMM_OBJ3),				//# DOOM COMM
217 	ENUM2STRING(DOOM_DETENTION_OBJ1),		//# DOOM DETENTION
218 	ENUM2STRING(DOOM_DETENTION_OBJ2),		//# DOOM DETENTION
219 	ENUM2STRING(DOOM_SHIELDS_OBJ1),			//# DOOM SHIELDS
220 	ENUM2STRING(DOOM_SHIELDS_OBJ2),			//# DOOM SHIELDS
221 	ENUM2STRING(YAVIN_SWAMP_OBJ1),			//# YAVIN SWAMP
222 	ENUM2STRING(YAVIN_SWAMP_OBJ2),			//# YAVIN SWAMP
223 	ENUM2STRING(YAVIN_CANYON_OBJ1),			//# YAVIN CANYON
224 	ENUM2STRING(YAVIN_CANYON_OBJ2),			//# YAVIN CANYON
225 	ENUM2STRING(YAVIN_COURTYARD_OBJ1),		//# YAVIN COURTYARD
226 	ENUM2STRING(YAVIN_COURTYARD_OBJ2),		//# YAVIN COURTYARD
227 	ENUM2STRING(YAVIN_FINAL_OBJ1),			//# YAVIN FINAL
228 	ENUM2STRING(KEJIM_POST_OBJ3),			//# KEJIM POST - GRAPHICS IN IT.
229 	ENUM2STRING(KEJIM_POST_OBJ4),			//# KEJIM POST - GRAPHICS IN IT.
230 	ENUM2STRING(KEJIM_POST_OBJ5),			//# KEJIM POST - GRAPHICS IN IT.
231 	ENUM2STRING(ARTUS_DETENTION_OBJ3),		//# ARTUS DETENTION
232 	ENUM2STRING(DOOM_COMM_OBJ4),			//# DOOM COMM - GRAPHICS IN IT. IT MUST BE LAST IN THE LIST
233 	ENUM2STRING(DOOM_SHIELDS_OBJ3),			//# DOOM SHIELDS
234 	ENUM2STRING(DEMO_OBJ1),					//# DEMO
235 	ENUM2STRING(DEMO_OBJ2),					//# DEMO
236 	ENUM2STRING(DEMO_OBJ3),					//# DEMO
237 	ENUM2STRING(DEMO_OBJ4),					//# DEMO
238 
239 	//stringID_table_t Must end with a null entry
240 	{"", 0}
241 };
242 
243 stringID_table_t missionFailedTable [] =
244 {
245 	ENUM2STRING(MISSIONFAILED_JAN),			//# JAN DIED
246 	ENUM2STRING(MISSIONFAILED_LUKE),		//# LUKE DIED
247 	ENUM2STRING(MISSIONFAILED_LANDO),		//# LANDO DIED
248 	ENUM2STRING(MISSIONFAILED_R5D2),		//# R5D2 DIED
249 	ENUM2STRING(MISSIONFAILED_WARDEN),		//# THE WARDEN DIED
250 	ENUM2STRING(MISSIONFAILED_PRISONERS),	//#	TOO MANY PRISONERS DIED
251 	ENUM2STRING(MISSIONFAILED_EMPLACEDGUNS),//#	ALL EMPLACED GUNS GONE
252 	ENUM2STRING(MISSIONFAILED_LADYLUCK),	//#	LADY LUCK DISTROYED
253 	ENUM2STRING(MISSIONFAILED_KYLECAPTURE),	//# KYLE HAS BEEN CAPTURED
254 	ENUM2STRING(MISSIONFAILED_TOOMANYALLIESDIED),	//# TOO MANY ALLIES DIED
255 
256 	//stringID_table_t Must end with a null entry
257 	{"", 0}
258 };
259 
260 stringID_table_t statusTextTable [] =
261 {
262 	//=================================================
263 	//
264 	//=================================================
265 	ENUM2STRING(STAT_INSUBORDINATION),				//# Starfleet will not tolerate such insubordination
266 	ENUM2STRING(STAT_YOUCAUSEDDEATHOFTEAMMATE),		//# You caused the death of a teammate.
267 	ENUM2STRING(STAT_DIDNTPROTECTTECH),				//# You failed to protect Chell, your technician.
268 	ENUM2STRING(STAT_DIDNTPROTECT7OF9),				//# You failed to protect 7 of 9
269 	ENUM2STRING(STAT_NOTSTEALTHYENOUGH),			//# You weren't quite stealthy enough
270 	ENUM2STRING(STAT_STEALTHTACTICSNECESSARY),		//# Starfleet will not tolerate such insubordination
271 	ENUM2STRING(STAT_WATCHYOURSTEP),				//# Watch your step
272 	ENUM2STRING(STAT_JUDGEMENTMUCHDESIRED),			//# Your judgement leaves much to be desired
273 	//stringID_table_t Must end with a null entry
274 	{"", 0}
275 };
276 
277 #endif// #ifndef G_OBJECTIVES_CPP
278 
279 
280 #endif// #ifndef __OBJECTIVES_H__
281 
282