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 // Filename:-	g_functions.h
24 //
25 
26 #ifndef G_FUNCTIONS
27 #define G_FUNCTIONS
28 
29 #undef thinkFunc_t
30 #undef clThinkFunc_t
31 #undef reachedFunc_t
32 #undef blockedFunc_t
33 #undef touchFunc_t
34 #undef useFunc_t
35 #undef painFunc_t
36 #undef dieFunc_t
37 
38 //	void		(*think)(gentity_t *self);
39 typedef enum
40 {
41 	thinkF_NULL = 0,
42 	//
43 	thinkF_teleporter_think,
44 	thinkF_funcBBrushDieGo,
45 	thinkF_ExplodeDeath,
46 	thinkF_RespawnItem,
47 	thinkF_G_FreeEntity,
48 	thinkF_FinishSpawningItem,
49 	thinkF_locateCamera,
50 	thinkF_G_RunObject,
51 	thinkF_ReturnToPos1,
52 	thinkF_Use_BinaryMover_Go,
53 	thinkF_Think_MatchTeam,
54 	thinkF_Think_BeginMoving,
55 	thinkF_Think_SetupTrainTargets,
56 	thinkF_Think_SpawnNewDoorTrigger,
57 	thinkF_ref_link,
58 	thinkF_Think_Target_Delay,
59 	thinkF_target_laser_think,
60 	thinkF_target_laser_start,
61 	thinkF_target_location_linkup,
62 	thinkF_scriptrunner_run,
63 	thinkF_multi_wait,
64 	thinkF_multi_trigger_run,
65 	thinkF_trigger_always_think,
66 	thinkF_AimAtTarget,
67 	thinkF_func_timer_think,
68 	thinkF_NPC_RemoveBody,
69 	thinkF_Disappear,
70 	thinkF_NPC_Think,
71 	thinkF_NPC_Spawn_Go,
72 	thinkF_NPC_Begin,
73 	thinkF_moverCallback,
74 	thinkF_anglerCallback,
75 	thinkF_RemoveOwner,
76 	thinkF_MakeOwnerInvis,
77 	thinkF_MakeOwnerEnergy,
78 	thinkF_transporter_stream_think,
79 	thinkF_func_usable_think,
80 	thinkF_misc_dlight_think,
81 	thinkF_health_think,
82 	thinkF_ammo_think,
83 	thinkF_trigger_teleporter_find_closest_portal,
84 	thinkF_thermalDetonatorExplode,
85 	thinkF_WP_ThermalThink,
86 	thinkF_trigger_hurt_reset,
87 	thinkF_turret_base_think,
88 	thinkF_turret_head_think,
89 	thinkF_HS_Think,
90 	thinkF_laser_arm_fire,
91 	thinkF_laser_arm_start,
92 	thinkF_trigger_visible_check_player_visibility,
93 	thinkF_target_relay_use_go,
94 	thinkF_trigger_cleared_fire,
95 	thinkF_MoveOwner,
96 	thinkF_SolidifyOwner,
97 	thinkF_cycleCamera,
98 	thinkF_spawn_ammo_crystal_trigger,
99 	thinkF_NPC_ShySpawn,
100 	thinkF_func_wait_return_solid,
101 	thinkF_InflateOwner,
102 	thinkF_mega_ammo_think,
103 	thinkF_misc_replicator_item_finish_spawn,
104 	thinkF_fx_runner_link,
105 	thinkF_fx_runner_think,
106 	thinkF_removeBoltSurface,
107 	thinkF_set_MiscAnim,
108 	thinkF_LimbThink,
109 	thinkF_laserTrapThink,
110 	thinkF_TieFighterThink,
111 	thinkF_rocketThink,
112 	thinkF_prox_mine_think,
113 	thinkF_emplaced_blow,
114 	thinkF_WP_Explode,
115 	thinkF_pas_think,	//personal assault sentry
116 	thinkF_ion_cannon_think,
117 	thinkF_maglock_link,
118 	thinkF_WP_flechette_alt_blow,
119 	thinkF_WP_prox_mine_think,
120 	thinkF_camera_aim,
121 	thinkF_fx_explosion_trail_link,
122 	thinkF_fx_explosion_trail_think,
123 	thinkF_fx_target_beam_link,
124 	thinkF_fx_target_beam_think,
125 	thinkF_spotlight_think,
126 	thinkF_spotlight_link,
127 	thinkF_trigger_push_checkclear,
128 	thinkF_DEMP2_AltDetonate,
129 	thinkF_DEMP2_AltRadiusDamage,
130 	thinkF_panel_turret_think,
131 	thinkF_welder_think,
132 	thinkF_gas_random_jet,
133 	thinkF_poll_converter,
134 	thinkF_spawn_rack_goods,
135 
136 } thinkFunc_t;
137 
138 // THINK functions...
139 //
140 extern void teleporter_think	( gentity_t *ent );
141 extern void funcBBrushDieGo		( gentity_t *ent );
142 extern void ExplodeDeath		( gentity_t *ent );
143 extern void RespawnItem			( gentity_t *ent );
144 extern void G_FreeEntity		( gentity_t *ent );
145 extern void FinishSpawningItem	( gentity_t *ent );
146 extern void locateCamera		( gentity_t *ent );
147 extern void G_RunObject			( gentity_t *ent );
148 extern void ReturnToPos1		( gentity_t *ent );
149 extern void Use_BinaryMover_Go	( gentity_t *ent );
150 extern void Think_MatchTeam		( gentity_t *ent );
151 extern void Think_MatchTeam		( gentity_t *ent );
152 extern void Think_BeginMoving	( gentity_t *ent );
153 extern void Think_SetupTrainTargets	( gentity_t *ent );
154 extern void Think_SpawnNewDoorTrigger	( gentity_t *ent );
155 extern void ref_link			( gentity_t *ent );
156 extern void Think_Target_Delay	( gentity_t *ent );
157 extern void target_laser_think	( gentity_t *ent );
158 extern void target_laser_start	( gentity_t *ent );
159 extern void target_location_linkup	( gentity_t *ent );
160 extern void scriptrunner_run	( gentity_t *ent );
161 extern void multi_wait			( gentity_t *ent );
162 extern void multi_trigger_run	( gentity_t *ent );
163 extern void trigger_always_think	( gentity_t *ent );
164 extern void AimAtTarget			( gentity_t *ent );
165 extern void func_timer_think	( gentity_t *ent );
166 extern void NPC_RemoveBody		( gentity_t *ent );
167 extern void Disappear			( gentity_t *ent );
168 extern void NPC_Think			( gentity_t *ent );
169 extern void NPC_Spawn_Go		( gentity_t *ent );
170 extern void NPC_Begin			( gentity_t *ent );
171 extern void moverCallback		( gentity_t *ent );
172 extern void anglerCallback		( gentity_t *ent );
173 extern void RemoveOwner			( gentity_t *ent );
174 extern void MakeOwnerInvis		( gentity_t *ent );
175 extern void MakeOwnerEnergy		( gentity_t *ent );
176 extern void func_usable_think	( gentity_t *self );
177 extern void misc_dlight_think	( gentity_t *ent );
178 extern void laser_link				( gentity_t *ent );
179 extern void blow_chunks_link		( gentity_t *ent );
180 extern void health_think			( gentity_t *ent );
181 extern void ammo_think				( gentity_t *ent );
182 extern void trigger_teleporter_find_closest_portal ( gentity_t *self );
183 extern void thermalDetonatorExplode	( gentity_t *ent );
184 extern void WP_ThermalThink			( gentity_t *ent );
185 extern void trigger_hurt_reset		( gentity_t *self );
186 extern void turret_base_think		( gentity_t *self );
187 extern void turret_head_think		( gentity_t *self );
188 extern void laser_arm_fire			( gentity_t *ent );
189 extern void laser_arm_start			( gentity_t *base );
190 extern void trigger_visible_check_player_visibility	( gentity_t *self );
191 extern void target_relay_use_go		( gentity_t *self );
192 extern void trigger_cleared_fire	( gentity_t *self );
193 extern void MoveOwner				( gentity_t *self );
194 extern void SolidifyOwner			( gentity_t *self );
195 extern void cycleCamera				( gentity_t *self );
196 extern void spawn_ammo_crystal_trigger	( gentity_t *ent );
197 extern void NPC_ShySpawn			( gentity_t *ent );
198 extern void func_wait_return_solid	( gentity_t *self );
199 extern void InflateOwner			( gentity_t *self );
200 extern void mega_ammo_think			( gentity_t *self );
201 extern void misc_replicator_item_finish_spawn( gentity_t *self );
202 extern void fx_runner_link			( gentity_t *self );
203 extern void fx_runner_think			( gentity_t *self );
204 extern void set_MiscAnim			( gentity_t *self);
205 extern void removeBoltSurface		( gentity_t *self);
206 extern void LimbThink				( gentity_t *ent );
207 extern void laserTrapThink			( gentity_t *self );
208 extern void TieFighterThink			( gentity_t *self );
209 extern void rocketThink				( gentity_t *ent );
210 extern void prox_mine_think			( gentity_t *ent );
211 extern void emplaced_blow			( gentity_t *self );
212 extern void WP_Explode				( gentity_t *self );
213 extern void pas_think				( gentity_t *self );
214 extern void ion_cannon_think		( gentity_t *self );
215 extern void maglock_link			( gentity_t *self );
216 extern void WP_flechette_alt_blow	( gentity_t *self );
217 extern void WP_prox_mine_think		( gentity_t *self );
218 extern void camera_aim				( gentity_t *self );
219 extern void fx_explosion_trail_link	( gentity_t *self );
220 extern void fx_explosion_trail_think( gentity_t *self );
221 extern void fx_target_beam_link		( gentity_t *self );
222 extern void fx_target_beam_think	( gentity_t *self );
223 extern void spotlight_think			( gentity_t *self );
224 extern void spotlight_link			( gentity_t *self );
225 extern void trigger_push_checkclear	( gentity_t *self );
226 extern void DEMP2_AltDetonate		( gentity_t *self );
227 extern void DEMP2_AltRadiusDamage	( gentity_t *self );
228 extern void panel_turret_think		( gentity_t *self );
229 extern void welder_think			( gentity_t *self );
230 extern void gas_random_jet			( gentity_t *self );
231 extern void poll_converter			( gentity_t *self );
232 extern void spawn_rack_goods		( gentity_t *self );
233 
234 //	void		(*clThink)(centity_s *cent);	//Think func for equivalent centity
235 typedef enum
236 {
237 	clThinkF_NULL = 0,
238 	//
239 	clThinkF_CG_DLightThink,
240 	clThinkF_CG_MatrixEffect,
241 	clThinkF_CG_Limb,
242 
243 } clThinkFunc_t;
244 
245 // CEntity THINK functions...
246 //
247 extern void CG_DLightThink ( centity_t *cent );
248 extern void CG_MatrixEffect ( centity_t *cent );
249 extern void CG_Limb ( centity_t *cent );
250 
251 //	void		(*reached)(gentity_t *self);	// movers call this when hitting endpoint
252 typedef enum
253 {
254 	reachedF_NULL = 0,
255 	//
256 	reachedF_Reached_BinaryMover,
257 	reachedF_Reached_Train,
258 	reachedF_moverCallback,
259 	reachedF_moveAndRotateCallback
260 
261 } reachedFunc_t;
262 
263 // REACHED functions...
264 //
265 extern void Reached_BinaryMover	( gentity_t *ent );
266 extern void Reached_Train		( gentity_t *ent );
267 extern void moverCallback		( gentity_t *ent );
268 extern void moveAndRotateCallback( gentity_t *ent );
269 
270 
271 //	void		(*blocked)(gentity_t *self, gentity_t *other);
272 typedef enum
273 {
274 	blockedF_NULL = 0,
275 	//
276 	blockedF_Blocked_Door,
277 	blockedF_Blocked_Mover
278 
279 } blockedFunc_t;
280 
281 // BLOCKED functions...
282 //
283 extern void Blocked_Door		(gentity_t *self, gentity_t *other);
284 extern void Blocked_Mover		(gentity_t *self, gentity_t *other);
285 
286 
287 
288 //	void		(*touch)(gentity_t *self, gentity_t *other, trace_t *trace);
289 typedef enum
290 {
291 	touchF_NULL = 0,
292 	//
293 	touchF_Touch_Item,
294 	touchF_teleporter_touch,
295 	touchF_charge_stick,
296 	touchF_Touch_DoorTrigger,
297 	touchF_Touch_PlatCenterTrigger,
298 	touchF_Touch_Plat,
299 	touchF_Touch_Button,
300 	touchF_Touch_Multi,
301 	touchF_trigger_push_touch,
302 	touchF_trigger_teleporter_touch,
303 	touchF_hurt_touch,
304 	touchF_NPC_Touch,
305 	touchF_touch_ammo_crystal_tigger,
306 	touchF_funcBBrushTouch,
307 	touchF_touchLaserTrap,
308 	touchF_prox_mine_stick,
309 	touchF_func_rotating_touch,
310 
311 } touchFunc_t;
312 
313 // TOUCH functions...
314 //
315 extern void Touch_Item				(gentity_t *self, gentity_t *other, trace_t *trace);
316 extern void teleporter_touch		(gentity_t *self, gentity_t *other, trace_t *trace);
317 extern void charge_stick			(gentity_t *self, gentity_t *other, trace_t *trace);
318 extern void Touch_DoorTrigger		(gentity_t *self, gentity_t *other, trace_t *trace);
319 extern void Touch_PlatCenterTrigger	(gentity_t *self, gentity_t *other, trace_t *trace);
320 extern void Touch_Plat				(gentity_t *self, gentity_t *other, trace_t *trace);
321 extern void Touch_Button			(gentity_t *self, gentity_t *other, trace_t *trace);
322 extern void Touch_Multi				(gentity_t *self, gentity_t *other, trace_t *trace);
323 extern void trigger_push_touch		(gentity_t *self, gentity_t *other, trace_t *trace);
324 extern void trigger_teleporter_touch(gentity_t *self, gentity_t *other, trace_t *trace);
325 extern void hurt_touch				(gentity_t *self, gentity_t *other, trace_t *trace);
326 extern void NPC_Touch				(gentity_t *self, gentity_t *other, trace_t *trace);
327 extern void touch_ammo_crystal_tigger	( gentity_t *self, gentity_t *other, trace_t *trace );
328 extern void funcBBrushTouch			( gentity_t *ent, gentity_t *other, trace_t *trace );
329 extern void touchLaserTrap	( gentity_t *ent, gentity_t *other, trace_t *trace );
330 extern void prox_mine_stick( gentity_t *self, gentity_t *other, trace_t *trace );
331 extern void func_rotating_touch				(gentity_t *self, gentity_t *other, trace_t *trace);
332 
333 //	void		(*use)(gentity_t *self, gentity_t *other, gentity_t *activator);
334 typedef enum
335 {
336 	useF_NULL = 0,
337 	//
338 	useF_funcBBrushUse,
339 	useF_misc_model_use,
340 	useF_Use_Item,
341 	useF_Use_Shooter,
342 	useF_GoExplodeDeath,
343 	useF_Use_BinaryMover,
344 	useF_use_wall,
345 	useF_Use_Target_Give,
346 	useF_Use_Target_Delay,
347 	useF_Use_Target_Score,
348 	useF_Use_Target_Print,
349 	useF_Use_Target_Speaker,
350 	useF_target_laser_use,
351 	useF_target_relay_use,
352 	useF_target_kill_use,
353 	useF_target_counter_use,
354 	useF_target_random_use,
355 	useF_target_scriptrunner_use,
356 	useF_target_gravity_change_use,
357 	useF_target_friction_change_use,
358 	useF_target_teleporter_use,
359 	useF_Use_Multi,
360 	useF_Use_target_push,
361 	useF_hurt_use,
362 	useF_func_timer_use,
363 	useF_trigger_entdist_use,
364 	useF_func_usable_use,
365 	useF_target_activate_use,
366 	useF_target_deactivate_use,
367 	useF_NPC_Use,
368 	useF_NPC_Spawn,
369 	useF_misc_dlight_use,
370 	useF_health_use,
371 	useF_ammo_use,
372 	useF_mega_ammo_use,
373 	useF_target_level_change_use,
374 	useF_target_change_parm_use,
375 	useF_crew_beam_in_use,
376 	useF_turret_base_use,
377 	useF_laser_arm_use,
378 	useF_func_static_use,
379 	useF_target_play_music_use,
380 	useF_misc_model_useup,
381 	useF_misc_portal_use,
382 	useF_target_autosave_use,
383 	useF_switch_models,
384 	useF_misc_replicator_item_spawn,
385 	useF_misc_replicator_item_remove,
386 	useF_target_secret_use,
387 	useF_func_bobbing_use,
388 	useF_func_rotating_use,
389 	useF_fx_runner_use,
390 	useF_funcGlassUse,
391 	useF_TrainUse,
392 	useF_misc_trip_mine_activate,
393 	useF_emplaced_gun_use,
394 	useF_shield_power_converter_use,
395 	useF_ammo_power_converter_use,
396 	useF_security_panel_use,
397 	useF_ion_cannon_use,
398 	useF_camera_use,
399 	useF_fx_explosion_trail_use,
400 	useF_fx_target_beam_use,
401 	useF_sentry_use,
402 	useF_spotlight_use,
403 	useF_misc_atst_use,
404 	useF_panel_turret_use,
405 	useF_welder_use,
406 	useF_jabba_cam_use,
407 	useF_misc_use,
408 	useF_pas_use,
409 	useF_item_spawn_use,
410 
411 } useFunc_t;
412 
413 // USE functions...
414 //
415 extern void funcBBrushUse			( gentity_t *self, gentity_t *other, gentity_t *activator);
416 extern void misc_model_use			( gentity_t *self, gentity_t *other, gentity_t *activator);
417 extern void Use_Item				( gentity_t *self, gentity_t *other, gentity_t *activator);
418 extern void Use_Shooter				( gentity_t *self, gentity_t *other, gentity_t *activator);
419 extern void GoExplodeDeath			( gentity_t *self, gentity_t *other, gentity_t *activator);
420 extern void Use_BinaryMover			( gentity_t *self, gentity_t *other, gentity_t *activator);
421 extern void use_wall				( gentity_t *self, gentity_t *other, gentity_t *activator);
422 extern void Use_Target_Give			( gentity_t *self, gentity_t *other, gentity_t *activator);
423 extern void Use_Target_Delay		( gentity_t *self, gentity_t *other, gentity_t *activator);
424 extern void Use_Target_Score		( gentity_t *self, gentity_t *other, gentity_t *activator);
425 extern void Use_Target_Print		( gentity_t *self, gentity_t *other, gentity_t *activator);
426 extern void Use_Target_Speaker		( gentity_t *self, gentity_t *other, gentity_t *activator);
427 extern void target_laser_use		( gentity_t *self, gentity_t *other, gentity_t *activator);
428 extern void target_relay_use		( gentity_t *self, gentity_t *other, gentity_t *activator);
429 extern void target_kill_use			( gentity_t *self, gentity_t *other, gentity_t *activator);
430 extern void target_counter_use		( gentity_t *self, gentity_t *other, gentity_t *activator);
431 extern void target_random_use		( gentity_t *self, gentity_t *other, gentity_t *activator);
432 extern void target_scriptrunner_use	( gentity_t *self, gentity_t *other, gentity_t *activator);
433 extern void target_gravity_change_use	( gentity_t *self, gentity_t *other, gentity_t *activator);
434 extern void target_friction_change_use	( gentity_t *self, gentity_t *other, gentity_t *activator);
435 extern void target_teleporter_use	( gentity_t *self, gentity_t *other, gentity_t *activator);
436 extern void Use_Multi				( gentity_t *self, gentity_t *other, gentity_t *activator);
437 extern void Use_target_push			( gentity_t *self, gentity_t *other, gentity_t *activator);
438 extern void hurt_use				( gentity_t *self, gentity_t *other, gentity_t *activator);
439 extern void func_timer_use			( gentity_t *self, gentity_t *other, gentity_t *activator);
440 extern void trigger_entdist_use		( gentity_t *self, gentity_t *other, gentity_t *activator);
441 extern void func_usable_use			( gentity_t *self, gentity_t *other, gentity_t *activator);
442 extern void target_activate_use		( gentity_t *self, gentity_t *other, gentity_t *activator);
443 extern void	target_deactivate_use	( gentity_t *self, gentity_t *other, gentity_t *activator);
444 extern void NPC_Use					( gentity_t *self, gentity_t *other, gentity_t *activator);
445 extern void NPC_Spawn				( gentity_t *self, gentity_t *other, gentity_t *activator);
446 extern void transporter_use			( gentity_t *self, gentity_t *other, gentity_t *activator);
447 extern void teleporter_use			( gentity_t *self, gentity_t *other, gentity_t *activator);
448 extern void misc_dlight_use			( gentity_t *ent, gentity_t *other, gentity_t *activator );
449 extern void health_use				( gentity_t *self, gentity_t *other, gentity_t *activator );
450 extern void ammo_use				( gentity_t *self, gentity_t *other, gentity_t *activator );
451 extern void mega_ammo_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
452 extern void target_level_change_use	( gentity_t *self, gentity_t *other, gentity_t *activator );
453 extern void target_change_parm_use	( gentity_t *self, gentity_t *other, gentity_t *activator );
454 extern void turret_base_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
455 extern void laser_arm_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
456 extern void func_static_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
457 extern void target_play_music_use	( gentity_t *self, gentity_t *other, gentity_t *activator );
458 extern void misc_model_useup		( gentity_t *self, gentity_t *other, gentity_t *activator );
459 extern void misc_portal_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
460 extern void target_autosave_use 	( gentity_t *self, gentity_t *other, gentity_t *activator );
461 extern void switch_models			( gentity_t *self, gentity_t *other, gentity_t *activator );
462 extern void misc_replicator_item_spawn ( gentity_t *self, gentity_t *other, gentity_t *activator );
463 extern void misc_replicator_item_remove ( gentity_t *self, gentity_t *other, gentity_t *activator );
464 extern void target_secret_use		( gentity_t *self, gentity_t *other, gentity_t *activator );
465 extern void func_bobbing_use		( gentity_t *self, gentity_t *other, gentity_t *activator );
466 extern void func_rotating_use		( gentity_t *self, gentity_t *other, gentity_t *activator );
467 extern void fx_runner_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
468 extern void funcGlassUse			( gentity_t *self, gentity_t *other, gentity_t *activator );
469 extern void TrainUse				( gentity_t *ent, gentity_t *other, gentity_t *activator );
470 extern void misc_trip_mine_activate	( gentity_t *self, gentity_t *other, gentity_t *activator );
471 extern void emplaced_gun_use		( gentity_t *self, gentity_t *other, gentity_t *activator );
472 extern void shield_power_converter_use( gentity_t *self, gentity_t *other, gentity_t *activator );
473 extern void ammo_power_converter_use( gentity_t *self, gentity_t *other, gentity_t *activator );
474 extern void security_panel_use		( gentity_t *self, gentity_t *other, gentity_t *activator );
475 extern void ion_cannon_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
476 extern void camera_use				( gentity_t *self, gentity_t *other, gentity_t *activator );
477 extern void fx_explosion_trail_use	( gentity_t *self, gentity_t *other, gentity_t *activator );
478 extern void fx_target_beam_use		( gentity_t *self, gentity_t *other, gentity_t *activator );
479 extern void sentry_use				( gentity_t *self, gentity_t *other, gentity_t *activator );
480 extern void spotlight_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
481 extern void misc_atst_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
482 extern void panel_turret_use		( gentity_t *self, gentity_t *other, gentity_t *activator );
483 extern void welder_use				( gentity_t *self, gentity_t *other, gentity_t *activator );
484 extern void jabba_cam_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
485 extern void misc_use				( gentity_t *self, gentity_t *other, gentity_t *activator );
486 extern void pas_use					( gentity_t *self, gentity_t *other, gentity_t *activator );
487 extern void item_spawn_use			( gentity_t *self, gentity_t *other, gentity_t *activator );
488 
489 //	void		(*pain)(gentity_t *self, gentity_t *attacker, int damage,int mod,int hitLoc);
490 typedef enum
491 {
492 	painF_NULL = 0,
493 	//
494 	painF_funcBBrushPain,
495 	painF_misc_model_breakable_pain,
496 	painF_NPC_Pain,
497 	painF_station_pain,
498 	painF_func_usable_pain,
499 	painF_NPC_ATST_Pain,
500 	painF_NPC_ST_Pain,
501 	painF_NPC_Jedi_Pain,
502 	painF_NPC_Droid_Pain,
503 	painF_NPC_Probe_Pain,
504 	painF_NPC_MineMonster_Pain,
505 	painF_NPC_Howler_Pain,
506 	painF_NPC_Seeker_Pain,
507 	painF_NPC_Remote_Pain,
508 	painF_emplaced_gun_pain,
509 	painF_NPC_Mark1_Pain,
510 	painF_NPC_GM_Pain,
511 	painF_NPC_Sentry_Pain,
512 	painF_NPC_Mark2_Pain,
513 	painF_PlayerPain,
514 	painF_GasBurst,
515 	painF_CrystalCratePain,
516 	painF_TurretPain,
517 
518 } painFunc_t;
519 
520 // PAIN functions...
521 //
522 extern void funcBBrushPain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
523 extern void misc_model_breakable_pain	(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
524 extern void NPC_Pain					(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
525 extern void station_pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
526 extern void func_usable_pain			(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
527 extern void NPC_ATST_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
528 extern void NPC_ST_Pain					(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
529 extern void NPC_Jedi_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
530 extern void NPC_Droid_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
531 extern void NPC_Probe_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
532 extern void NPC_MineMonster_Pain		(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
533 extern void NPC_Howler_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
534 extern void NPC_Seeker_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
535 extern void NPC_Remote_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
536 extern void emplaced_gun_pain			(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
537 extern void NPC_Mark1_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
538 extern void NPC_GM_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
539 extern void NPC_Sentry_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
540 extern void NPC_Mark2_Pain				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
541 extern void PlayerPain					(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
542 extern void GasBurst					( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod, int hitLoc=HL_NONE );
543 extern void CrystalCratePain			( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod, int hitLoc=HL_NONE);
544 extern void TurretPain					( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod, int hitLoc=HL_NONE );
545 
546 //	void		(*die)(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod);
547 typedef enum
548 {
549 	dieF_NULL = 0,
550 	//
551 	dieF_funcBBrushDie,
552 	dieF_misc_model_breakable_die,
553 	dieF_misc_model_cargo_die,
554 	dieF_func_train_die,
555 	dieF_player_die,
556 	dieF_ExplodeDeath_Wait,
557 	dieF_ExplodeDeath,
558 	dieF_func_usable_die,
559 	dieF_turret_die,
560 	dieF_funcGlassDie,
561 //	dieF_laserTrapDelayedExplode,
562 	dieF_emplaced_gun_die,
563 	dieF_WP_ExplosiveDie,
564 	dieF_ion_cannon_die,
565 	dieF_maglock_die,
566 	dieF_camera_die,
567 	dieF_Mark1_die,
568 	dieF_Interrogator_die,
569 	dieF_misc_atst_die,
570 	dieF_misc_panel_turret_die,
571 	dieF_thermal_die,
572 
573 } dieFunc_t;
574 
575 // DIE functions...
576 //
577 extern void funcBBrushDie				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
578 extern void misc_model_breakable_die	(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
579 extern void misc_model_cargo_die		(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
580 extern void func_train_die				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
581 extern void player_die					(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
582 extern void ExplodeDeath_Wait			(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
583 extern void ExplodeDeath				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
584 extern void func_usable_die				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
585 extern void turret_die					(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
586 extern void funcGlassDie				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
587 extern void laserTrapDelayedExplode		(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
588 extern void emplaced_gun_die			(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
589 extern void WP_ExplosiveDie				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
590 extern void ion_cannon_die				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
591 extern void maglock_die					(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
592 extern void camera_die					(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
593 extern void Mark1_die					(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
594 extern void Interrogator_die			(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
595 extern void misc_atst_die				(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
596 extern void misc_panel_turret_die		(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
597 extern void thermal_die					(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
598 
599 
600 void GEntity_ThinkFunc(gentity_t *self);
601 void CEntity_ThinkFunc(centity_s *cent);	//Think func for equivalent centity
602 void GEntity_ReachedFunc(gentity_t *self);	// movers call this when hitting endpoint
603 void GEntity_BlockedFunc(gentity_t *self, gentity_t *other);
604 void GEntity_TouchFunc(gentity_t *self, gentity_t *other, trace_t *trace);
605 void GEntity_UseFunc(gentity_t *self, gentity_t *other, gentity_t *activator);
606 void GEntity_PainFunc(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, vec3_t point, int damage, int mod,int hitLoc=HL_NONE);
607 void GEntity_DieFunc(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod,int dFlags=0,int hitLoc=HL_NONE);
608 
609 // external functions that I now refer to...
610 
611 
612 #endif	// #ifndef G_FUNCTIONS
613 
614 /////////////////// eof ///////////////////
615 
616