]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/gamec/w_uzi.c
Updating
[divverent/nexuiz.git] / qcsrc / gamec / w_uzi.c
1 void() uzi_ready_01;
2 void() uzi_fire1_01;
3 void() uzi_fire2_01;
4 void() uzi_fire3_01;
5 void() uzi_deselect_01;
6 void() uzi_select_01;
7
8 float() uzi_check = 
9 {
10         if (self.ammo_nails > 0)
11                 return TRUE;
12         return FALSE;
13 };
14
15 void(float req) w_uzi =
16 {
17         if (req == WR_IDLE)
18                 uzi_ready_01();
19         else if (req == WR_FIRE1)
20                 weapon_prepareattack(uzi_check, uzi_check, uzi_fire1_01, 0.075);
21         else if (req == WR_FIRE2)
22                 weapon_prepareattack(uzi_check, uzi_check, uzi_fire2_01, 0.4);
23         else if (req == WR_FIRE3)
24                 weapon_prepareattack(uzi_check, uzi_check, uzi_fire3_01, 0.16);
25         else if (req == WR_RAISE)
26                 uzi_select_01();
27         else if (req == WR_UPDATECOUNTS)
28                 self.currentammo = self.ammo_nails;
29         else if (req == WR_DROP)
30                 uzi_deselect_01();
31         else if (req == WR_SETUP)
32                 weapon_setup(WEP_UZI, "w_uzi.zym", IT_SHELLS);
33         else if (req == WR_CHECKAMMO)
34                 weapon_hasammo = uzi_check();
35 };               
36
37 void W_Uzi_Attack (void)
38 {
39         makevectors(self.v_angle);
40         sound (self, CHAN_WEAPON, "weapons/uzi_fire.wav", 1, ATTN_NORM);
41
42         fireBullet (v_forward, 100, 8, IT_UZI);
43
44         self.punchangle_x = random () - 0.5;
45         self.punchangle_y = random () - 0.5;
46         self.punchangle_z = random () - 0.5;
47
48         self.attack_finished = time + 0.075;
49         self.ammo_nails = self.ammo_nails - 1;
50
51         vector  org; // casing code
52         org = self.origin + self.view_ofs + (v_right * 6) - (v_up * 1) + (v_forward * 20);
53         SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 + 10) * v_up), 2, v_forward,'0 250 0', 100, 2);
54         //W_Smoke(org, v_forward, 12);
55 }
56
57 void W_Uzi_Attack2 (void)
58 {
59         float   sc;
60         float   bullets;
61
62         makevectors(self.v_angle);
63         sound (self, CHAN_WEAPON, "weapons/shotgun_fire.wav", 1, ATTN_NORM);
64
65         bullets = 5;
66         if (bullets > self.ammo_nails)
67                 bullets = self.ammo_nails;
68
69         sound (self, CHAN_WEAPON, "weapons/uzi_fire_secondary.wav", 1, ATTN_NORM);
70
71         for (sc = bullets; sc > 0; sc = sc - 1)
72                 fireBullet (v_forward, 400, 10, IT_SHOTGUN);
73
74         self.punchangle_x = -1.5;
75
76         self.ammo_nails = self.ammo_nails - bullets;
77         self.attack_finished = time + 0.4;
78
79         vector  org; // casing code
80         org = self.origin + self.view_ofs + (v_right * 6) - (v_up * 4) + (v_forward * 15);
81         SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 + 10) * v_up), 2, v_forward,'0 250 0', 100, 3);
82 }
83
84 void W_Uzi_Attack3 (void)
85 {
86         makevectors(self.v_angle);
87         sound (self, CHAN_WEAPON, "weapons/uzi_fire.wav", 1, ATTN_NORM);
88
89         fireBullet (v_forward, 0, 10, IT_UZI);
90
91         self.attack_finished = time + 0.16;
92         self.ammo_nails = self.ammo_nails - 1;
93
94         vector  org; // casing code
95         org = self.origin + self.view_ofs + (v_right * 6) - (v_up * 1) + (v_forward * 20);
96         SpawnCasing (org, ((random () * 50 + 50) * v_right) - ((random () * 25 + 25) * v_forward) - ((random () * 5 + 10) * v_up), 2, v_forward,'0 250 0', 100, 2);
97 }
98 // weapon frames 
99
100 void()  uzi_ready_01 =  {weapon_thinkf(WFRAME_IDLE, 0.1, uzi_ready_01); self.weaponentity.state = WS_READY;};
101 void()  uzi_select_01 = {weapon_thinkf(-1, 0.3, w_ready); weapon_boblayer1(16, '0 0 0');};
102 void()  uzi_deselect_01 =       {weapon_thinkf(-1, 0.3, w_clear); weapon_boblayer1(16, '0 20 -40');};
103 void()  uzi_fire1_01 =  
104 {
105         weapon_doattack(uzi_check, uzi_check, W_Uzi_Attack);
106         if (self.button0)
107                 weapon_thinkf(WFRAME_FIRE1, 0.075, uzi_fire1_01);
108         else
109                 weapon_thinkf(WFRAME_FIRE1, 0.075, uzi_ready_01);
110 };
111 void()  uzi_fire2_01 =  
112 {
113         weapon_doattack(uzi_check, uzi_check, W_Uzi_Attack2);
114         weapon_thinkf(WFRAME_FIRE2, 0.4, uzi_ready_01);
115 };
116 void()  uzi_fire3_01 =  
117 {
118         weapon_doattack(uzi_check, uzi_check, W_Uzi_Attack3);
119         if (self.button0)
120                 weapon_thinkf(WFRAME_FIRE2, 0.16, uzi_fire3_01);
121         else
122                 weapon_thinkf(WFRAME_FIRE2, 0.1, uzi_ready_01);
123 };