Lines Matching refs:ent

30 void weapon_grenade_fire (edict_t *ent, qboolean held);
118 qboolean Pickup_Weapon (edict_t *ent, edict_t *other) in Pickup_Weapon() argument
123 index = ITEM_INDEX(ent->item); in Pickup_Weapon()
128 if (!(ent->spawnflags & (DROPPED_ITEM | DROPPED_PLAYER_ITEM) ) ) in Pickup_Weapon()
134 if (!(ent->spawnflags & DROPPED_ITEM) ) in Pickup_Weapon()
137 ammo = FindItem (ent->item->ammo); in Pickup_Weapon()
143 if (! (ent->spawnflags & DROPPED_PLAYER_ITEM) ) in Pickup_Weapon()
148 ent->flags |= FL_RESPAWN; in Pickup_Weapon()
150 SetRespawn (ent, 30); in Pickup_Weapon()
153 ent->flags |= FL_RESPAWN; in Pickup_Weapon()
157 if (other->client->pers.weapon != ent->item && in Pickup_Weapon()
160 other->client->newweapon = ent->item; in Pickup_Weapon()
174 void ChangeWeapon (edict_t *ent) in ChangeWeapon() argument
178 if (ent->client->grenade_time) in ChangeWeapon()
180 ent->client->grenade_time = level.time; in ChangeWeapon()
181 ent->client->weapon_sound = 0; in ChangeWeapon()
182 weapon_grenade_fire (ent, false); in ChangeWeapon()
183 ent->client->grenade_time = 0; in ChangeWeapon()
186 ent->client->pers.lastweapon = ent->client->pers.weapon; in ChangeWeapon()
187 ent->client->pers.weapon = ent->client->newweapon; in ChangeWeapon()
188 ent->client->newweapon = NULL; in ChangeWeapon()
189 ent->client->machinegun_shots = 0; in ChangeWeapon()
192 if (ent->s.modelindex == 255) { in ChangeWeapon()
193 if (ent->client->pers.weapon) in ChangeWeapon()
194 i = ((ent->client->pers.weapon->weapmodel & 0xff) << 8); in ChangeWeapon()
197 ent->s.skinnum = (ent - g_edicts - 1) | i; in ChangeWeapon()
200 if (ent->client->pers.weapon && ent->client->pers.weapon->ammo) in ChangeWeapon()
201 ent->client->ammo_index = ITEM_INDEX(FindItem(ent->client->pers.weapon->ammo)); in ChangeWeapon()
203 ent->client->ammo_index = 0; in ChangeWeapon()
205 if (!ent->client->pers.weapon) in ChangeWeapon()
207 ent->client->ps.gunindex = 0; in ChangeWeapon()
211 ent->client->weaponstate = WEAPON_ACTIVATING; in ChangeWeapon()
212 ent->client->ps.gunframe = 0; in ChangeWeapon()
213 ent->client->ps.gunindex = gi.modelindex(ent->client->pers.weapon->view_model); in ChangeWeapon()
215 ent->client->anim_priority = ANIM_PAIN; in ChangeWeapon()
216 if(ent->client->ps.pmove.pm_flags & PMF_DUCKED) in ChangeWeapon()
218 ent->s.frame = FRAME_crpain1; in ChangeWeapon()
219 ent->client->anim_end = FRAME_crpain4; in ChangeWeapon()
223 ent->s.frame = FRAME_pain301; in ChangeWeapon()
224 ent->client->anim_end = FRAME_pain304; in ChangeWeapon()
234 void NoAmmoWeaponChange (edict_t *ent) in NoAmmoWeaponChange() argument
236 if ( ent->client->pers.inventory[ITEM_INDEX(FindItem("slugs"))] in NoAmmoWeaponChange()
237 && ent->client->pers.inventory[ITEM_INDEX(FindItem("railgun"))] ) in NoAmmoWeaponChange()
239 ent->client->newweapon = FindItem ("railgun"); in NoAmmoWeaponChange()
242 if ( ent->client->pers.inventory[ITEM_INDEX(FindItem("cells"))] in NoAmmoWeaponChange()
243 && ent->client->pers.inventory[ITEM_INDEX(FindItem("hyperblaster"))] ) in NoAmmoWeaponChange()
245 ent->client->newweapon = FindItem ("hyperblaster"); in NoAmmoWeaponChange()
248 if ( ent->client->pers.inventory[ITEM_INDEX(FindItem("bullets"))] in NoAmmoWeaponChange()
249 && ent->client->pers.inventory[ITEM_INDEX(FindItem("chaingun"))] ) in NoAmmoWeaponChange()
251 ent->client->newweapon = FindItem ("chaingun"); in NoAmmoWeaponChange()
254 if ( ent->client->pers.inventory[ITEM_INDEX(FindItem("bullets"))] in NoAmmoWeaponChange()
255 && ent->client->pers.inventory[ITEM_INDEX(FindItem("machinegun"))] ) in NoAmmoWeaponChange()
257 ent->client->newweapon = FindItem ("machinegun"); in NoAmmoWeaponChange()
260 if ( ent->client->pers.inventory[ITEM_INDEX(FindItem("shells"))] > 1 in NoAmmoWeaponChange()
261 && ent->client->pers.inventory[ITEM_INDEX(FindItem("super shotgun"))] ) in NoAmmoWeaponChange()
263 ent->client->newweapon = FindItem ("super shotgun"); in NoAmmoWeaponChange()
266 if ( ent->client->pers.inventory[ITEM_INDEX(FindItem("shells"))] in NoAmmoWeaponChange()
267 && ent->client->pers.inventory[ITEM_INDEX(FindItem("shotgun"))] ) in NoAmmoWeaponChange()
269 ent->client->newweapon = FindItem ("shotgun"); in NoAmmoWeaponChange()
272 ent->client->newweapon = FindItem ("blaster"); in NoAmmoWeaponChange()
282 void Think_Weapon (edict_t *ent) in Think_Weapon() argument
285 if (ent->health < 1) in Think_Weapon()
287 ent->client->newweapon = NULL; in Think_Weapon()
288 ChangeWeapon (ent); in Think_Weapon()
292 if (ent->client->pers.weapon && ent->client->pers.weapon->weaponthink) in Think_Weapon()
294 is_quad = (ent->client->quad_framenum > level.framenum); in Think_Weapon()
295 if (ent->client->silencer_shots) in Think_Weapon()
299 ent->client->pers.weapon->weaponthink (ent); in Think_Weapon()
311 void Use_Weapon (edict_t *ent, gitem_t *item) in Use_Weapon() argument
317 if (item == ent->client->pers.weapon) in Use_Weapon()
325 if (!ent->client->pers.inventory[ammo_index]) in Use_Weapon()
327 gi.cprintf (ent, PRINT_HIGH, "No %s for %s.\n", ammo_item->pickup_name, item->pickup_name); in Use_Weapon()
331 if (ent->client->pers.inventory[ammo_index] < item->quantity) in Use_Weapon()
333 …gi.cprintf (ent, PRINT_HIGH, "Not enough %s for %s.\n", ammo_item->pickup_name, item->pickup_name); in Use_Weapon()
339 ent->client->newweapon = item; in Use_Weapon()
349 void Drop_Weapon (edict_t *ent, gitem_t *item) in Drop_Weapon() argument
358 …if ( ((item == ent->client->pers.weapon) || (item == ent->client->newweapon))&& (ent->client->pers… in Drop_Weapon()
360 gi.cprintf (ent, PRINT_HIGH, "Can't drop current weapon\n"); in Drop_Weapon()
364 Drop_Item (ent, item); in Drop_Weapon()
365 ent->client->pers.inventory[index]--; in Drop_Weapon()
380ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST, int FRAME_IDLE_LAST, int FRAME_DEACTIVATE_LAST,… in Weapon_Generic2() argument
384 if(ent->deadflag || ent->s.modelindex != 255) // VWep animations screw up corpses in Weapon_Generic2()
389 if (ent->client->weaponstate == WEAPON_DROPPING) in Weapon_Generic2()
391 if (ent->client->ps.gunframe == FRAME_DEACTIVATE_LAST) in Weapon_Generic2()
393 ChangeWeapon (ent); in Weapon_Generic2()
396 else if ((FRAME_DEACTIVATE_LAST - ent->client->ps.gunframe) == 4) in Weapon_Generic2()
398 ent->client->anim_priority = ANIM_REVERSE; in Weapon_Generic2()
399 if(ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Weapon_Generic2()
401 ent->s.frame = FRAME_crpain4+1; in Weapon_Generic2()
402 ent->client->anim_end = FRAME_crpain1; in Weapon_Generic2()
406 ent->s.frame = FRAME_pain304+1; in Weapon_Generic2()
407 ent->client->anim_end = FRAME_pain301; in Weapon_Generic2()
412 ent->client->ps.gunframe++; in Weapon_Generic2()
416 if (ent->client->weaponstate == WEAPON_ACTIVATING) in Weapon_Generic2()
418 if (ent->client->ps.gunframe == FRAME_ACTIVATE_LAST || instantweap->value) in Weapon_Generic2()
420 ent->client->weaponstate = WEAPON_READY; in Weapon_Generic2()
421 ent->client->ps.gunframe = FRAME_IDLE_FIRST; in Weapon_Generic2()
425 ent->client->ps.gunframe++; in Weapon_Generic2()
429 if ((ent->client->newweapon) && (ent->client->weaponstate != WEAPON_FIRING)) in Weapon_Generic2()
431 ent->client->weaponstate = WEAPON_DROPPING; in Weapon_Generic2()
433 ChangeWeapon(ent); in Weapon_Generic2()
436 ent->client->ps.gunframe = FRAME_DEACTIVATE_FIRST; in Weapon_Generic2()
440 ent->client->anim_priority = ANIM_REVERSE; in Weapon_Generic2()
441 if(ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Weapon_Generic2()
443 ent->s.frame = FRAME_crpain4+1; in Weapon_Generic2()
444 ent->client->anim_end = FRAME_crpain1; in Weapon_Generic2()
448 ent->s.frame = FRAME_pain304+1; in Weapon_Generic2()
449 ent->client->anim_end = FRAME_pain301; in Weapon_Generic2()
456 if (ent->client->weaponstate == WEAPON_READY) in Weapon_Generic2()
458 if ( ((ent->client->latched_buttons|ent->client->buttons) & BUTTON_ATTACK) ) in Weapon_Generic2()
460 ent->client->latched_buttons &= ~BUTTON_ATTACK; in Weapon_Generic2()
461 if ((!ent->client->ammo_index) || in Weapon_Generic2()
462 ( ent->client->pers.inventory[ent->client->ammo_index] >= ent->client->pers.weapon->quantity)) in Weapon_Generic2()
464 ent->client->ps.gunframe = FRAME_FIRE_FIRST; in Weapon_Generic2()
465 ent->client->weaponstate = WEAPON_FIRING; in Weapon_Generic2()
468 ent->client->anim_priority = ANIM_ATTACK; in Weapon_Generic2()
469 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Weapon_Generic2()
471 ent->s.frame = FRAME_crattak1-1; in Weapon_Generic2()
472 ent->client->anim_end = FRAME_crattak9; in Weapon_Generic2()
476 ent->s.frame = FRAME_attack1-1; in Weapon_Generic2()
477 ent->client->anim_end = FRAME_attack8; in Weapon_Generic2()
482 if (level.time >= ent->pain_debounce_time) in Weapon_Generic2()
484 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Weapon_Generic2()
485 ent->pain_debounce_time = level.time + 1; in Weapon_Generic2()
487 NoAmmoWeaponChange (ent); in Weapon_Generic2()
492 if (ent->client->ps.gunframe == FRAME_IDLE_LAST) in Weapon_Generic2()
494 ent->client->ps.gunframe = FRAME_IDLE_FIRST; in Weapon_Generic2()
502 if (ent->client->ps.gunframe == pause_frames[n]) in Weapon_Generic2()
510 ent->client->ps.gunframe++; in Weapon_Generic2()
515 if (ent->client->weaponstate == WEAPON_FIRING) in Weapon_Generic2()
519 if (ent->client->ps.gunframe == fire_frames[n]) in Weapon_Generic2()
522 if (!CTFApplyStrengthSound(ent)) in Weapon_Generic2()
524 if (ent->client->quad_framenum > level.framenum) in Weapon_Generic2()
525 gi.sound(ent, CHAN_ITEM, gi.soundindex("items/damage3.wav"), 1, ATTN_NORM, 0); in Weapon_Generic2()
527 CTFApplyHasteSound(ent); in Weapon_Generic2()
530 fire (ent); in Weapon_Generic2()
536 ent->client->ps.gunframe++; in Weapon_Generic2()
538 if (ent->client->ps.gunframe == FRAME_IDLE_FIRST+1) in Weapon_Generic2()
539 ent->client->weaponstate = WEAPON_READY; in Weapon_Generic2()
544ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST, int FRAME_IDLE_LAST, int FRAME_DEACTIVATE_LAST,… in Weapon_Generic() argument
546 int oldstate = ent->client->weaponstate; in Weapon_Generic()
548 Weapon_Generic2 (ent, FRAME_ACTIVATE_LAST, FRAME_FIRE_LAST, in Weapon_Generic()
553 if (stricmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 && in Weapon_Generic()
554 ent->client->weaponstate == WEAPON_FIRING) in Weapon_Generic()
557 if ((CTFApplyHaste(ent) || in Weapon_Generic()
558 (Q_stricmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 && in Weapon_Generic()
559 ent->client->weaponstate != WEAPON_FIRING)) in Weapon_Generic()
560 && oldstate == ent->client->weaponstate) { in Weapon_Generic()
561 Weapon_Generic2 (ent, FRAME_ACTIVATE_LAST, FRAME_FIRE_LAST, in Weapon_Generic()
580 void weapon_grenade_fire (edict_t *ent, qboolean held) in weapon_grenade_fire() argument
594 VectorSet(offset, 8, 8, ent->viewheight-8); in weapon_grenade_fire()
595 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_grenade_fire()
596 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_grenade_fire()
598 timer = ent->client->grenade_time - level.time; in weapon_grenade_fire()
600 fire_grenade2 (ent, start, forward, damage, speed, timer, radius, held); in weapon_grenade_fire()
603 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_grenade_fire()
605 ent->client->grenade_time = level.time + 1.0; in weapon_grenade_fire()
607 if(ent->deadflag || ent->s.modelindex != 255) // VWep animations screw up corpses in weapon_grenade_fire()
612 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in weapon_grenade_fire()
614 ent->client->anim_priority = ANIM_ATTACK; in weapon_grenade_fire()
615 ent->s.frame = FRAME_crattak1-1; in weapon_grenade_fire()
616 ent->client->anim_end = FRAME_crattak3; in weapon_grenade_fire()
620 ent->client->anim_priority = ANIM_REVERSE; in weapon_grenade_fire()
621 ent->s.frame = FRAME_wave08; in weapon_grenade_fire()
622 ent->client->anim_end = FRAME_wave01; in weapon_grenade_fire()
626 void Weapon_Grenade (edict_t *ent) in Weapon_Grenade() argument
628 if ((ent->client->newweapon) && (ent->client->weaponstate == WEAPON_READY)) in Weapon_Grenade()
630 ChangeWeapon (ent); in Weapon_Grenade()
634 if (ent->client->weaponstate == WEAPON_ACTIVATING) in Weapon_Grenade()
636 ent->client->weaponstate = WEAPON_READY; in Weapon_Grenade()
637 ent->client->ps.gunframe = 16; in Weapon_Grenade()
641 if (ent->client->weaponstate == WEAPON_READY) in Weapon_Grenade()
643 if ( ((ent->client->latched_buttons|ent->client->buttons) & BUTTON_ATTACK) ) in Weapon_Grenade()
645 ent->client->latched_buttons &= ~BUTTON_ATTACK; in Weapon_Grenade()
646 if (ent->client->pers.inventory[ent->client->ammo_index]) in Weapon_Grenade()
648 ent->client->ps.gunframe = 1; in Weapon_Grenade()
649 ent->client->weaponstate = WEAPON_FIRING; in Weapon_Grenade()
650 ent->client->grenade_time = 0; in Weapon_Grenade()
654 if (level.time >= ent->pain_debounce_time) in Weapon_Grenade()
656 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Weapon_Grenade()
657 ent->pain_debounce_time = level.time + 1; in Weapon_Grenade()
659 NoAmmoWeaponChange (ent); in Weapon_Grenade()
664 …if ((ent->client->ps.gunframe == 29) || (ent->client->ps.gunframe == 34) || (ent->client->ps.gunfr… in Weapon_Grenade()
670 if (++ent->client->ps.gunframe > 48) in Weapon_Grenade()
671 ent->client->ps.gunframe = 16; in Weapon_Grenade()
675 if (ent->client->weaponstate == WEAPON_FIRING) in Weapon_Grenade()
677 if (ent->client->ps.gunframe == 5) in Weapon_Grenade()
678 gi.sound(ent, CHAN_WEAPON, gi.soundindex("weapons/hgrena1b.wav"), 1, ATTN_NORM, 0); in Weapon_Grenade()
680 if (ent->client->ps.gunframe == 11) in Weapon_Grenade()
682 if (!ent->client->grenade_time) in Weapon_Grenade()
684 ent->client->grenade_time = level.time + GRENADE_TIMER + 0.2; in Weapon_Grenade()
685 ent->client->weapon_sound = gi.soundindex("weapons/hgrenc1b.wav"); in Weapon_Grenade()
689 if (!ent->client->grenade_blew_up && level.time >= ent->client->grenade_time) in Weapon_Grenade()
691 ent->client->weapon_sound = 0; in Weapon_Grenade()
692 weapon_grenade_fire (ent, true); in Weapon_Grenade()
693 ent->client->grenade_blew_up = true; in Weapon_Grenade()
696 if (ent->client->buttons & BUTTON_ATTACK) in Weapon_Grenade()
699 if (ent->client->grenade_blew_up) in Weapon_Grenade()
701 if (level.time >= ent->client->grenade_time) in Weapon_Grenade()
703 ent->client->ps.gunframe = 15; in Weapon_Grenade()
704 ent->client->grenade_blew_up = false; in Weapon_Grenade()
713 if (ent->client->ps.gunframe == 12) in Weapon_Grenade()
715 ent->client->weapon_sound = 0; in Weapon_Grenade()
716 weapon_grenade_fire (ent, false); in Weapon_Grenade()
719 if ((ent->client->ps.gunframe == 15) && (level.time < ent->client->grenade_time)) in Weapon_Grenade()
722 ent->client->ps.gunframe++; in Weapon_Grenade()
724 if (ent->client->ps.gunframe == 16) in Weapon_Grenade()
726 ent->client->grenade_time = 0; in Weapon_Grenade()
727 ent->client->weaponstate = WEAPON_READY; in Weapon_Grenade()
740 void weapon_grenadelauncher_fire (edict_t *ent) in weapon_grenadelauncher_fire() argument
752 VectorSet(offset, 8, 8, ent->viewheight-8); in weapon_grenadelauncher_fire()
753 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_grenadelauncher_fire()
754 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_grenadelauncher_fire()
756 VectorScale (forward, -2, ent->client->kick_origin); in weapon_grenadelauncher_fire()
757 ent->client->kick_angles[0] = -1; in weapon_grenadelauncher_fire()
759 fire_grenade (ent, start, forward, damage, 600, 2.5, radius); in weapon_grenadelauncher_fire()
762 gi.WriteShort (ent-g_edicts); in weapon_grenadelauncher_fire()
764 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_grenadelauncher_fire()
766 ent->client->ps.gunframe++; in weapon_grenadelauncher_fire()
768 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_grenadelauncher_fire()
771 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_grenadelauncher_fire()
774 void Weapon_GrenadeLauncher (edict_t *ent) in Weapon_GrenadeLauncher() argument
779 Weapon_Generic (ent, 5, 16, 59, 64, pause_frames, fire_frames, weapon_grenadelauncher_fire); in Weapon_GrenadeLauncher()
790 void Weapon_RocketLauncher_Fire (edict_t *ent) in Weapon_RocketLauncher_Fire() argument
807 AngleVectors (ent->client->v_angle, forward, right, NULL); in Weapon_RocketLauncher_Fire()
809 VectorScale (forward, -2, ent->client->kick_origin); in Weapon_RocketLauncher_Fire()
810 ent->client->kick_angles[0] = -1; in Weapon_RocketLauncher_Fire()
812 VectorSet(offset, 8, 8, ent->viewheight-8); in Weapon_RocketLauncher_Fire()
813 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in Weapon_RocketLauncher_Fire()
814 fire_rocket (ent, start, forward, damage, 650, damage_radius, radius_damage); in Weapon_RocketLauncher_Fire()
818 gi.WriteShort (ent-g_edicts); in Weapon_RocketLauncher_Fire()
820 gi.multicast (ent->s.origin, MULTICAST_PVS); in Weapon_RocketLauncher_Fire()
822 ent->client->ps.gunframe++; in Weapon_RocketLauncher_Fire()
824 PlayerNoise(ent, start, PNOISE_WEAPON); in Weapon_RocketLauncher_Fire()
827 ent->client->pers.inventory[ent->client->ammo_index]--; in Weapon_RocketLauncher_Fire()
830 void Weapon_RocketLauncher (edict_t *ent) in Weapon_RocketLauncher() argument
835 Weapon_Generic (ent, 4, 12, 50, 54, pause_frames, fire_frames, Weapon_RocketLauncher_Fire); in Weapon_RocketLauncher()
847 void Blaster_Fire (edict_t *ent, vec3_t g_offset, int damage, qboolean hyper, int effect) in Blaster_Fire() argument
855 AngleVectors (ent->client->v_angle, forward, right, NULL); in Blaster_Fire()
856 VectorSet(offset, 24, 8, ent->viewheight-8); in Blaster_Fire()
858 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in Blaster_Fire()
860 VectorScale (forward, -2, ent->client->kick_origin); in Blaster_Fire()
861 ent->client->kick_angles[0] = -1; in Blaster_Fire()
863 fire_blaster (ent, start, forward, damage, 1000, effect, hyper); in Blaster_Fire()
867 gi.WriteShort (ent-g_edicts); in Blaster_Fire()
872 gi.multicast (ent->s.origin, MULTICAST_PVS); in Blaster_Fire()
874 PlayerNoise(ent, start, PNOISE_WEAPON); in Blaster_Fire()
878 void Weapon_Blaster_Fire (edict_t *ent) in Weapon_Blaster_Fire() argument
886 Blaster_Fire (ent, vec3_origin, damage, false, EF_BLASTER); in Weapon_Blaster_Fire()
887 ent->client->ps.gunframe++; in Weapon_Blaster_Fire()
890 void Weapon_Blaster (edict_t *ent) in Weapon_Blaster() argument
895 Weapon_Generic (ent, 4, 8, 52, 55, pause_frames, fire_frames, Weapon_Blaster_Fire); in Weapon_Blaster()
899 void Weapon_HyperBlaster_Fire (edict_t *ent) in Weapon_HyperBlaster_Fire() argument
906 ent->client->weapon_sound = gi.soundindex("weapons/hyprbl1a.wav"); in Weapon_HyperBlaster_Fire()
908 if (!(ent->client->buttons & BUTTON_ATTACK)) in Weapon_HyperBlaster_Fire()
910 ent->client->ps.gunframe++; in Weapon_HyperBlaster_Fire()
914 if (! ent->client->pers.inventory[ent->client->ammo_index] ) in Weapon_HyperBlaster_Fire()
916 if (level.time >= ent->pain_debounce_time) in Weapon_HyperBlaster_Fire()
918 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Weapon_HyperBlaster_Fire()
919 ent->pain_debounce_time = level.time + 1; in Weapon_HyperBlaster_Fire()
921 NoAmmoWeaponChange (ent); in Weapon_HyperBlaster_Fire()
925 rotation = (ent->client->ps.gunframe - 5) * 2*M_PI/6; in Weapon_HyperBlaster_Fire()
930 if ((ent->client->ps.gunframe == 6) || (ent->client->ps.gunframe == 9)) in Weapon_HyperBlaster_Fire()
938 Blaster_Fire (ent, offset, damage, true, effect); in Weapon_HyperBlaster_Fire()
940 ent->client->pers.inventory[ent->client->ammo_index]--; in Weapon_HyperBlaster_Fire()
942 ent->client->anim_priority = ANIM_ATTACK; in Weapon_HyperBlaster_Fire()
943 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Weapon_HyperBlaster_Fire()
945 ent->s.frame = FRAME_crattak1 - 1; in Weapon_HyperBlaster_Fire()
946 ent->client->anim_end = FRAME_crattak9; in Weapon_HyperBlaster_Fire()
950 ent->s.frame = FRAME_attack1 - 1; in Weapon_HyperBlaster_Fire()
951 ent->client->anim_end = FRAME_attack8; in Weapon_HyperBlaster_Fire()
955 ent->client->ps.gunframe++; in Weapon_HyperBlaster_Fire()
956 if (ent->client->ps.gunframe == 12 && ent->client->pers.inventory[ent->client->ammo_index]) in Weapon_HyperBlaster_Fire()
957 ent->client->ps.gunframe = 6; in Weapon_HyperBlaster_Fire()
960 if (ent->client->ps.gunframe == 12) in Weapon_HyperBlaster_Fire()
962 gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/hyprbd1a.wav"), 1, ATTN_NORM, 0); in Weapon_HyperBlaster_Fire()
963 ent->client->weapon_sound = 0; in Weapon_HyperBlaster_Fire()
968 void Weapon_HyperBlaster (edict_t *ent) in Weapon_HyperBlaster() argument
973 Weapon_Generic (ent, 5, 20, 49, 53, pause_frames, fire_frames, Weapon_HyperBlaster_Fire); in Weapon_HyperBlaster()
984 void Machinegun_Fire (edict_t *ent) in Machinegun_Fire() argument
994 if (!(ent->client->buttons & BUTTON_ATTACK)) in Machinegun_Fire()
996 ent->client->machinegun_shots = 0; in Machinegun_Fire()
997 ent->client->ps.gunframe++; in Machinegun_Fire()
1001 if (ent->client->ps.gunframe == 5) in Machinegun_Fire()
1002 ent->client->ps.gunframe = 4; in Machinegun_Fire()
1004 ent->client->ps.gunframe = 5; in Machinegun_Fire()
1006 if (ent->client->pers.inventory[ent->client->ammo_index] < 1) in Machinegun_Fire()
1008 ent->client->ps.gunframe = 6; in Machinegun_Fire()
1009 if (level.time >= ent->pain_debounce_time) in Machinegun_Fire()
1011 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Machinegun_Fire()
1012 ent->pain_debounce_time = level.time + 1; in Machinegun_Fire()
1014 NoAmmoWeaponChange (ent); in Machinegun_Fire()
1026 ent->client->kick_origin[i] = crandom() * 0.35; in Machinegun_Fire()
1027 ent->client->kick_angles[i] = crandom() * 0.7; in Machinegun_Fire()
1029 ent->client->kick_origin[0] = crandom() * 0.35; in Machinegun_Fire()
1030 ent->client->kick_angles[0] = ent->client->machinegun_shots * -1.5; in Machinegun_Fire()
1035 ent->client->machinegun_shots++; in Machinegun_Fire()
1036 if (ent->client->machinegun_shots > 9) in Machinegun_Fire()
1037 ent->client->machinegun_shots = 9; in Machinegun_Fire()
1041 VectorAdd (ent->client->v_angle, ent->client->kick_angles, angles); in Machinegun_Fire()
1043 VectorSet(offset, 0, 8, ent->viewheight-8); in Machinegun_Fire()
1044 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in Machinegun_Fire()
1045 …fire_bullet (ent, start, forward, damage, kick, DEFAULT_BULLET_HSPREAD, DEFAULT_BULLET_VSPREAD, MO… in Machinegun_Fire()
1048 gi.WriteShort (ent-g_edicts); in Machinegun_Fire()
1050 gi.multicast (ent->s.origin, MULTICAST_PVS); in Machinegun_Fire()
1052 PlayerNoise(ent, start, PNOISE_WEAPON); in Machinegun_Fire()
1055 ent->client->pers.inventory[ent->client->ammo_index]--; in Machinegun_Fire()
1057 ent->client->anim_priority = ANIM_ATTACK; in Machinegun_Fire()
1058 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Machinegun_Fire()
1060 ent->s.frame = FRAME_crattak1 - (int) (random()+0.25); in Machinegun_Fire()
1061 ent->client->anim_end = FRAME_crattak9; in Machinegun_Fire()
1065 ent->s.frame = FRAME_attack1 - (int) (random()+0.25); in Machinegun_Fire()
1066 ent->client->anim_end = FRAME_attack8; in Machinegun_Fire()
1070 void Weapon_Machinegun (edict_t *ent) in Weapon_Machinegun() argument
1075 Weapon_Generic (ent, 3, 5, 45, 49, pause_frames, fire_frames, Machinegun_Fire); in Weapon_Machinegun()
1078 void Chaingun_Fire (edict_t *ent) in Chaingun_Fire() argument
1094 if (ent->client->ps.gunframe == 5) in Chaingun_Fire()
1095 gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/chngnu1a.wav"), 1, ATTN_IDLE, 0); in Chaingun_Fire()
1097 if ((ent->client->ps.gunframe == 14) && !(ent->client->buttons & BUTTON_ATTACK)) in Chaingun_Fire()
1099 ent->client->ps.gunframe = 32; in Chaingun_Fire()
1100 ent->client->weapon_sound = 0; in Chaingun_Fire()
1103 else if ((ent->client->ps.gunframe == 21) && (ent->client->buttons & BUTTON_ATTACK) in Chaingun_Fire()
1104 && ent->client->pers.inventory[ent->client->ammo_index]) in Chaingun_Fire()
1106 ent->client->ps.gunframe = 15; in Chaingun_Fire()
1110 ent->client->ps.gunframe++; in Chaingun_Fire()
1113 if (ent->client->ps.gunframe == 22) in Chaingun_Fire()
1115 ent->client->weapon_sound = 0; in Chaingun_Fire()
1116 gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/chngnd1a.wav"), 1, ATTN_IDLE, 0); in Chaingun_Fire()
1120 ent->client->weapon_sound = gi.soundindex("weapons/chngnl1a.wav"); in Chaingun_Fire()
1123 ent->client->anim_priority = ANIM_ATTACK; in Chaingun_Fire()
1124 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Chaingun_Fire()
1126 ent->s.frame = FRAME_crattak1 - (ent->client->ps.gunframe & 1); in Chaingun_Fire()
1127 ent->client->anim_end = FRAME_crattak9; in Chaingun_Fire()
1131 ent->s.frame = FRAME_attack1 - (ent->client->ps.gunframe & 1); in Chaingun_Fire()
1132 ent->client->anim_end = FRAME_attack8; in Chaingun_Fire()
1135 if (ent->client->ps.gunframe <= 9) in Chaingun_Fire()
1137 else if (ent->client->ps.gunframe <= 14) in Chaingun_Fire()
1139 if (ent->client->buttons & BUTTON_ATTACK) in Chaingun_Fire()
1147 if (ent->client->pers.inventory[ent->client->ammo_index] < shots) in Chaingun_Fire()
1148 shots = ent->client->pers.inventory[ent->client->ammo_index]; in Chaingun_Fire()
1152 if (level.time >= ent->pain_debounce_time) in Chaingun_Fire()
1154 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Chaingun_Fire()
1155 ent->pain_debounce_time = level.time + 1; in Chaingun_Fire()
1157 NoAmmoWeaponChange (ent); in Chaingun_Fire()
1169 ent->client->kick_origin[i] = crandom() * 0.35; in Chaingun_Fire()
1170 ent->client->kick_angles[i] = crandom() * 0.7; in Chaingun_Fire()
1176 AngleVectors (ent->client->v_angle, forward, right, up); in Chaingun_Fire()
1179 VectorSet(offset, 0, r, u + ent->viewheight-8); in Chaingun_Fire()
1180 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in Chaingun_Fire()
1182 …fire_bullet (ent, start, forward, damage, kick, DEFAULT_BULLET_HSPREAD, DEFAULT_BULLET_VSPREAD, MO… in Chaingun_Fire()
1187 gi.WriteShort (ent-g_edicts); in Chaingun_Fire()
1189 gi.multicast (ent->s.origin, MULTICAST_PVS); in Chaingun_Fire()
1191 PlayerNoise(ent, start, PNOISE_WEAPON); in Chaingun_Fire()
1194 ent->client->pers.inventory[ent->client->ammo_index] -= shots; in Chaingun_Fire()
1198 void Weapon_Chaingun (edict_t *ent) in Weapon_Chaingun() argument
1203 Weapon_Generic (ent, 4, 31, 61, 64, pause_frames, fire_frames, Chaingun_Fire); in Weapon_Chaingun()
1215 void weapon_shotgun_fire (edict_t *ent) in weapon_shotgun_fire() argument
1223 if (ent->client->ps.gunframe == 9) in weapon_shotgun_fire()
1225 ent->client->ps.gunframe++; in weapon_shotgun_fire()
1229 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_shotgun_fire()
1231 VectorScale (forward, -2, ent->client->kick_origin); in weapon_shotgun_fire()
1232 ent->client->kick_angles[0] = -2; in weapon_shotgun_fire()
1234 VectorSet(offset, 0, 8, ent->viewheight-8); in weapon_shotgun_fire()
1235 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_shotgun_fire()
1244 …fire_shotgun (ent, start, forward, damage, kick, 500, 500, DEFAULT_DEATHMATCH_SHOTGUN_COUNT, MOD_S… in weapon_shotgun_fire()
1246 fire_shotgun (ent, start, forward, damage, kick, 500, 500, DEFAULT_SHOTGUN_COUNT, MOD_SHOTGUN); in weapon_shotgun_fire()
1250 gi.WriteShort (ent-g_edicts); in weapon_shotgun_fire()
1252 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_shotgun_fire()
1254 ent->client->ps.gunframe++; in weapon_shotgun_fire()
1255 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_shotgun_fire()
1258 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_shotgun_fire()
1261 void Weapon_Shotgun (edict_t *ent) in Weapon_Shotgun() argument
1266 Weapon_Generic (ent, 7, 18, 36, 39, pause_frames, fire_frames, weapon_shotgun_fire); in Weapon_Shotgun()
1270 void weapon_supershotgun_fire (edict_t *ent) in weapon_supershotgun_fire() argument
1279 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_supershotgun_fire()
1281 VectorScale (forward, -2, ent->client->kick_origin); in weapon_supershotgun_fire()
1282 ent->client->kick_angles[0] = -2; in weapon_supershotgun_fire()
1284 VectorSet(offset, 0, 8, ent->viewheight-8); in weapon_supershotgun_fire()
1285 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_supershotgun_fire()
1293 v[PITCH] = ent->client->v_angle[PITCH]; in weapon_supershotgun_fire()
1294 v[YAW] = ent->client->v_angle[YAW] - 5; in weapon_supershotgun_fire()
1295 v[ROLL] = ent->client->v_angle[ROLL]; in weapon_supershotgun_fire()
1297 …fire_shotgun (ent, start, forward, damage, kick, DEFAULT_SHOTGUN_HSPREAD, DEFAULT_SHOTGUN_VSPREAD,… in weapon_supershotgun_fire()
1298 v[YAW] = ent->client->v_angle[YAW] + 5; in weapon_supershotgun_fire()
1300 …fire_shotgun (ent, start, forward, damage, kick, DEFAULT_SHOTGUN_HSPREAD, DEFAULT_SHOTGUN_VSPREAD,… in weapon_supershotgun_fire()
1304 gi.WriteShort (ent-g_edicts); in weapon_supershotgun_fire()
1306 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_supershotgun_fire()
1308 ent->client->ps.gunframe++; in weapon_supershotgun_fire()
1309 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_supershotgun_fire()
1312 ent->client->pers.inventory[ent->client->ammo_index] -= 2; in weapon_supershotgun_fire()
1315 void Weapon_SuperShotgun (edict_t *ent) in Weapon_SuperShotgun() argument
1320 Weapon_Generic (ent, 6, 17, 57, 61, pause_frames, fire_frames, weapon_supershotgun_fire); in Weapon_SuperShotgun()
1333 void weapon_railgun_fire (edict_t *ent) in weapon_railgun_fire() argument
1358 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_railgun_fire()
1360 VectorScale (forward, -3, ent->client->kick_origin); in weapon_railgun_fire()
1361 ent->client->kick_angles[0] = -3; in weapon_railgun_fire()
1363 VectorSet(offset, 0, 7, ent->viewheight-8); in weapon_railgun_fire()
1364 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_railgun_fire()
1365 fire_rail (ent, start, forward, damage, kick); in weapon_railgun_fire()
1369 gi.WriteShort (ent-g_edicts); in weapon_railgun_fire()
1371 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_railgun_fire()
1373 ent->client->ps.gunframe++; in weapon_railgun_fire()
1374 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_railgun_fire()
1377 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_railgun_fire()
1381 void Weapon_Railgun (edict_t *ent) in Weapon_Railgun() argument
1386 Weapon_Generic (ent, 3, 18, 56, 61, pause_frames, fire_frames, weapon_railgun_fire); in Weapon_Railgun()
1398 void weapon_bfg_fire (edict_t *ent) in weapon_bfg_fire() argument
1410 if (ent->client->ps.gunframe == 9) in weapon_bfg_fire()
1414 gi.WriteShort (ent-g_edicts); in weapon_bfg_fire()
1416 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_bfg_fire()
1418 ent->client->ps.gunframe++; in weapon_bfg_fire()
1420 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_bfg_fire()
1426 if (ent->client->pers.inventory[ent->client->ammo_index] < 50) in weapon_bfg_fire()
1428 ent->client->ps.gunframe++; in weapon_bfg_fire()
1435 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_bfg_fire()
1437 VectorScale (forward, -2, ent->client->kick_origin); in weapon_bfg_fire()
1440 ent->client->v_dmg_pitch = -40; in weapon_bfg_fire()
1441 ent->client->v_dmg_roll = crandom()*8; in weapon_bfg_fire()
1442 ent->client->v_dmg_time = level.time + DAMAGE_TIME; in weapon_bfg_fire()
1444 VectorSet(offset, 8, 8, ent->viewheight-8); in weapon_bfg_fire()
1445 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_bfg_fire()
1446 fire_bfg (ent, start, forward, damage, 400, damage_radius); in weapon_bfg_fire()
1448 ent->client->ps.gunframe++; in weapon_bfg_fire()
1450 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_bfg_fire()
1453 ent->client->pers.inventory[ent->client->ammo_index] -= 50; in weapon_bfg_fire()
1456 void Weapon_BFG (edict_t *ent) in Weapon_BFG() argument
1461 Weapon_Generic (ent, 8, 32, 55, 58, pause_frames, fire_frames, weapon_bfg_fire); in Weapon_BFG()