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