1 void() shotgun_ready_01;
2 void() shotgun_fire1_01;
3 void() shotgun_fire2_01;
4 void() shotgun_deselect_01;
5 void() shotgun_select_01;
7 float() shotgun_check =
9 if (self.ammo_shells >= 1)
14 void(float req) w_shotgun =
18 else if (req == WR_FIRE1)
19 weapon_prepareattack(shotgun_check, shotgun_check, shotgun_fire1_01, 0.7);
20 else if (req == WR_FIRE2)
21 weapon_prepareattack(shotgun_check, shotgun_check, shotgun_fire2_01, 0.7);
22 else if (req == WR_RAISE)
24 else if (req == WR_UPDATECOUNTS)
25 self.currentammo = self.ammo_shells;
26 else if (req == WR_DROP)
27 shotgun_deselect_01();
28 else if (req == WR_SETUP)
29 weapon_setup(WEP_SHOTGUN, "w_shotgun.zym", IT_SHELLS);
30 else if (req == WR_CHECKAMMO)
31 weapon_hasammo = shotgun_check();
34 void W_Shotgun_Attack (void)
39 makevectors(self.v_angle);
40 sound (self, CHAN_WEAPON, "weapons/shotgun_fire.wav", 1, ATTN_NORM);
43 for (sc = bullets; sc > 0; sc = sc - 1)
44 fireBullet (self.origin + self.view_ofs, v_forward, 0.1, 3.5, IT_SHOTGUN);
45 self.ammo_shells = self.ammo_shells - 1;
46 self.attack_finished = time + 0.7;
48 vector org; // casing code
49 org = self.origin + self.view_ofs + (v_right * 6) - (v_up * 4) + (v_forward * 15);
50 SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 + 10) * v_up), 2, v_forward,'0 250 0', 100, 1);
51 org = self.origin + self.view_ofs + (v_right * 6) - (v_up * 4) + (v_forward * 20);
52 W_Smoke(org, v_forward, 12);
56 void W_Shotgun_Attack2 (void)
62 makevectors(self.v_angle);
63 sound (self, CHAN_WEAPON, "weapons/shotgun_fire.wav", 1, ATTN_NORM);
64 bullets = cvar("g_balance_shotgun_bullets");
65 d = cvar("g_balance_shotgun_damage");
67 for (sc = bullets; sc > 0; sc = sc - 1)
68 fireBullet (self.origin + self.view_ofs, v_forward, 0.1, d, IT_SHOTGUN);
69 self.ammo_shells = self.ammo_shells - 1;
70 self.attack_finished = time + 1.4;
72 self.punchangle_x = -5;
74 vector org; // casing code
75 org = self.origin + self.view_ofs + (v_right * 6) - (v_up * 4) + (v_forward * 15);
76 SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 + 10) * v_up), 2, v_forward,'0 250 0', 100, 1);
77 org = self.origin + self.view_ofs + (v_right * 6) - (v_up * 4) + (v_forward * 20);
78 W_Smoke(org, v_forward, 12);
83 void() shotgun_ready_01 = {weapon_thinkf(WFRAME_IDLE, 0.1, shotgun_ready_01); self.weaponentity.state = WS_READY;};
84 void() shotgun_select_01 = {weapon_thinkf(-1, PLAYER_WEAPONSELECTION_DELAY, w_ready); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, '0 0 0');};
85 void() shotgun_deselect_01 = {weapon_thinkf(-1, PLAYER_WEAPONSELECTION_DELAY, w_clear); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, PLAYER_WEAPONSELECTION_RANGE);};
86 void() shotgun_fire1_01 =
88 weapon_doattack(shotgun_check, shotgun_check, W_Shotgun_Attack);
89 weapon_thinkf(WFRAME_FIRE1, 0.3, shotgun_ready_01);
91 void() shotgun_fire2_03 =
93 weapon_doattack(shotgun_check, shotgun_check, W_Shotgun_Attack2);
94 weapon_thinkf(WFRAME_FIRE1, 0.9, shotgun_ready_01);
96 void() shotgun_fire2_02 =
98 weapon_doattack(shotgun_check, shotgun_check, W_Shotgun_Attack2);
99 weapon_thinkf(WFRAME_FIRE1, 0.2, shotgun_fire2_03);
101 void() shotgun_fire2_01 =
103 weapon_doattack(shotgun_check, shotgun_check, W_Shotgun_Attack2);
104 weapon_thinkf(WFRAME_FIRE1, 0.2, shotgun_fire2_02);