]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/gamec/w_nex.c
changed weapons/ammo cheat to give 999 ammo
[divverent/nexuiz.git] / qcsrc / gamec / w_nex.c
1 void() nex_ready_01;
2 void() nex_fire1_01;
3 void() nex_fire2_01;
4 void() nex_deselect_01;
5 void() nex_select_01;
6
7 float() nex_check =
8 {
9         if (self.ammo_cells >= 5)
10                 return TRUE;
11         return FALSE;
12 };
13
14 void(float req) w_nex =
15 {
16         if (req == WR_IDLE)
17                 nex_ready_01();
18         else if (req == WR_FIRE1)
19                 weapon_prepareattack(nex_check, nex_check, nex_fire1_01, 1);
20         else if (req == WR_FIRE2)
21                 weapon_prepareattack(nex_check, nex_check, nex_fire2_01, 1);
22         else if (req == WR_RAISE)
23                 nex_select_01();
24         else if (req == WR_UPDATECOUNTS)
25                 self.currentammo = self.ammo_cells;
26         else if (req == WR_DROP)
27                 nex_deselect_01();
28         else if (req == WR_SETUP)
29                 weapon_setup(WEP_NEX, "w_nex.zym", IT_CELLS);
30         else if (req == WR_CHECKAMMO)
31                 weapon_hasammo = nex_check();
32 };
33
34
35 void W_Nex_Attack (void)
36 {
37         vector  org;
38         vector  dir;
39         vector end;
40         entity  explosion;
41
42         sound (self, CHAN_WEAPON, "weapons/nexfire.wav", 1, ATTN_NORM);
43         self.punchangle_x = -4;
44         makevectors(self.v_angle);
45         org = self.origin + self.view_ofs + v_forward * 5 + v_right * 14 + v_up * -7;
46
47         FireRailgunBullet (org, self.origin + self.view_ofs + v_forward * 4096, cvar("g_balance_nex_damage"), IT_NEX);
48
49
50         org = self.origin + self.view_ofs + v_forward * 28 + v_right * 14 + v_up * -7;
51         end = self.origin + self.view_ofs + v_forward * 4096;
52         te_smallflash(org);
53                 // beam effect
54         WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
55         WriteByte (MSG_BROADCAST, 76);
56         WriteCoord (MSG_BROADCAST, org_x);
57         WriteCoord (MSG_BROADCAST, org_y);
58         WriteCoord (MSG_BROADCAST, org_z);
59         WriteCoord (MSG_BROADCAST, end_x);
60         WriteCoord (MSG_BROADCAST, end_y);
61         WriteCoord (MSG_BROADCAST, end_z);
62         WriteCoord (MSG_BROADCAST, 0);
63         WriteCoord (MSG_BROADCAST, 0);
64         WriteCoord (MSG_BROADCAST, 0);
65
66         self.attack_finished = time + 1;
67
68         if (cvar("g_instagib") == 0)
69                 self.ammo_cells = self.ammo_cells - 5;
70
71         entity  flash;
72         flash = spawn ();
73         //flash.drawonlytoclient;
74         org = self.origin + self.view_ofs + v_forward * 33 + v_right * 14 + v_up * -7;
75         setorigin (flash, org);
76         setmodel (flash, "models/nexflash.md3");
77         flash.velocity = v_forward * 20;
78         flash.angles = vectoangles (flash.velocity);
79         SUB_SetFade (flash, time);
80         flash.effects = flash.effects | EF_ADDITIVE;
81 }
82
83 void W_Nex_Attack2 (void)
84 {
85         makevectors(self.v_angle);
86 }
87
88 // weapon frames
89 void()  nex_ready_01 =  {weapon_thinkf(WFRAME_IDLE, 0.1, nex_ready_01); self.weaponentity.state = WS_READY;};
90 void()  nex_select_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_ready); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, '0 0 0');};
91 void()  nex_deselect_01 =       {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_clear); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, PLAYER_WEAPONSELECTION_RANGE);};
92 void()  nex_fire1_01 =
93 {
94         weapon_doattack(nex_check, nex_check, W_Nex_Attack);
95         weapon_thinkf(WFRAME_FIRE1, 0.3, nex_ready_01);
96 };
97 void()  nex_fire2_01 =
98 {
99         weapon_doattack(nex_check, nex_check, W_Nex_Attack);
100         weapon_thinkf(WFRAME_FIRE2, 0.5, nex_ready_01);
101 };
102