]> icculus.org git repositories - divverent/nexuiz.git/blob - TeamNexuiz/game/gamec/tf_w_mac10.c
now menu qc respects g_campaign_name
[divverent/nexuiz.git] / TeamNexuiz / game / gamec / tf_w_mac10.c
1 void() mac_ready_01;\r
2 void() mac_fire1_01;\r
3 void() mac_deselect_01;\r
4 void() mac_select_01;\r
5 void() mac_fire2_01;\r
6 \r
7 float() mac_check =\r
8 {\r
9         if (self.ammo_nails >= 1)\r
10                 return TRUE;\r
11         return FALSE;\r
12 };\r
13 \r
14 void(float req) w_mac =\r
15 {\r
16         if (req == WR_IDLE)\r
17                 mac_ready_01();\r
18         else if (req == WR_FIRE1)\r
19                 weapon_prepareattack(mac_check, mac_check, mac_fire1_01, cvar("g_balance_mac_refire"));\r
20         else if (req == WR_FIRE2)\r
21                 weapon_prepareattack(mac_check, mac_check, mac_fire2_01, cvar("g_balance_mac_refire2"));\r
22         else if (req == WR_RAISE)\r
23                 mac_select_01();\r
24         else if (req == WR_UPDATECOUNTS)\r
25                 self.currentammo = self.ammo_nails;\r
26         else if (req == WR_DROP)\r
27                 mac_deselect_01();\r
28         else if (req == WR_SETUP)\r
29                 weapon_setup(WEP_MAC, "w_mac.zym", IT_NAILS);\r
30         else if (req == WR_CHECKAMMO)\r
31                 weapon_hasammo = mac_check();\r
32 };\r
33 \r
34 .float mac_bulletcounter;\r
35 void W_Mac_Attack (void)\r
36 {\r
37         local vector org;\r
38         entity flash;\r
39         local vector end;\r
40 \r
41         local vector trueaim;\r
42         \r
43         org = self.origin + self.view_ofs;\r
44         end = self.origin + self.view_ofs + v_forward * 4096;\r
45         traceline(org,end,TRUE,self);\r
46         \r
47         trueaim = trace_endpos;\r
48 \r
49         sound (self, CHAN_WEAPON, "weapons/mac_fire.wav", 1, ATTN_NORM);\r
50         if (cvar("g_use_ammunition"))\r
51                 self.ammo_nails = self.ammo_nails - 1;\r
52         self.punchangle_x = random () - 0.5;\r
53         self.punchangle_y = random () - 0.5;\r
54         org = self.origin + self.view_ofs + (v_right * 6) - (v_up * 8) + (v_forward * 15);\r
55 \r
56         // this attack_finished just enforces a cooldown at the end of a burst\r
57         self.attack_finished = time + cvar("g_balance_mac_refire2");\r
58 \r
59         if (self.mac_bulletcounter == 1)\r
60                 fireBullet (org, normalize(trueaim - org), cvar("g_balance_mac_spread2"), cvar("g_balance_mac_damage2"), WEP_MAC, (self.mac_bulletcounter & 3) == 0);\r
61         else\r
62                 fireBullet (org, normalize(trueaim - org), cvar("g_balance_mac_spread"), cvar("g_balance_mac_damage"), WEP_MAC, (self.mac_bulletcounter & 3) == 0);\r
63 \r
64         // casing code\r
65         if (cvar("g_casings") >= 2)\r
66         {\r
67                 org = self.origin + self.view_ofs + (v_right * 6) - (v_up * 8) + (v_forward * 10);\r
68                 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);\r
69         }\r
70 \r
71         flash = spawn ();\r
72         org = self.origin + self.view_ofs + (v_right * 12) - (v_up * 9) + (v_forward * 40);\r
73         setorigin (flash, org);\r
74         setmodel (flash, "models/uziflash.md3");        //temp use mac flash\r
75         flash.velocity = v_forward * 20;\r
76         flash.angles = vectoangles (flash.velocity);\r
77         flash.angles_z=flash.v_angle_z + random () * 180; \r
78         flash.scale = 0.75;\r
79         flash.alpha = 0.5;\r
80         SUB_SetFade (flash, time, 0.2);\r
81         flash.effects = flash.effects | EF_ADDITIVE | EF_FULLBRIGHT;\r
82 }\r
83 \r
84 // weapon frames\r
85 void()  mac_ready_01 =  {weapon_thinkf(WFRAME_IDLE, 0.1, mac_ready_01); self.weaponentity.state = WS_READY;};\r
86 void()  mac_select_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_ready); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, '0 0 0');};\r
87 void()  mac_deselect_01 =       {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_clear); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, PLAYER_WEAPONSELECTION_RANGE);};\r
88 void()  mac_fire1_01 =\r
89 {\r
90         if (self.button0)\r
91         {\r
92                 self.mac_bulletcounter = self.mac_bulletcounter + 1;\r
93                 weapon_doattack(mac_check, mac_check, W_Mac_Attack);\r
94                 weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_mac_refire"), mac_fire1_01);\r
95         }\r
96         else\r
97                 weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_mac_refire"), mac_ready_01);\r
98 };\r
99 \r
100 void()  mac_fire2_03 =\r
101 {\r
102         self.mac_bulletcounter = 1;\r
103         weapon_doattack(mac_check, mac_check, W_Mac_Attack);\r
104         weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_mac_refire"), mac_fire1_01);\r
105 };\r
106 \r
107 void()  mac_fire2_02 =\r
108 {\r
109         self.mac_bulletcounter = 1;\r
110         weapon_doattack(mac_check, mac_check, W_Mac_Attack);\r
111         weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_mac_refire"), mac_fire2_03);\r
112 };\r
113 \r
114 void()  mac_fire2_01 =\r
115 {\r
116         self.mac_bulletcounter = 1;\r
117         weapon_doattack(mac_check, mac_check, W_Mac_Attack);\r
118         weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_mac_refire"), mac_fire2_02);\r
119 };