1 void() crylink_ready_01;
2 void() crylink_fire1_01;
3 void() crylink_fire2_01;
4 void() crylink_deselect_01;
5 void() crylink_select_01;
9 float() crylink_check =
11 if (self.ammo_cells >= 1)
16 void(float req) w_crylink =
20 else if (req == WR_FIRE1)
21 weapon_prepareattack(crylink_check, crylink_check, crylink_fire1_01, cvar("g_balance_crylink_refire"));
22 else if (req == WR_FIRE2)
23 weapon_prepareattack(crylink_check, crylink_check, crylink_fire2_01, cvar("g_balance_crylink_refire"));
24 else if (req == WR_RAISE)
26 else if (req == WR_UPDATECOUNTS)
27 self.currentammo = self.ammo_cells;
28 else if (req == WR_DROP)
29 crylink_deselect_01();
30 else if (req == WR_SETUP)
31 weapon_setup(WEP_CRYLINK, "w_crylink.zym", IT_CELLS);
32 else if (req == WR_CHECKAMMO)
33 weapon_hasammo = crylink_check();
37 void W_Crylink_Touch (void)
39 self.event_damage = nullfunction;
40 //te_smallflash(self.origin);
41 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"), IT_CRYLINK);
42 self.touch = nullfunction;
43 self.norespawn = TRUE;
44 setmodel (self, "models/plasma.mdl");
48 self.think = SUB_Remove;
49 //self.movetype = MOVETYPE_NONE;
50 self.effects = EF_LOWPRECISION;
51 SUB_SetFade(self, time);
55 void W_Crylink_Attack (void) //(float postion)
59 sound (self, CHAN_WEAPON, "weapons/crylink.wav", 1, ATTN_NORM);
60 self.ammo_cells = self.ammo_cells - 1;
61 self.punchangle_x = -2;
67 makevectors(self.v_angle);
70 proj.classname = "spike";
72 proj.movetype = MOVETYPE_BOUNCE;
73 proj.solid = SOLID_BBOX;
76 setmodel (proj, "models/plasmatrail.mdl");
77 setsize (proj, '0 0 0', '0 0 0');
78 setorigin (proj, self.origin + self.view_ofs + v_forward * 10 + v_right * 5 + v_up * -14);
80 proj.velocity = (v_forward + (counter / 7) * randomvec() * cvar("g_balance_crylink_spread")) * cvar("g_balance_crylink_speed");
81 proj.touch = W_Crylink_Touch;
82 proj.think = SUB_Remove;
83 proj.nextthink = time + 9;
85 proj.angles = vectoangles (proj.velocity);
87 //proj.glow_color = 10;
88 //proj.glow_size = 20;
90 proj.effects = proj.effects | EF_ADDITIVE;
91 proj.effects = proj.effects | EF_LOWPRECISION;
92 counter = counter + 1;
96 void W_Crylink_Attack2 (void)
100 sound (self, CHAN_WEAPON, "weapons/crylink.wav", 1, ATTN_NORM);
101 self.ammo_cells = self.ammo_cells - 1;
102 self.punchangle_x = -2;
108 makevectors(self.v_angle);
111 proj.classname = "spike";
113 proj.movetype = MOVETYPE_BOUNCE;
114 proj.solid = SOLID_BBOX;
115 proj.gravity = 0.001;
117 setmodel (proj, "models/plasmatrail.mdl");
118 setsize (proj, '0 0 0', '0 0 0');
119 setorigin (proj, self.origin + self.view_ofs + v_forward * 10 + v_right * 5 + v_up * -14);
121 proj.velocity = (v_forward + (counter / 2 - 1) * v_right * cvar("g_balance_crylink_spread")) * cvar("g_balance_crylink_speed");
122 proj.touch = W_Crylink_Touch;
123 proj.think = SUB_Remove;
124 proj.nextthink = time + 9;
126 proj.angles = vectoangles (proj.velocity);
128 //proj.glow_color = 10;
129 //proj.glow_size = 20;
131 proj.effects = proj.effects | EF_ADDITIVE;
132 proj.effects = proj.effects | EF_LOWPRECISION;
133 counter = counter + 1;
139 void() crylink_ready_01 = {weapon_thinkf(WFRAME_IDLE, 0.1, crylink_ready_01); self.weaponentity.state = WS_READY;};
140 void() crylink_select_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_ready); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, '0 0 0');};
141 void() crylink_deselect_01 = {weapon_thinkf(-1, cvar("g_balance_weaponswitchdelay"), w_clear); weapon_boblayer1(PLAYER_WEAPONSELECTION_SPEED, PLAYER_WEAPONSELECTION_RANGE);};
142 void() crylink_fire1_01 =
144 weapon_doattack(crylink_check, crylink_check, W_Crylink_Attack);
145 weapon_thinkf(WFRAME_FIRE1, 0.15, crylink_ready_01);
147 void() crylink_fire2_01 =
149 weapon_doattack(crylink_check, crylink_check, W_Crylink_Attack2);
150 weapon_thinkf(WFRAME_FIRE1, 0.15, crylink_ready_01);
152 void() crylink_fire3_01 =
154 weapon_doattack(crylink_check, crylink_check, W_Crylink_Attack);
155 weapon_thinkf(WFRAME_FIRE1, 0.15, crylink_ready_01);