Lines Matching refs:ent

13 void weapon_grenade_fire (edict_t *ent, qboolean held);
15 void weapon_trap_fire (edict_t *ent, qboolean held);
101 void ShowGun(edict_t *ent);
102 qboolean Pickup_Weapon (edict_t *ent, edict_t *other) in Pickup_Weapon() argument
107 index = ITEM_INDEX(ent->item); in Pickup_Weapon()
112 if (!(ent->spawnflags & (DROPPED_ITEM | DROPPED_PLAYER_ITEM) ) ) in Pickup_Weapon()
118 if (!(ent->spawnflags & DROPPED_ITEM) ) in Pickup_Weapon()
121 ammo = FindItem (ent->item->ammo); in Pickup_Weapon()
128 if (! (ent->spawnflags & DROPPED_PLAYER_ITEM) ) in Pickup_Weapon()
133 ent->flags |= FL_RESPAWN; in Pickup_Weapon()
135 SetRespawn (ent, 30); in Pickup_Weapon()
138 ent->flags |= FL_RESPAWN; in Pickup_Weapon()
159 if (other->client->pers.weapon != ent->item && in Pickup_Weapon()
163 if(other->svflags & SVF_MONSTER) ent->item->use(other,ent->item); in Pickup_Weapon()
164 else other->client->newweapon = ent->item; in Pickup_Weapon()
171 ent->item->use(other,ent->item);//other->client->pers.weapon = ent->item; in Pickup_Weapon()
187 void ShowGun(edict_t *ent) in ShowGun() argument
191 if(!ent->client->pers.weapon) in ShowGun()
193 ent->s.modelindex2 = 0; in ShowGun()
198 ent->s.modelindex2 = 255; in ShowGun()
202 j = Get_KindWeapon(ent->client->pers.weapon); in ShowGun()
205 ent->s.modelindex2 = 255; in ShowGun()
206 if (ent->client->pers.weapon) in ShowGun()
211 ent->s.skinnum = (ent - g_edicts - 1) | i; in ShowGun()
216 void ChangeWeapon (edict_t *ent) in ChangeWeapon() argument
220 if (ent->client->grenade_time) in ChangeWeapon()
222 ent->client->grenade_time = level.time; in ChangeWeapon()
223 ent->client->weapon_sound = 0; in ChangeWeapon()
224 weapon_grenade_fire (ent, false); in ChangeWeapon()
225 ent->client->grenade_time = 0; in ChangeWeapon()
228 ent->client->pers.lastweapon = ent->client->pers.weapon; in ChangeWeapon()
229 ent->client->pers.weapon = ent->client->newweapon; in ChangeWeapon()
230 ent->client->newweapon = NULL; in ChangeWeapon()
231 ent->client->machinegun_shots = 0; in ChangeWeapon()
233 if (ent->client->pers.weapon && ent->client->pers.weapon->ammo) in ChangeWeapon()
234 ent->client->ammo_index = ITEM_INDEX(FindItem(ent->client->pers.weapon->ammo)); in ChangeWeapon()
236 ent->client->ammo_index = 0; in ChangeWeapon()
238 if (!ent->client->pers.weapon) in ChangeWeapon()
240 ent->client->ps.gunindex = 0; in ChangeWeapon()
244 ent->client->weaponstate = WEAPON_ACTIVATING; in ChangeWeapon()
245 ent->client->ps.gunframe = 0; in ChangeWeapon()
247 mdl = ent->client->pers.weapon->view_model; in ChangeWeapon()
250 if(Q_stricmp (ent->client->pers.weapon->classname, "weapon_grapple") == 0) in ChangeWeapon()
256 ent->client->ps.gunindex = gi.modelindex(mdl/*ent->client->pers.weapon->view_model*/); in ChangeWeapon()
260 ent->client->anim_priority = ANIM_PAIN; in ChangeWeapon()
261 if(ent->client->ps.pmove.pm_flags & PMF_DUCKED) in ChangeWeapon()
263 ent->s.frame = FRAME_crpain1; in ChangeWeapon()
264 ent->client->anim_end = FRAME_crpain4; in ChangeWeapon()
268 ent->s.frame = FRAME_pain301; in ChangeWeapon()
269 ent->client->anim_end = FRAME_pain304; in ChangeWeapon()
273 ShowGun(ent); in ChangeWeapon()
283 void NoAmmoWeaponChange (edict_t *ent) in NoAmmoWeaponChange() argument
287 if ( ent->client->pers.inventory[ITEM_INDEX(Fdi_SLUGS/*FindItem("slugs")*/)] in NoAmmoWeaponChange()
288 && ent->client->pers.inventory[ITEM_INDEX(Fdi_RAILGUN/*FindItem("railgun")*/)] ) in NoAmmoWeaponChange()
294 else if ( ent->client->pers.inventory[ITEM_INDEX (Fdi_MAGSLUGS/*FindItem ("mag slug")*/)] in NoAmmoWeaponChange()
295 && ent->client->pers.inventory[ITEM_INDEX (Fdi_PHALANX/*FindItem ("phalanx")*/)]) in NoAmmoWeaponChange()
300 else if ( ent->client->pers.inventory[ITEM_INDEX (Fdi_CELLS/*FindItem ("cells")*/)] in NoAmmoWeaponChange()
301 && ent->client->pers.inventory[ITEM_INDEX (Fdi_BOOMER/*FindItem ("ionripper")*/)]) in NoAmmoWeaponChange()
306 else if ( ent->client->pers.inventory[ITEM_INDEX(Fdi_CELLS/*FindItem("cells")*/)] in NoAmmoWeaponChange()
307 && ent->client->pers.inventory[ITEM_INDEX(Fdi_HYPERBLASTER/*FindItem("hyperblaster")*/)] ) in NoAmmoWeaponChange()
312 else if ( ent->client->pers.inventory[ITEM_INDEX(Fdi_BULLETS/*FindItem("bullets")*/)] in NoAmmoWeaponChange()
313 && ent->client->pers.inventory[ITEM_INDEX(Fdi_CHAINGUN/*FindItem("chaingun")*/)] ) in NoAmmoWeaponChange()
318 else if ( ent->client->pers.inventory[ITEM_INDEX(Fdi_BULLETS/*FindItem("bullets")*/)] in NoAmmoWeaponChange()
319 && ent->client->pers.inventory[ITEM_INDEX(Fdi_MACHINEGUN/*FindItem("machinegun")*/)] ) in NoAmmoWeaponChange()
324 else if ( ent->client->pers.inventory[ITEM_INDEX(Fdi_SHELLS/*FindItem("shells")*/)] > 1 in NoAmmoWeaponChange()
325 && ent->client->pers.inventory[ITEM_INDEX(Fdi_SUPERSHOTGUN/*FindItem("super shotgun")*/)] ) in NoAmmoWeaponChange()
330 else if ( ent->client->pers.inventory[ITEM_INDEX(Fdi_SHELLS/*FindItem("shells")*/)] in NoAmmoWeaponChange()
331 && ent->client->pers.inventory[ITEM_INDEX(Fdi_SHOTGUN/*FindItem("shotgun")*/)] ) in NoAmmoWeaponChange()
338 if(ent->svflags & SVF_MONSTER) item->use(ent,item); in NoAmmoWeaponChange()
339 else ent->client->newweapon = item; in NoAmmoWeaponChange()
350 void Think_Weapon (edict_t *ent) in Think_Weapon() argument
353 if (ent->health < 1) in Think_Weapon()
355 ent->client->newweapon = NULL; in Think_Weapon()
356 ChangeWeapon (ent); in Think_Weapon()
360 if (ent->client->pers.weapon && ent->client->pers.weapon->weaponthink) in Think_Weapon()
362 is_quad = (ent->client->quad_framenum > level.framenum); in Think_Weapon()
364 is_quadfire = (ent->client->quadfire_framenum > level.framenum); in Think_Weapon()
365 if (ent->client->silencer_shots) in Think_Weapon()
369 ent->client->pers.weapon->weaponthink (ent); in Think_Weapon()
381 void Use_Weapon (edict_t *ent, gitem_t *item) in Use_Weapon() argument
387 if (item == ent->client->pers.weapon) in Use_Weapon()
390 if(ent->svflags & SVF_MONSTER) in Use_Weapon()
392 if(ent->client->newweapon != NULL) return; in Use_Weapon()
395 ent->client->newweapon = item; in Use_Weapon()
405 if (!ent->client->pers.inventory[ammo_index]) in Use_Weapon()
407 …if(!(ent->svflags & SVF_MONSTER)) gi.cprintf (ent, PRINT_HIGH, "No %s for %s.\n", ammo_item->picku… in Use_Weapon()
411 if (ent->client->pers.inventory[ammo_index] < item->quantity) in Use_Weapon()
413 …if(!(ent->svflags & SVF_MONSTER)) gi.cprintf (ent, PRINT_HIGH, "Not enough %s for %s.\n", ammo_ite… in Use_Weapon()
419 ent->client->newweapon = item; in Use_Weapon()
423 void Use_Weapon2 (edict_t *ent, gitem_t *item) in Use_Weapon2() argument
430 if(ent->svflags & SVF_MONSTER) in Use_Weapon2()
432 Use_Weapon(ent,item); in Use_Weapon2()
438 if (item == ent->client->pers.weapon) in Use_Weapon2()
442 if (!ent->client->pers.inventory[index]) in Use_Weapon2()
453 if (!ent->client->pers.inventory[ammo_index]) in Use_Weapon2()
458 if (ent->client->pers.inventory[ammo_index]) in Use_Weapon2()
462 if (!ent->client->pers.inventory[index]) in Use_Weapon2()
468 else if (item == ent->client->pers.weapon) in Use_Weapon2()
472 if (!ent->client->pers.inventory[index]) in Use_Weapon2()
481 if (item == ent->client->pers.weapon) in Use_Weapon2()
488 if (!ent->client->pers.inventory[ammo_index] && !g_select_empty->value) in Use_Weapon2()
490 gi.cprintf (ent, PRINT_HIGH, "No %s for %s.\n", ammo_item->pickup_name, item->pickup_name); in Use_Weapon2()
496 ent->client->newweapon = item; in Use_Weapon2()
506 void Drop_Weapon (edict_t *ent, gitem_t *item) in Drop_Weapon() argument
515 …if ( ((item == ent->client->pers.weapon) || (item == ent->client->newweapon))&& (ent->client->pers… in Drop_Weapon()
517 if(!(ent->svflags & SVF_MONSTER)) gi.cprintf (ent, PRINT_HIGH, "Can't drop current weapon\n"); in Drop_Weapon()
521 Drop_Item (ent, item); in Drop_Weapon()
522 ent->client->pers.inventory[index]--; in Drop_Weapon()
537ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST, int FRAME_IDLE_LAST, int FRAME_DEACTIVATE_LAST,… in Weapon_Generic2() argument
541 if (ent->client->weaponstate == WEAPON_DROPPING) in Weapon_Generic2()
543 if (ent->client->ps.gunframe == FRAME_DEACTIVATE_LAST) in Weapon_Generic2()
545 ChangeWeapon (ent); in Weapon_Generic2()
548 else if((FRAME_DEACTIVATE_LAST - ent->client->ps.gunframe) == 4) in Weapon_Generic2()
550 ent->client->anim_priority = ANIM_REVERSE; in Weapon_Generic2()
551 if(ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Weapon_Generic2()
553 ent->s.frame = FRAME_crpain4+1; in Weapon_Generic2()
554 ent->client->anim_end = FRAME_crpain1; in Weapon_Generic2()
558 ent->s.frame = FRAME_pain304+1; in Weapon_Generic2()
559 ent->client->anim_end = FRAME_pain301; in Weapon_Generic2()
565 ent->client->ps.gunframe++; in Weapon_Generic2()
569 if (ent->client->weaponstate == WEAPON_ACTIVATING) in Weapon_Generic2()
571 if (ent->client->ps.gunframe == FRAME_ACTIVATE_LAST) in Weapon_Generic2()
573 ent->client->weaponstate = WEAPON_READY; in Weapon_Generic2()
574 ent->client->ps.gunframe = FRAME_IDLE_FIRST; in Weapon_Generic2()
578 ent->client->ps.gunframe++; in Weapon_Generic2()
582 if ((ent->client->newweapon) && (ent->client->weaponstate != WEAPON_FIRING)) in Weapon_Generic2()
584 ent->client->weaponstate = WEAPON_DROPPING; in Weapon_Generic2()
585 ent->client->ps.gunframe = FRAME_DEACTIVATE_FIRST; in Weapon_Generic2()
589 ent->client->anim_priority = ANIM_REVERSE; in Weapon_Generic2()
590 if(ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Weapon_Generic2()
592 ent->s.frame = FRAME_crpain4+1; in Weapon_Generic2()
593 ent->client->anim_end = FRAME_crpain1; in Weapon_Generic2()
597 ent->s.frame = FRAME_pain304+1; in Weapon_Generic2()
598 ent->client->anim_end = FRAME_pain301; in Weapon_Generic2()
607 if (ent->client->weaponstate == WEAPON_READY) in Weapon_Generic2()
609 if ( ((ent->client->latched_buttons|ent->client->buttons) & BUTTON_ATTACK) ) in Weapon_Generic2()
611 ent->client->latched_buttons &= ~BUTTON_ATTACK; in Weapon_Generic2()
612 if ((!ent->client->ammo_index) || in Weapon_Generic2()
613 ( ent->client->pers.inventory[ent->client->ammo_index] >= ent->client->pers.weapon->quantity)) in Weapon_Generic2()
615 ent->client->ps.gunframe = FRAME_FIRE_FIRST; in Weapon_Generic2()
616 ent->client->weaponstate = WEAPON_FIRING; in Weapon_Generic2()
619 ent->client->anim_priority = ANIM_ATTACK; in Weapon_Generic2()
620 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Weapon_Generic2()
622 ent->s.frame = FRAME_crattak1-1; in Weapon_Generic2()
623 ent->client->anim_end = FRAME_crattak9; in Weapon_Generic2()
627 ent->s.frame = FRAME_attack1-1; in Weapon_Generic2()
628 ent->client->anim_end = FRAME_attack8; in Weapon_Generic2()
633 if (level.time >= ent->pain_debounce_time) in Weapon_Generic2()
635 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Weapon_Generic2()
636 ent->pain_debounce_time = level.time + 1; in Weapon_Generic2()
643 NoAmmoWeaponChange (ent); in Weapon_Generic2()
648 if (ent->client->ps.gunframe == FRAME_IDLE_LAST) in Weapon_Generic2()
650 ent->client->ps.gunframe = FRAME_IDLE_FIRST; in Weapon_Generic2()
658 if (ent->client->ps.gunframe == pause_frames[n]) in Weapon_Generic2()
666 ent->client->ps.gunframe++; in Weapon_Generic2()
671 if (ent->client->weaponstate == WEAPON_FIRING) in Weapon_Generic2()
675 if (ent->client->ps.gunframe == fire_frames[n]) in Weapon_Generic2()
678 if (!CTFApplyStrengthSound(ent)) in Weapon_Generic2()
680 if (ent->client->quad_framenum > level.framenum) in Weapon_Generic2()
681 gi.sound(ent, CHAN_ITEM, gi.soundindex("items/damage3.wav"), 1, ATTN_NORM, 0); in Weapon_Generic2()
683 CTFApplyHasteSound(ent); in Weapon_Generic2()
685 fire (ent); in Weapon_Generic2()
691 ent->client->ps.gunframe++; in Weapon_Generic2()
693 if (ent->client->ps.gunframe == FRAME_IDLE_FIRST+1) in Weapon_Generic2()
694 ent->client->weaponstate = WEAPON_READY; in Weapon_Generic2()
699ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST, int FRAME_IDLE_LAST, int FRAME_DEACTIVATE_LAST,… in Weapon_Generic() argument
701 int oldstate = ent->client->weaponstate; in Weapon_Generic()
703 Weapon_Generic2 (ent, FRAME_ACTIVATE_LAST, FRAME_FIRE_LAST, in Weapon_Generic()
708 if (stricmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 && in Weapon_Generic()
709 ent->client->weaponstate == WEAPON_FIRING) in Weapon_Generic()
712 if ((CTFApplyHaste(ent) || in Weapon_Generic()
713 (Q_stricmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 && in Weapon_Generic()
714 ent->client->weaponstate != WEAPON_FIRING)) in Weapon_Generic()
715 && oldstate == ent->client->weaponstate) { in Weapon_Generic()
716 Weapon_Generic2 (ent, FRAME_ACTIVATE_LAST, FRAME_FIRE_LAST, in Weapon_Generic()
735 void weapon_grenade_fire (edict_t *ent, qboolean held) in weapon_grenade_fire() argument
749 VectorSet(offset, 8, 8, ent->viewheight-8); in weapon_grenade_fire()
750 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_grenade_fire()
751 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_grenade_fire()
753 timer = ent->client->grenade_time - level.time; in weapon_grenade_fire()
755 fire_grenade2 (ent, start, forward, damage, speed, timer, radius, held); in weapon_grenade_fire()
774 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_grenade_fire()
776 ent->client->grenade_time = level.time + 1.0; in weapon_grenade_fire()
778 if(ent->deadflag || ent->s.modelindex != 255) // VWep animations screw up corpses in weapon_grenade_fire()
783 if (ent->health <= 0) in weapon_grenade_fire()
786 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in weapon_grenade_fire()
788 ent->client->anim_priority = ANIM_ATTACK; in weapon_grenade_fire()
789 ent->s.frame = FRAME_crattak1-1; in weapon_grenade_fire()
790 ent->client->anim_end = FRAME_crattak3; in weapon_grenade_fire()
794 ent->client->anim_priority = ANIM_REVERSE; in weapon_grenade_fire()
795 ent->s.frame = FRAME_wave08; in weapon_grenade_fire()
796 ent->client->anim_end = FRAME_wave01; in weapon_grenade_fire()
800 void Weapon_Grenade (edict_t *ent) in Weapon_Grenade() argument
802 if ((ent->client->newweapon) && (ent->client->weaponstate == WEAPON_READY)) in Weapon_Grenade()
804 ChangeWeapon (ent); in Weapon_Grenade()
808 if (ent->client->weaponstate == WEAPON_ACTIVATING) in Weapon_Grenade()
810 ent->client->weaponstate = WEAPON_READY; in Weapon_Grenade()
811 ent->client->ps.gunframe = 16; in Weapon_Grenade()
815 if (ent->client->weaponstate == WEAPON_READY) in Weapon_Grenade()
817 if ( ((ent->client->latched_buttons|ent->client->buttons) & BUTTON_ATTACK) ) in Weapon_Grenade()
819 ent->client->latched_buttons &= ~BUTTON_ATTACK; in Weapon_Grenade()
820 if (ent->client->pers.inventory[ent->client->ammo_index]) in Weapon_Grenade()
822 ent->client->ps.gunframe = 1; in Weapon_Grenade()
823 ent->client->weaponstate = WEAPON_FIRING; in Weapon_Grenade()
824 ent->client->grenade_time = 0; in Weapon_Grenade()
828 if (level.time >= ent->pain_debounce_time) in Weapon_Grenade()
830 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Weapon_Grenade()
831 ent->pain_debounce_time = level.time + 1; in Weapon_Grenade()
833 NoAmmoWeaponChange (ent); in Weapon_Grenade()
838 …if ((ent->client->ps.gunframe == 29) || (ent->client->ps.gunframe == 34) || (ent->client->ps.gunfr… in Weapon_Grenade()
844 if (++ent->client->ps.gunframe > 48) in Weapon_Grenade()
845 ent->client->ps.gunframe = 16; in Weapon_Grenade()
849 if (ent->client->weaponstate == WEAPON_FIRING) in Weapon_Grenade()
851 if (ent->client->ps.gunframe == 5) in Weapon_Grenade()
852 gi.sound(ent, CHAN_WEAPON, gi.soundindex("weapons/hgrena1b.wav"), 1, ATTN_NORM, 0); in Weapon_Grenade()
854 if (ent->client->ps.gunframe == 11) in Weapon_Grenade()
856 if (!ent->client->grenade_time) in Weapon_Grenade()
858 ent->client->grenade_time = level.time + GRENADE_TIMER + 0.2; in Weapon_Grenade()
859 ent->client->weapon_sound = gi.soundindex("weapons/hgrenc1b.wav"); in Weapon_Grenade()
863 if (!ent->client->grenade_blew_up && level.time >= ent->client->grenade_time) in Weapon_Grenade()
865 ent->client->weapon_sound = 0; in Weapon_Grenade()
866 weapon_grenade_fire (ent, true); in Weapon_Grenade()
867 ent->client->grenade_blew_up = true; in Weapon_Grenade()
870 if (ent->client->buttons & BUTTON_ATTACK) in Weapon_Grenade()
873 if (ent->client->grenade_blew_up) in Weapon_Grenade()
875 if (level.time >= ent->client->grenade_time) in Weapon_Grenade()
877 ent->client->ps.gunframe = 15; in Weapon_Grenade()
878 ent->client->grenade_blew_up = false; in Weapon_Grenade()
887 if (ent->client->ps.gunframe == 12) in Weapon_Grenade()
889 ent->client->weapon_sound = 0; in Weapon_Grenade()
890 weapon_grenade_fire (ent, false); in Weapon_Grenade()
893 if ((ent->client->ps.gunframe == 15) && (level.time < ent->client->grenade_time)) in Weapon_Grenade()
896 ent->client->ps.gunframe++; in Weapon_Grenade()
898 if (ent->client->ps.gunframe == 16) in Weapon_Grenade()
900 ent->client->grenade_time = 0; in Weapon_Grenade()
901 ent->client->weaponstate = WEAPON_READY; in Weapon_Grenade()
914 void weapon_grenadelauncher_fire (edict_t *ent) in weapon_grenadelauncher_fire() argument
926 VectorSet(offset, 8, 8, ent->viewheight-8); in weapon_grenadelauncher_fire()
927 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_grenadelauncher_fire()
928 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_grenadelauncher_fire()
930 VectorScale (forward, -2, ent->client->kick_origin); in weapon_grenadelauncher_fire()
931 ent->client->kick_angles[0] = -1; in weapon_grenadelauncher_fire()
933 fire_grenade (ent, start, forward, damage, 600, 2.5, radius); in weapon_grenadelauncher_fire()
936 gi.WriteShort (ent-g_edicts); in weapon_grenadelauncher_fire()
938 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_grenadelauncher_fire()
940 ent->client->ps.gunframe++; in weapon_grenadelauncher_fire()
942 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_grenadelauncher_fire()
945 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_grenadelauncher_fire()
948 void Weapon_GrenadeLauncher (edict_t *ent) in Weapon_GrenadeLauncher() argument
953 Weapon_Generic (ent, 5, 16, 59, 64, pause_frames, fire_frames, weapon_grenadelauncher_fire); in Weapon_GrenadeLauncher()
957 Weapon_Generic (ent, 5, 16, 59, 64, pause_frames, fire_frames, weapon_grenadelauncher_fire); in Weapon_GrenadeLauncher()
970 void Weapon_RocketLauncher_Fire (edict_t *ent) in Weapon_RocketLauncher_Fire() argument
987 AngleVectors (ent->client->v_angle, forward, right, NULL); in Weapon_RocketLauncher_Fire()
989 VectorScale (forward, -2, ent->client->kick_origin); in Weapon_RocketLauncher_Fire()
990 ent->client->kick_angles[0] = -1; in Weapon_RocketLauncher_Fire()
992 VectorSet(offset, 8, 8, ent->viewheight-8); in Weapon_RocketLauncher_Fire()
993 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in Weapon_RocketLauncher_Fire()
994 …if(ent->client->zc.aiming != 4) fire_rocket (ent, start, forward, damage, 650, damage_radius, radi… in Weapon_RocketLauncher_Fire()
998 fire_lockon_rocket (ent, start, forward, damage, 20, damage_radius, radius_damage); in Weapon_RocketLauncher_Fire()
1003 gi.WriteShort (ent-g_edicts); in Weapon_RocketLauncher_Fire()
1005 gi.multicast (ent->s.origin, MULTICAST_PVS); in Weapon_RocketLauncher_Fire()
1007 ent->client->ps.gunframe++; in Weapon_RocketLauncher_Fire()
1009 PlayerNoise(ent, start, PNOISE_WEAPON); in Weapon_RocketLauncher_Fire()
1012 ent->client->pers.inventory[ent->client->ammo_index]--; in Weapon_RocketLauncher_Fire()
1015 ent->client->zc.aiming = 0; //�Y�[���s�� in Weapon_RocketLauncher_Fire()
1019 void Weapon_LockonRocketLauncher_Fire (edict_t *ent) in Weapon_LockonRocketLauncher_Fire() argument
1025 if (ent->client->buttons & BUTTON_ATTACK) in Weapon_LockonRocketLauncher_Fire()
1027 ent->client->zc.lockon = false; //�X�i�C�p�[�Ƀ��b�N�I���@�\�Ȃ� in Weapon_LockonRocketLauncher_Fire()
1028 if(ent->client->zc.aiming == 0) in Weapon_LockonRocketLauncher_Fire()
1030 gi.sound (ent, CHAN_WEAPON, gi.soundindex("weapons/sshotr1b.wav"), 1, ATTN_NONE, 0); in Weapon_LockonRocketLauncher_Fire()
1031 ent->client->zc.aiming = 3; in Weapon_LockonRocketLauncher_Fire()
1032 if(ent->client->zc.distance <10 || ent->client->zc.distance > 90) ent->client->zc.distance = 90; in Weapon_LockonRocketLauncher_Fire()
1033 ent->client->ps.fov = ent->client->zc.distance;//�Y�[���J�n in Weapon_LockonRocketLauncher_Fire()
1038 AngleVectors (ent->client->v_angle, aim, NULL , NULL); in Weapon_LockonRocketLauncher_Fire()
1041 VectorCopy(ent->s.origin,tmp); in Weapon_LockonRocketLauncher_Fire()
1042 if(ent->maxs[2] >= 32) tmp[2] += 22; in Weapon_LockonRocketLauncher_Fire()
1045 rs_trace = gi.trace (tmp, min, max, aim,ent, MASK_PLAYERSOLID); in Weapon_LockonRocketLauncher_Fire()
1046 if(rs_trace.ent != NULL) in Weapon_LockonRocketLauncher_Fire()
1048 if(Q_stricmp (rs_trace.ent->classname, "player") == 0) in Weapon_LockonRocketLauncher_Fire()
1052 if(ent->client->resp.ctf_team != rs_trace.ent->client->resp.ctf_team) in Weapon_LockonRocketLauncher_Fire()
1054 ent->client->zc.lockon = true; in Weapon_LockonRocketLauncher_Fire()
1055 if(ent->client->zc.first_target != rs_trace.ent) in Weapon_LockonRocketLauncher_Fire()
1056 gi.sound (ent, CHAN_AUTO, gi.soundindex("3zb/locrloc.wav"), 1, ATTN_NORM, 0); in Weapon_LockonRocketLauncher_Fire()
1057 ent->client->zc.first_target = rs_trace.ent; in Weapon_LockonRocketLauncher_Fire()
1059 else ent->client->zc.first_target = NULL; in Weapon_LockonRocketLauncher_Fire()
1063 ent->client->zc.lockon = true; in Weapon_LockonRocketLauncher_Fire()
1064 if(ent->client->zc.first_target != rs_trace.ent) in Weapon_LockonRocketLauncher_Fire()
1065 gi.sound (ent, CHAN_AUTO, gi.soundindex("3zb/locrloc.wav"), 1, ATTN_NORM, 0); in Weapon_LockonRocketLauncher_Fire()
1066 ent->client->zc.first_target = rs_trace.ent; in Weapon_LockonRocketLauncher_Fire()
1070 else ent->client->zc.first_target = NULL; in Weapon_LockonRocketLauncher_Fire()
1072 else ent->client->zc.first_target = NULL; in Weapon_LockonRocketLauncher_Fire()
1074 if(ent->client->zc.autozoom ) in Weapon_LockonRocketLauncher_Fire()
1076 VectorSubtract(ent->s.origin,rs_trace.endpos,tmp); in Weapon_LockonRocketLauncher_Fire()
1079 if(f < 200) ent->client->zc.distance = 90; in Weapon_LockonRocketLauncher_Fire()
1085 ent->client->zc.distance = 90 - (f - 200) / 14.6;//30; in Weapon_LockonRocketLauncher_Fire()
1087 else ent->client->zc.distance = 14; in Weapon_LockonRocketLauncher_Fire()
1089 if(ent->client->ps.fov != ent->client->zc.distance) in Weapon_LockonRocketLauncher_Fire()
1091 f = ent->client->ps.fov - ent->client->zc.distance; in Weapon_LockonRocketLauncher_Fire()
1093 gi.sound (ent, CHAN_AUTO, gi.soundindex("3zb/zoom.wav"), 1, ATTN_NORM, 0); in Weapon_LockonRocketLauncher_Fire()
1095 ent->client->ps.fov = ent->client->zc.distance; in Weapon_LockonRocketLauncher_Fire()
1100 ent->client->zc.aiming = 4; in Weapon_LockonRocketLauncher_Fire()
1101 Weapon_RocketLauncher_Fire(ent); in Weapon_LockonRocketLauncher_Fire()
1105 void Weapon_RocketLauncher (edict_t *ent) in Weapon_RocketLauncher() argument
1110 if(!(ent->client->buttons & BUTTON_ATTACK)) ent->client->zc.aiming = 0; //�A�N�e�B�x�[�g0 in Weapon_RocketLauncher()
1114 Weapon_Generic (ent, 4, 12, 50, 54, pause_frames, fire_frames, Weapon_LockonRocketLauncher_Fire); in Weapon_RocketLauncher()
1118 Weapon_Generic (ent, 4, 12, 50, 54, pause_frames, fire_frames, Weapon_RocketLauncher_Fire); in Weapon_RocketLauncher()
1121 Weapon_Generic (ent, 4, 12, 50, 54, pause_frames, fire_frames, Weapon_RocketLauncher_Fire); in Weapon_RocketLauncher()
1135 void Blaster_Fire (edict_t *ent, vec3_t g_offset, int damage, qboolean hyper, int effect) in Blaster_Fire() argument
1143 AngleVectors (ent->client->v_angle, forward, right, NULL); in Blaster_Fire()
1144 VectorSet(offset, 24, 8, ent->viewheight-8); in Blaster_Fire()
1146 if(!(ent->svflags & SVF_MONSTER)) in Blaster_Fire()
1149 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in Blaster_Fire()
1151 VectorScale (forward, -2, ent->client->kick_origin); in Blaster_Fire()
1152 ent->client->kick_angles[0] = -1; in Blaster_Fire()
1156 VectorSet(offset, 0, 0, ent->viewheight-8); in Blaster_Fire()
1157 VectorAdd (offset, ent->s.origin, start); in Blaster_Fire()
1162 fire_blaster (ent, start, forward, damage, 1000, effect, hyper); in Blaster_Fire()
1166 gi.WriteShort (ent-g_edicts); in Blaster_Fire()
1171 gi.multicast (ent->s.origin, MULTICAST_PVS); in Blaster_Fire()
1173 PlayerNoise(ent, start, PNOISE_WEAPON); in Blaster_Fire()
1177 void Weapon_Blaster_Fire (edict_t *ent) in Weapon_Blaster_Fire() argument
1185 Blaster_Fire (ent, vec3_origin, damage, false, EF_BLASTER); in Weapon_Blaster_Fire()
1186 ent->client->ps.gunframe++; in Weapon_Blaster_Fire()
1189 void Weapon_Blaster (edict_t *ent) in Weapon_Blaster() argument
1194 Weapon_Generic (ent, 4, 8, 52, 55, pause_frames, fire_frames, Weapon_Blaster_Fire); in Weapon_Blaster()
1197 Weapon_Generic (ent, 4, 8, 52, 55, pause_frames, fire_frames, Weapon_Blaster_Fire); in Weapon_Blaster()
1201 void Weapon_HyperBlaster_Fire (edict_t *ent) in Weapon_HyperBlaster_Fire() argument
1208 ent->client->weapon_sound = gi.soundindex("weapons/hyprbl1a.wav"); in Weapon_HyperBlaster_Fire()
1210 if (!(ent->client->buttons & BUTTON_ATTACK)) in Weapon_HyperBlaster_Fire()
1212 ent->client->ps.gunframe++; in Weapon_HyperBlaster_Fire()
1216 if (! ent->client->pers.inventory[ent->client->ammo_index] ) in Weapon_HyperBlaster_Fire()
1218 if (level.time >= ent->pain_debounce_time) in Weapon_HyperBlaster_Fire()
1220 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Weapon_HyperBlaster_Fire()
1221 ent->pain_debounce_time = level.time + 1; in Weapon_HyperBlaster_Fire()
1223 NoAmmoWeaponChange (ent); in Weapon_HyperBlaster_Fire()
1227 rotation = (ent->client->ps.gunframe - 5) * 2*M_PI/6; in Weapon_HyperBlaster_Fire()
1232 if ((ent->client->ps.gunframe == 6) || (ent->client->ps.gunframe == 9)) in Weapon_HyperBlaster_Fire()
1240 Blaster_Fire (ent, offset, damage, true, effect); in Weapon_HyperBlaster_Fire()
1243 ent->client->anim_priority = ANIM_ATTACK; in Weapon_HyperBlaster_Fire()
1244 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Weapon_HyperBlaster_Fire()
1246 ent->s.frame = FRAME_crattak1 - 1; in Weapon_HyperBlaster_Fire()
1247 ent->client->anim_end = FRAME_crattak9; in Weapon_HyperBlaster_Fire()
1251 ent->s.frame = FRAME_attack1 - 1; in Weapon_HyperBlaster_Fire()
1252 ent->client->anim_end = FRAME_attack8; in Weapon_HyperBlaster_Fire()
1258 ent->client->pers.inventory[ent->client->ammo_index]--; in Weapon_HyperBlaster_Fire()
1261 ent->client->ps.gunframe++; in Weapon_HyperBlaster_Fire()
1262 if (ent->client->ps.gunframe == 12 && ent->client->pers.inventory[ent->client->ammo_index]) in Weapon_HyperBlaster_Fire()
1263 ent->client->ps.gunframe = 6; in Weapon_HyperBlaster_Fire()
1266 if (ent->client->ps.gunframe == 12) in Weapon_HyperBlaster_Fire()
1268 gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/hyprbd1a.wav"), 1, ATTN_NORM, 0); in Weapon_HyperBlaster_Fire()
1269 ent->client->weapon_sound = 0; in Weapon_HyperBlaster_Fire()
1274 void Weapon_HyperBlaster (edict_t *ent) in Weapon_HyperBlaster() argument
1279 Weapon_Generic (ent, 5, 20, 49, 53, pause_frames, fire_frames, Weapon_HyperBlaster_Fire); in Weapon_HyperBlaster()
1283 Weapon_Generic (ent, 5, 20, 49, 53, pause_frames, fire_frames, Weapon_HyperBlaster_Fire); in Weapon_HyperBlaster()
1295 void Machinegun_Fire (edict_t *ent) in Machinegun_Fire() argument
1305 if (!(ent->client->buttons & BUTTON_ATTACK)) in Machinegun_Fire()
1307 ent->client->machinegun_shots = 0; in Machinegun_Fire()
1308 ent->client->ps.gunframe++; in Machinegun_Fire()
1312 if (ent->client->ps.gunframe == 5) in Machinegun_Fire()
1313 ent->client->ps.gunframe = 4; in Machinegun_Fire()
1315 ent->client->ps.gunframe = 5; in Machinegun_Fire()
1317 if (ent->client->pers.inventory[ent->client->ammo_index] < 1) in Machinegun_Fire()
1319 ent->client->ps.gunframe = 6; in Machinegun_Fire()
1320 if (level.time >= ent->pain_debounce_time) in Machinegun_Fire()
1322 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Machinegun_Fire()
1323 ent->pain_debounce_time = level.time + 1; in Machinegun_Fire()
1325 NoAmmoWeaponChange (ent); in Machinegun_Fire()
1337 ent->client->kick_origin[i] = crandom() * 0.35; in Machinegun_Fire()
1338 ent->client->kick_angles[i] = crandom() * 0.7; in Machinegun_Fire()
1340 ent->client->kick_origin[0] = crandom() * 0.35; in Machinegun_Fire()
1341 ent->client->kick_angles[0] = ent->client->machinegun_shots * -1.5; in Machinegun_Fire()
1346 ent->client->machinegun_shots++; in Machinegun_Fire()
1347 if (ent->client->machinegun_shots > 9) in Machinegun_Fire()
1348 ent->client->machinegun_shots = 9; in Machinegun_Fire()
1352 VectorAdd (ent->client->v_angle, ent->client->kick_angles, angles); in Machinegun_Fire()
1354 VectorSet(offset, 0, 8, ent->viewheight-8); in Machinegun_Fire()
1355 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in Machinegun_Fire()
1356 …fire_bullet (ent, start, forward, damage, kick, DEFAULT_BULLET_HSPREAD, DEFAULT_BULLET_VSPREAD, MO… in Machinegun_Fire()
1359 gi.WriteShort (ent-g_edicts); in Machinegun_Fire()
1361 gi.multicast (ent->s.origin, MULTICAST_PVS); in Machinegun_Fire()
1363 PlayerNoise(ent, start, PNOISE_WEAPON); in Machinegun_Fire()
1366 ent->client->pers.inventory[ent->client->ammo_index]--; in Machinegun_Fire()
1368 ent->client->anim_priority = ANIM_ATTACK; in Machinegun_Fire()
1369 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Machinegun_Fire()
1371 ent->s.frame = FRAME_crattak1 - (int) (random()+0.25); in Machinegun_Fire()
1372 ent->client->anim_end = FRAME_crattak9; in Machinegun_Fire()
1376 ent->s.frame = FRAME_attack1 - (int) (random()+0.25); in Machinegun_Fire()
1377 ent->client->anim_end = FRAME_attack8; in Machinegun_Fire()
1379 ent->client->weaponstate = WEAPON_READY; in Machinegun_Fire()
1382 void Weapon_Machinegun (edict_t *ent) in Weapon_Machinegun() argument
1387 Weapon_Generic (ent, 3, 5, 45, 49, pause_frames, fire_frames, Machinegun_Fire); in Weapon_Machinegun()
1391 Weapon_Generic (ent, 3, 5, 45, 49, pause_frames, fire_frames, Machinegun_Fire); in Weapon_Machinegun()
1394 void Chaingun_Fire (edict_t *ent) in Chaingun_Fire() argument
1410 if (ent->client->ps.gunframe == 5) in Chaingun_Fire()
1411 gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/chngnu1a.wav"), 1, ATTN_IDLE, 0); in Chaingun_Fire()
1413 if ((ent->client->ps.gunframe == 14) && !(ent->client->buttons & BUTTON_ATTACK)) in Chaingun_Fire()
1415 ent->client->ps.gunframe = 32; in Chaingun_Fire()
1416 ent->client->weapon_sound = 0; in Chaingun_Fire()
1419 else if ((ent->client->ps.gunframe == 21) && (ent->client->buttons & BUTTON_ATTACK) in Chaingun_Fire()
1420 && ent->client->pers.inventory[ent->client->ammo_index]) in Chaingun_Fire()
1422 ent->client->ps.gunframe = 15; in Chaingun_Fire()
1426 ent->client->ps.gunframe++; in Chaingun_Fire()
1429 if (ent->client->ps.gunframe == 22) in Chaingun_Fire()
1431 ent->client->weapon_sound = 0; in Chaingun_Fire()
1432 gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/chngnd1a.wav"), 1, ATTN_IDLE, 0); in Chaingun_Fire()
1436 ent->client->weapon_sound = gi.soundindex("weapons/chngnl1a.wav"); in Chaingun_Fire()
1439 if (ent->client->ps.gunframe <= 9) in Chaingun_Fire()
1441 else if (ent->client->ps.gunframe <= 14) in Chaingun_Fire()
1443 if (ent->client->buttons & BUTTON_ATTACK) in Chaingun_Fire()
1451 if (ent->client->pers.inventory[ent->client->ammo_index] < shots) in Chaingun_Fire()
1452 shots = ent->client->pers.inventory[ent->client->ammo_index]; in Chaingun_Fire()
1456 if (level.time >= ent->pain_debounce_time) in Chaingun_Fire()
1458 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Chaingun_Fire()
1459 ent->pain_debounce_time = level.time + 1; in Chaingun_Fire()
1461 NoAmmoWeaponChange (ent); in Chaingun_Fire()
1473 ent->client->kick_origin[i] = crandom() * 0.35; in Chaingun_Fire()
1474 ent->client->kick_angles[i] = crandom() * 0.7; in Chaingun_Fire()
1480 AngleVectors (ent->client->v_angle, forward, right, up); in Chaingun_Fire()
1483 VectorSet(offset, 0, r, u + ent->viewheight-8); in Chaingun_Fire()
1484 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in Chaingun_Fire()
1486 …fire_bullet (ent, start, forward, damage, kick, DEFAULT_BULLET_HSPREAD, DEFAULT_BULLET_VSPREAD, MO… in Chaingun_Fire()
1491 gi.WriteShort (ent-g_edicts); in Chaingun_Fire()
1493 gi.multicast (ent->s.origin, MULTICAST_PVS); in Chaingun_Fire()
1495 PlayerNoise(ent, start, PNOISE_WEAPON); in Chaingun_Fire()
1499 ent->client->anim_priority = ANIM_ATTACK; in Chaingun_Fire()
1500 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Chaingun_Fire()
1502 ent->s.frame = FRAME_crattak1 - 1 + (ent->client->ps.gunframe % 3); in Chaingun_Fire()
1503 ent->client->anim_end = FRAME_crattak9; in Chaingun_Fire()
1507 ent->s.frame = FRAME_attack1 - 1 + (ent->client->ps.gunframe % 3); in Chaingun_Fire()
1508 ent->client->anim_end = FRAME_attack8; in Chaingun_Fire()
1515 ent->client->pers.inventory[ent->client->ammo_index] -= shots; in Chaingun_Fire()
1518 void Gatringgun_Fire (edict_t *ent) in Gatringgun_Fire() argument
1534 if (ent->client->ps.gunframe == 5) in Gatringgun_Fire()
1535 gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/chngnu1a.wav"), 1, ATTN_IDLE, 0); in Gatringgun_Fire()
1537 if ((ent->client->ps.gunframe == 14) && !(ent->client->buttons & BUTTON_ATTACK)) in Gatringgun_Fire()
1539 ent->client->ps.gunframe = 32; in Gatringgun_Fire()
1540 ent->client->weapon_sound = 0; in Gatringgun_Fire()
1543 else if ((ent->client->ps.gunframe == 21) && (ent->client->buttons & BUTTON_ATTACK) in Gatringgun_Fire()
1544 && ent->client->pers.inventory[ent->client->ammo_index]) in Gatringgun_Fire()
1546 ent->client->ps.gunframe = 15; in Gatringgun_Fire()
1550 ent->client->ps.gunframe++; in Gatringgun_Fire()
1553 if (ent->client->ps.gunframe == 22) in Gatringgun_Fire()
1555 ent->client->weapon_sound = 0; in Gatringgun_Fire()
1556 gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/chngnd1a.wav"), 1, ATTN_IDLE, 0); in Gatringgun_Fire()
1560 ent->client->weapon_sound = gi.soundindex("weapons/chngnl1a.wav"); in Gatringgun_Fire()
1563 if (ent->client->ps.gunframe <= 9) in Gatringgun_Fire()
1565 else if (ent->client->ps.gunframe <= 14) in Gatringgun_Fire()
1567 if (ent->client->buttons & BUTTON_ATTACK) in Gatringgun_Fire()
1575 if (ent->client->pers.inventory[ent->client->ammo_index] < shots) in Gatringgun_Fire()
1576 shots = ent->client->pers.inventory[ent->client->ammo_index]; in Gatringgun_Fire()
1582 if (level.time >= ent->pain_debounce_time) in Gatringgun_Fire()
1584 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Gatringgun_Fire()
1585 ent->pain_debounce_time = level.time + 1; in Gatringgun_Fire()
1587 NoAmmoWeaponChange (ent); in Gatringgun_Fire()
1599 ent->client->kick_origin[i] = crandom() * 0.35; in Gatringgun_Fire()
1600 ent->client->kick_angles[i] = crandom() * 0.7; in Gatringgun_Fire()
1606 AngleVectors (ent->client->v_angle, forward, right, up); in Gatringgun_Fire()
1609 VectorSet(offset, 0, r, u + ent->viewheight-8); in Gatringgun_Fire()
1610 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in Gatringgun_Fire()
1612 …fire_bullet (ent, start, forward, damage, kick, DEFAULT_BULLET_HSPREAD, DEFAULT_BULLET_VSPREAD, MO… in Gatringgun_Fire()
1618 gi.sound (ent, CHAN_AUTO, gi.soundindex("3zb/gatgf.wav"), u, ATTN_NORM, 0); in Gatringgun_Fire()
1622 gi.WriteShort (ent-g_edicts); in Gatringgun_Fire()
1624 gi.multicast (ent->s.origin, MULTICAST_PVS); in Gatringgun_Fire()
1626 PlayerNoise(ent, start, PNOISE_WEAPON); in Gatringgun_Fire()
1630 ent->client->anim_priority = ANIM_ATTACK; in Gatringgun_Fire()
1631 if (ent->client->ps.pmove.pm_flags & PMF_DUCKED) in Gatringgun_Fire()
1633 ent->s.frame = FRAME_crattak1 - 1 + (ent->client->ps.gunframe % 3); in Gatringgun_Fire()
1634 ent->client->anim_end = FRAME_crattak9; in Gatringgun_Fire()
1638 ent->s.frame = FRAME_attack1 - 1 + (ent->client->ps.gunframe % 3); in Gatringgun_Fire()
1639 ent->client->anim_end = FRAME_attack8; in Gatringgun_Fire()
1646 ent->client->pers.inventory[ent->client->ammo_index] -= 1;//shots; in Gatringgun_Fire()
1649 void Weapon_Chaingun (edict_t *ent) in Weapon_Chaingun() argument
1654 if(0) Weapon_Generic (ent, 4, 31, 61, 64, pause_frames, fire_frames, Gatringgun_Fire); in Weapon_Chaingun()
1657 Weapon_Generic (ent, 4, 31, 61, 64, pause_frames, fire_frames, Chaingun_Fire); in Weapon_Chaingun()
1660 Weapon_Generic (ent, 4, 31, 61, 64, pause_frames, fire_frames, Chaingun_Fire); in Weapon_Chaingun()
1674 void weapon_shotgun_fire (edict_t *ent) in weapon_shotgun_fire() argument
1682 if (ent->client->ps.gunframe == 9) in weapon_shotgun_fire()
1684 ent->client->ps.gunframe++; in weapon_shotgun_fire()
1688 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_shotgun_fire()
1690 VectorScale (forward, -2, ent->client->kick_origin); in weapon_shotgun_fire()
1691 ent->client->kick_angles[0] = -2; in weapon_shotgun_fire()
1693 VectorSet(offset, 0, 8, ent->viewheight-8); in weapon_shotgun_fire()
1694 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_shotgun_fire()
1703 …fire_shotgun (ent, start, forward, damage, kick, 500, 500, DEFAULT_DEATHMATCH_SHOTGUN_COUNT, MOD_S… in weapon_shotgun_fire()
1705 fire_shotgun (ent, start, forward, damage, kick, 500, 500, DEFAULT_SHOTGUN_COUNT, MOD_SHOTGUN); in weapon_shotgun_fire()
1709 gi.WriteShort (ent-g_edicts); in weapon_shotgun_fire()
1711 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_shotgun_fire()
1713 ent->client->ps.gunframe++; in weapon_shotgun_fire()
1714 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_shotgun_fire()
1717 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_shotgun_fire()
1720 void Weapon_Shotgun (edict_t *ent) in Weapon_Shotgun() argument
1725 Weapon_Generic (ent, 7, 18, 36, 39, pause_frames, fire_frames, weapon_shotgun_fire); in Weapon_Shotgun()
1728 Weapon_Generic (ent, 7, 18, 36, 39, pause_frames, fire_frames, weapon_shotgun_fire); in Weapon_Shotgun()
1732 void weapon_supershotgun_fire (edict_t *ent) in weapon_supershotgun_fire() argument
1741 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_supershotgun_fire()
1743 VectorScale (forward, -2, ent->client->kick_origin); in weapon_supershotgun_fire()
1744 ent->client->kick_angles[0] = -2; in weapon_supershotgun_fire()
1746 VectorSet(offset, 0, 8, ent->viewheight-8); in weapon_supershotgun_fire()
1747 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_supershotgun_fire()
1755 v[PITCH] = ent->client->v_angle[PITCH]; in weapon_supershotgun_fire()
1756 v[YAW] = ent->client->v_angle[YAW] - 5; in weapon_supershotgun_fire()
1757 v[ROLL] = ent->client->v_angle[ROLL]; in weapon_supershotgun_fire()
1759 …fire_shotgun (ent, start, forward, damage, kick, DEFAULT_SHOTGUN_HSPREAD, DEFAULT_SHOTGUN_VSPREAD,… in weapon_supershotgun_fire()
1760 v[YAW] = ent->client->v_angle[YAW] + 5; in weapon_supershotgun_fire()
1762 …fire_shotgun (ent, start, forward, damage, kick, DEFAULT_SHOTGUN_HSPREAD, DEFAULT_SHOTGUN_VSPREAD,… in weapon_supershotgun_fire()
1766 gi.WriteShort (ent-g_edicts); in weapon_supershotgun_fire()
1768 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_supershotgun_fire()
1770 ent->client->ps.gunframe++; in weapon_supershotgun_fire()
1771 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_supershotgun_fire()
1774 ent->client->pers.inventory[ent->client->ammo_index] -= 2; in weapon_supershotgun_fire()
1777 void Weapon_SuperShotgun (edict_t *ent) in Weapon_SuperShotgun() argument
1782 Weapon_Generic (ent, 6, 17, 57, 61, pause_frames, fire_frames, weapon_supershotgun_fire); in Weapon_SuperShotgun()
1785 Weapon_Generic (ent, 6, 17, 57, 61, pause_frames, fire_frames, weapon_supershotgun_fire); in Weapon_SuperShotgun()
1799 void RSight_think(edict_t *ent) in RSight_think() argument
1807 if(ent->owner->client->ps.gunframe != 4 || ent->owner->deadflag) in RSight_think()
1809 G_FreeEdict(ent); in RSight_think()
1814 AngleVectors (ent->owner->client->v_angle, aim, NULL , NULL); in RSight_think()
1817 VectorCopy(ent->owner->s.origin,tmp); in RSight_think()
1818 if(ent->owner->maxs[2] >= 32) tmp[2] += 22; in RSight_think()
1821 rs_trace = gi.trace (tmp, min, max, aim,ent->owner, MASK_PLAYERSOLID); in RSight_think()
1822 VectorCopy(rs_trace.endpos,ent->s.origin); in RSight_think()
1823 ent->nextthink = level.time + FRAMETIME; in RSight_think()
1825 if(rs_trace.ent != NULL) in RSight_think()
1827 if(Q_stricmp (rs_trace.ent->classname, "player") == 0) return;//�I�[�g�Y�[���������� in RSight_think()
1830 if(ent->owner->client->zc.autozoom ) in RSight_think()
1832 VectorSubtract(ent->s.origin,ent->owner->s.origin,tmp); in RSight_think()
1835 if(f < 100) ent->owner->client->zc.distance = 90; in RSight_think()
1841 ent->owner->client->zc.distance = 90 - (f - 100) / 12;//30; in RSight_think()
1843 else ent->owner->client->zc.distance = 15; in RSight_think()
1845 if(ent->owner->client->ps.fov != ent->owner->client->zc.distance) in RSight_think()
1847 f = ent->owner->client->ps.fov - ent->owner->client->zc.distance; in RSight_think()
1849 gi.sound (ent->owner, CHAN_AUTO, gi.soundindex("3zb/zoom.wav"), 1, ATTN_NORM, 0); in RSight_think()
1851 ent->owner->client->ps.fov = ent->owner->client->zc.distance; in RSight_think()
1857 void weapon_railgun_fire (edict_t *ent) in weapon_railgun_fire() argument
1882 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_railgun_fire()
1884 VectorScale (forward, -3, ent->client->kick_origin); in weapon_railgun_fire()
1885 ent->client->kick_angles[0] = -3; in weapon_railgun_fire()
1887 VectorSet(offset, 0, 7, ent->viewheight-8); in weapon_railgun_fire()
1889 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_railgun_fire()
1891 if(ent->client->zc.aiming == 0) fire_rail (ent, start, forward, damage, kick); in weapon_railgun_fire()
1895 fire_sniperail (ent, start, forward, damage, kick); in weapon_railgun_fire()
1902 gi.WriteShort (ent-g_edicts); in weapon_railgun_fire()
1904 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_railgun_fire()
1906 ent->client->ps.gunframe++; in weapon_railgun_fire()
1907 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_railgun_fire()
1910 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_railgun_fire()
1913 ent->client->zc.aiming = 0; //�Y�[���s�� in weapon_railgun_fire()
1916 void Weapon_SnipeRailgun (edict_t *ent) in Weapon_SnipeRailgun() argument
1920 if (ent->client->buttons & BUTTON_ATTACK) in Weapon_SnipeRailgun()
1922 ent->client->zc.lockon = false; //�X�i�C�p�[�Ƀ��b�N�I���@�\�Ȃ� in Weapon_SnipeRailgun()
1923 if( ent->client->zc.aiming == 0) in Weapon_SnipeRailgun()
1931 sight->owner = ent; in Weapon_SnipeRailgun()
1938 if( ent->client->resp.ctf_team == CTF_TEAM2 && ctf->value) in Weapon_SnipeRailgun()
1944 gi.sound (ent, CHAN_WEAPON, gi.soundindex("weapons/sshotr1b.wav"), 1, ATTN_NONE, 0); in Weapon_SnipeRailgun()
1945 ent->client->zc.aiming = 1; in Weapon_SnipeRailgun()
1946 if(ent->client->zc.distance <10 || ent->client->zc.distance > 90) ent->client->zc.distance = 90; in Weapon_SnipeRailgun()
1947 ent->client->ps.fov = ent->client->zc.distance;//�Y�[���J�n in Weapon_SnipeRailgun()
1953 ent->client->zc.aiming = 2; in Weapon_SnipeRailgun()
1954 weapon_railgun_fire(ent); in Weapon_SnipeRailgun()
1957 void Weapon_Railgun (edict_t *ent) in Weapon_Railgun() argument
1962 if(!(ent->client->buttons & BUTTON_ATTACK)) ent->client->zc.aiming = 0; //�A�N�e�B�x�[�g0 in Weapon_Railgun()
1966 …Weapon_Generic (ent, 3, 18, 56, 61, pause_frames, fire_frames, Weapon_SnipeRailgun/*weapon_railgun… in Weapon_Railgun()
1970 Weapon_Generic (ent, 3, 18, 56, 61, pause_frames, fire_frames, weapon_railgun_fire); in Weapon_Railgun()
1973 Weapon_Generic (ent, 3, 18, 56, 61, pause_frames, fire_frames, weapon_railgun_fire); in Weapon_Railgun()
1986 void weapon_bfg_fire (edict_t *ent) in weapon_bfg_fire() argument
1998 if (ent->client->ps.gunframe == 9) in weapon_bfg_fire()
2002 gi.WriteShort (ent-g_edicts); in weapon_bfg_fire()
2004 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_bfg_fire()
2006 ent->client->ps.gunframe++; in weapon_bfg_fire()
2008 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_bfg_fire()
2014 if (ent->client->pers.inventory[ent->client->ammo_index] < 50) in weapon_bfg_fire()
2016 ent->client->ps.gunframe++; in weapon_bfg_fire()
2023 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_bfg_fire()
2025 VectorScale (forward, -2, ent->client->kick_origin); in weapon_bfg_fire()
2028 ent->client->v_dmg_pitch = -40; in weapon_bfg_fire()
2029 ent->client->v_dmg_roll = crandom()*8; in weapon_bfg_fire()
2030 ent->client->v_dmg_time = level.time + DAMAGE_TIME; in weapon_bfg_fire()
2032 VectorSet(offset, 8, 8, ent->viewheight-8); in weapon_bfg_fire()
2033 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_bfg_fire()
2034 fire_bfg (ent, start, forward, damage, 400, damage_radius); in weapon_bfg_fire()
2036 ent->client->ps.gunframe++; in weapon_bfg_fire()
2038 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_bfg_fire()
2041 ent->client->pers.inventory[ent->client->ammo_index] -= 50; in weapon_bfg_fire()
2044 void Weapon_BFG (edict_t *ent) in Weapon_BFG() argument
2049 Weapon_Generic (ent, 8, 32, 55, 58, pause_frames, fire_frames, weapon_bfg_fire); in Weapon_BFG()
2052 Weapon_Generic (ent, 8, 32, 55, 58, pause_frames, fire_frames, weapon_bfg_fire); in Weapon_BFG()
2062 void weapon_ionripper_fire (edict_t *ent) in weapon_ionripper_fire() argument
2089 VectorCopy (ent->client->v_angle, tempang); in weapon_ionripper_fire()
2094 VectorScale (forward, -3, ent->client->kick_origin); in weapon_ionripper_fire()
2095 ent->client->kick_angles[0] = -3; in weapon_ionripper_fire()
2098 VectorSet (offset, 16, 7, ent->viewheight - 8); in weapon_ionripper_fire()
2100 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_ionripper_fire()
2102 fire_ionripper (ent, start, forward, damage, 500, EF_IONRIPPER); in weapon_ionripper_fire()
2106 gi.WriteShort (ent - g_edicts); in weapon_ionripper_fire()
2108 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_ionripper_fire()
2110 ent->client->ps.gunframe++; in weapon_ionripper_fire()
2111 PlayerNoise (ent, start, PNOISE_WEAPON); in weapon_ionripper_fire()
2114 ent->client->pers.inventory[ent->client->ammo_index] -= ent->client->pers.weapon->quantity; in weapon_ionripper_fire()
2116 if (ent->client->pers.inventory[ent->client->ammo_index] < 0) in weapon_ionripper_fire()
2117 ent->client->pers.inventory[ent->client->ammo_index] = 0; in weapon_ionripper_fire()
2121 void Weapon_Ionripper (edict_t *ent) in Weapon_Ionripper() argument
2126 Weapon_Generic (ent, 4, 6, 36, 39, pause_frames, fire_frames, weapon_ionripper_fire); in Weapon_Ionripper()
2129 Weapon_Generic (ent, 4, 6, 36, 39, pause_frames, fire_frames, weapon_ionripper_fire); in Weapon_Ionripper()
2137 void weapon_phalanx_fire (edict_t *ent) in weapon_phalanx_fire() argument
2158 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_phalanx_fire()
2160 VectorScale (forward, -2, ent->client->kick_origin); in weapon_phalanx_fire()
2161 ent->client->kick_angles[0] = -2; in weapon_phalanx_fire()
2163 VectorSet(offset, 0, 8, ent->viewheight-8); in weapon_phalanx_fire()
2164 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_phalanx_fire()
2166 if (ent->client->ps.gunframe == 8) in weapon_phalanx_fire()
2168 v[PITCH] = ent->client->v_angle[PITCH]; in weapon_phalanx_fire()
2169 v[YAW] = ent->client->v_angle[YAW] - 1.5; in weapon_phalanx_fire()
2170 v[ROLL] = ent->client->v_angle[ROLL]; in weapon_phalanx_fire()
2176 fire_plasma (ent, start, forward, damage, 725, damage_radius, radius_damage); in weapon_phalanx_fire()
2179 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_phalanx_fire()
2183 v[PITCH] = ent->client->v_angle[PITCH]; in weapon_phalanx_fire()
2184 v[YAW] = ent->client->v_angle[YAW] + 1.5; in weapon_phalanx_fire()
2185 v[ROLL] = ent->client->v_angle[ROLL]; in weapon_phalanx_fire()
2187 fire_plasma (ent, start, forward, damage, 725, damage_radius, radius_damage); in weapon_phalanx_fire()
2191 gi.WriteShort (ent-g_edicts); in weapon_phalanx_fire()
2193 gi.multicast (ent->s.origin, MULTICAST_PVS); in weapon_phalanx_fire()
2195 PlayerNoise(ent, start, PNOISE_WEAPON); in weapon_phalanx_fire()
2198 ent->client->ps.gunframe++; in weapon_phalanx_fire()
2202 void Weapon_Phalanx (edict_t *ent) in Weapon_Phalanx() argument
2207 Weapon_Generic (ent, 5, 20, 58, 63, pause_frames, fire_frames, weapon_phalanx_fire); in Weapon_Phalanx()
2210 Weapon_Generic (ent, 5, 20, 58, 63, pause_frames, fire_frames, weapon_phalanx_fire); in Weapon_Phalanx()
2226 void weapon_trap_fire (edict_t *ent, qboolean held) in weapon_trap_fire() argument
2240 VectorSet(offset, 8, 8, ent->viewheight-8); in weapon_trap_fire()
2241 AngleVectors (ent->client->v_angle, forward, right, NULL); in weapon_trap_fire()
2242 P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); in weapon_trap_fire()
2244 timer = ent->client->grenade_time - level.time; in weapon_trap_fire()
2247 fire_trap (ent, start, forward, damage, speed, timer, radius, held); in weapon_trap_fire()
2252 ent->client->pers.inventory[ent->client->ammo_index]--; in weapon_trap_fire()
2254 ent->client->grenade_time = level.time + 1.0; in weapon_trap_fire()
2257 void Weapon_Trap (edict_t *ent) in Weapon_Trap() argument
2259 if ((ent->client->newweapon) && (ent->client->weaponstate == WEAPON_READY)) in Weapon_Trap()
2261 ChangeWeapon (ent); in Weapon_Trap()
2265 if (ent->client->weaponstate == WEAPON_ACTIVATING) in Weapon_Trap()
2267 ent->client->weaponstate = WEAPON_READY; in Weapon_Trap()
2268 ent->client->ps.gunframe = 16; in Weapon_Trap()
2272 if (ent->client->weaponstate == WEAPON_READY) in Weapon_Trap()
2274 if ( ((ent->client->latched_buttons|ent->client->buttons) & BUTTON_ATTACK) ) in Weapon_Trap()
2276 ent->client->latched_buttons &= ~BUTTON_ATTACK; in Weapon_Trap()
2277 if (ent->client->pers.inventory[ent->client->ammo_index]) in Weapon_Trap()
2279 ent->client->ps.gunframe = 1; in Weapon_Trap()
2280 ent->client->weaponstate = WEAPON_FIRING; in Weapon_Trap()
2281 ent->client->grenade_time = 0; in Weapon_Trap()
2285 if (level.time >= ent->pain_debounce_time) in Weapon_Trap()
2287 gi.sound(ent, CHAN_VOICE, gi.soundindex("weapons/noammo.wav"), 1, ATTN_NORM, 0); in Weapon_Trap()
2288 ent->pain_debounce_time = level.time + 1; in Weapon_Trap()
2290 NoAmmoWeaponChange (ent); in Weapon_Trap()
2295 …if ((ent->client->ps.gunframe == 29) || (ent->client->ps.gunframe == 34) || (ent->client->ps.gunfr… in Weapon_Trap()
2301 if (++ent->client->ps.gunframe > 48) in Weapon_Trap()
2302 ent->client->ps.gunframe = 16; in Weapon_Trap()
2306 if (ent->client->weaponstate == WEAPON_FIRING) in Weapon_Trap()
2308 if (ent->client->ps.gunframe == 5) in Weapon_Trap()
2311 gi.sound(ent, CHAN_WEAPON, gi.soundindex("weapons/trapcock.wav"), 1, ATTN_NORM, 0); in Weapon_Trap()
2314 if (ent->client->ps.gunframe == 11) in Weapon_Trap()
2316 if (!ent->client->grenade_time) in Weapon_Trap()
2318 ent->client->grenade_time = level.time + GRENADE_TIMER + 0.2; in Weapon_Trap()
2320 ent->client->weapon_sound = gi.soundindex("weapons/traploop.wav"); in Weapon_Trap()
2325 if (!ent->client->grenade_blew_up && level.time >= ent->client->grenade_time) in Weapon_Trap()
2327 ent->client->weapon_sound = 0; in Weapon_Trap()
2328 weapon_trap_fire (ent, true); in Weapon_Trap()
2329 ent->client->grenade_blew_up = true; in Weapon_Trap()
2332 if (ent->client->buttons & BUTTON_ATTACK) in Weapon_Trap()
2335 if (ent->client->grenade_blew_up) in Weapon_Trap()
2337 if (level.time >= ent->client->grenade_time) in Weapon_Trap()
2339 ent->client->ps.gunframe = 15; in Weapon_Trap()
2340 ent->client->grenade_blew_up = false; in Weapon_Trap()
2349 if (ent->client->ps.gunframe == 12) in Weapon_Trap()
2351 ent->client->weapon_sound = 0; in Weapon_Trap()
2352 weapon_trap_fire (ent, false); in Weapon_Trap()
2353 if (ent->client->pers.inventory[ent->client->ammo_index] == 0) in Weapon_Trap()
2354 NoAmmoWeaponChange (ent); in Weapon_Trap()
2357 if ((ent->client->ps.gunframe == 15) && (level.time < ent->client->grenade_time)) in Weapon_Trap()
2360 ent->client->ps.gunframe++; in Weapon_Trap()
2362 if (ent->client->ps.gunframe == 16) in Weapon_Trap()
2364 ent->client->grenade_time = 0; in Weapon_Trap()
2365 ent->client->weaponstate = WEAPON_READY; in Weapon_Trap()