1 void() crylink_ready_01;
\r
2 void() crylink_fire1_01;
\r
3 void() crylink_deselect_01;
\r
4 void() crylink_select_01;
\r
8 float() crylink_check =
\r
10 if (self.ammo_cells >= 1)
\r
15 void(float req) w_crylink =
\r
19 else if (req == WR_FIRE1 || req == WR_FIRE2)
\r
20 weapon_prepareattack(crylink_check, crylink_check, crylink_fire1_01, cvar("g_balance_crylink_refire"));
\r
21 else if (req == WR_RAISE)
\r
22 crylink_select_01();
\r
23 else if (req == WR_UPDATECOUNTS)
\r
24 self.currentammo = self.ammo_cells;
\r
25 else if (req == WR_DROP)
\r
26 crylink_deselect_01();
\r
27 else if (req == WR_SETUP)
\r
28 weapon_setup(WEP_CRYLINK, "w_crylink.zym", IT_CELLS);
\r
29 else if (req == WR_CHECKAMMO)
\r
30 weapon_hasammo = crylink_check();
\r
34 void W_Crylink_Touch (void)
\r
36 self.event_damage = SUB_Null;
\r
37 //te_smallflash(self.origin);
\r
38 RadiusDamage (self, self.owner, cvar("g_balance_crylink_damage"), cvar("g_balance_crylink_edgedamage"), cvar("g_balance_crylink_radius"), world, cvar("g_balance_crylink_force"), WEP_CRYLINK);
\r
39 self.touch = SUB_Null;
\r
40 setmodel (self, "models/plasma.mdl");
\r
41 setsize (self, '0 0 0', '0 0 0');
\r
44 self.glow_color = 0;
\r
45 self.think = SUB_Remove;
\r
46 //self.movetype = MOVETYPE_NONE;
\r
47 self.effects = EF_LOWPRECISION;
\r
48 SUB_SetFade(self, time, 1);
\r
52 void W_Crylink_Attack (void)
\r
54 local float counter;
\r
58 sound (self, CHAN_WEAPON, "weapons/crylink.wav", 1, ATTN_NORM);
\r
59 self.ammo_cells = self.ammo_cells - 1;
\r
60 self.punchangle_x = -2;
\r
61 org = self.origin + self.view_ofs + v_forward * 10 + v_right * 5 + v_up * -14;
\r
68 proj.classname = "spike";
\r
70 proj.movetype = MOVETYPE_BOUNCE;
\r
71 proj.solid = SOLID_BBOX;
\r
72 proj.gravity = 0.001;
\r
74 setmodel (proj, "models/plasmatrail.mdl");
\r
75 setsize (proj, '0 0 0', '0 0 0');
\r
76 setorigin (proj, org);
\r
79 proj.velocity = (v_forward + (counter / 2 - 1) * v_right * cvar("g_balance_crylink_spread")) * cvar("g_balance_crylink_speed");
\r
81 proj.velocity = (v_forward + (counter / 5) * randomvec() * cvar("g_balance_crylink_spread")) * cvar("g_balance_crylink_speed");
\r
82 proj.touch = W_Crylink_Touch;
\r
83 proj.think = SUB_Remove;
\r
84 proj.nextthink = time + 9;
\r
86 proj.angles = vectoangles (proj.velocity);
\r
88 //proj.glow_size = 20;
\r
90 proj.effects = proj.effects | EF_FULLBRIGHT;
\r
91 //proj.effects = proj.effects | EF_ADDITIVE;
\r
92 proj.effects = proj.effects | EF_LOWPRECISION;
\r
93 counter = counter + 1;
\r
96 self.clip_crylink -= 1;
\r
97 if (self.clip_crylink <= 0)
\r
99 DoReload (2, CLIP_MAX_CRYLINK); // Crylink is weapon 2, reloads for max clip of weapon.
\r
105 void() crylink_ready_01 = {weapon_thinkf(WFRAME_IDLE, 0.1, crylink_ready_01); self.weaponentity.state = WS_READY;};
\r
106 void() crylink_select_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_ready); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, '0 0 0');};
\r
107 void() crylink_deselect_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_clear); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, PLAYER_WEAPONSELECTION_RANGE);};
\r
108 void() crylink_fire1_01 =
\r
110 weapon_doattack(crylink_check, crylink_check, W_Crylink_Attack);
\r
111 weapon_thinkf(WFRAME_FIRE1, 0.15, crylink_ready_01);
\r