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