5 void() nex_deselect_01;
10 if (self.ammo_cells > 0)
15 void(float req) w_nex =
19 else if (req == WR_FIRE1)
20 weapon_prepareattack(nex_check, nex_check, nex_fire1_01, 1);
21 else if (req == WR_FIRE2)
22 weapon_prepareattack(nex_check, nex_check, nex_fire2_01, 1);
23 else if (req == WR_FIRE3)
24 weapon_prepareattack(nex_check, nex_check, nex_fire3_01, 1);
25 else if (req == WR_RAISE)
27 else if (req == WR_UPDATECOUNTS)
28 self.currentammo = self.ammo_cells;
29 else if (req == WR_DROP)
31 else if (req == WR_SETUP)
32 weapon_setup(WEP_NEX, "w_nex.zym", IT_CELLS);
33 else if (req == WR_CHECKAMMO)
34 weapon_hasammo = nex_check();
38 void W_Nex_Attack (void)
44 sound (self, CHAN_WEAPON, "weapons/nexfire.wav", 1, ATTN_NORM);
45 self.punchangle_x = -4;
46 makevectors(self.v_angle);
47 org = self.origin + self.view_ofs + v_forward * 18 + v_right * 8 + v_up * -5;
50 if (game & GAME_INSTAGIB)
51 FireRailgunBullet (org, self.origin + self.view_ofs + v_forward * 4096, 800, IT_NEX);
53 FireRailgunBullet (org, self.origin + self.view_ofs + v_forward * 4096, 100, IT_NEX);
55 te_plasmaburn (trace_endpos);
57 if (trace_fraction < 1.0)
59 dir = trace_plane_normal * 100;
60 WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
61 WriteByte (MSG_BROADCAST, TE_FLAMEJET);
62 WriteCoord (MSG_BROADCAST, trace_endpos_x);
63 WriteCoord (MSG_BROADCAST, trace_endpos_y);
64 WriteCoord (MSG_BROADCAST, trace_endpos_z);
65 WriteCoord (MSG_BROADCAST, dir_x);
66 WriteCoord (MSG_BROADCAST, dir_y);
67 WriteCoord (MSG_BROADCAST, dir_z);
68 WriteByte (MSG_BROADCAST, 255);
71 setorigin (explosion, trace_endpos);
72 RadiusDamage (explosion, self, 10, 0, 50, world, 300, IT_ROCKET_LAUNCHER);
75 PointSound (trace_endpos, "weapons/neximpact.wav", 1, ATTN_NORM);
78 self.attack_finished = time + 1;
80 if (!(game & GAME_INSTAGIB))
81 self.ammo_cells = self.ammo_cells - 1;
84 void W_Nex_Attack2 (void)
86 makevectors(self.v_angle);
90 void() nex_ready_01 = {weapon_thinkf(WFRAME_IDLE, 0.1, nex_ready_01); self.weaponentity.state = WS_READY;};
91 void() nex_select_01 = {weapon_thinkf(-1, 0.3, w_ready); weapon_boblayer1(16, '0 0 0');};
92 void() nex_deselect_01 = {weapon_thinkf(-1, 0.3, w_clear); weapon_boblayer1(16, '0 20 -40');};
95 weapon_doattack(nex_check, nex_check, W_Nex_Attack);
96 weapon_thinkf(WFRAME_FIRE1, 0.3, nex_ready_01);
100 weapon_doattack(nex_check, nex_check, W_Nex_Attack);
101 weapon_thinkf(WFRAME_FIRE2, 0.5, nex_ready_01);
103 void() nex_fire3_01 =
105 weapon_doattack(nex_check, nex_check, W_Nex_Attack);
106 weapon_thinkf(WFRAME_FIRE2, 0.5, nex_ready_01);