]> icculus.org git repositories - divverent/nexuiz.git/blob - qcsrc/gamec/w_crylink.c
commented out speed/slowmo related stuff
[divverent/nexuiz.git] / qcsrc / gamec / w_crylink.c
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;
6
7 .float gravity;
8
9 float() crylink_check =
10 {
11         if (self.ammo_cells >= 1)
12                 return TRUE;
13         return FALSE;
14 };
15
16 void(float req) w_crylink =
17 {
18         if (req == WR_IDLE)
19                 crylink_ready_01();
20         else if (req == WR_FIRE1)
21                 weapon_prepareattack(crylink_check, crylink_check, crylink_fire1_01, 0.2);
22         else if (req == WR_FIRE2)
23                 weapon_prepareattack(crylink_check, crylink_check, crylink_fire2_01, 0.2);
24         else if (req == WR_RAISE)
25                 crylink_select_01();
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();
34 };
35
36
37 void W_Crylink_Touch (void)
38 {
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");
45         self.gravity = 1;
46         self.glow_size = 0;
47         self.glow_color = 0;
48         self.think = SUB_Remove;
49         //self.movetype = MOVETYPE_NONE;
50         self.effects = EF_LOWPRECISION;
51         SUB_SetFade(self, time);
52         //remove (self);
53 }
54
55 void W_Crylink_Attack (void) //(float postion)
56 {
57         float counter;
58
59         sound (self, CHAN_WEAPON, "weapons/crylink.wav", 1, ATTN_NORM);
60         self.attack_finished = time + cvar("g_balance_crylink_refire");
61         self.ammo_cells = self.ammo_cells - 1;
62
63         while (counter < 7)
64         {
65                 entity  proj;
66
67                 makevectors(self.v_angle);
68                 proj = spawn ();
69                 proj.owner = self;
70                 proj.classname = "spike";
71
72                 proj.movetype = MOVETYPE_BOUNCE;
73                 proj.solid = SOLID_BBOX;
74                 proj.gravity = 0.001;
75
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);
79
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;
84
85                 proj.angles = vectoangles (proj.velocity);
86
87                 proj.glow_color = 10;
88                 proj.glow_size = 20;
89
90                 proj.effects = proj.effects | EF_ADDITIVE;
91                 proj.effects = proj.effects | EF_LOWPRECISION;
92                 counter = counter + 1;
93         }
94 }
95
96 void W_Crylink_Attack2 (void)
97 {
98         float counter;
99
100         sound (self, CHAN_WEAPON, "weapons/crylink.wav", 1, ATTN_NORM);
101         self.attack_finished = time + cvar("g_balance_crylink_refire");
102         self.ammo_cells = self.ammo_cells - 1;
103
104         while (counter < 5)
105         {
106                 entity  proj;
107
108                 makevectors(self.v_angle);
109                 proj = spawn ();
110                 proj.owner = self;
111                 proj.classname = "spike";
112
113                 proj.movetype = MOVETYPE_BOUNCE;
114                 proj.solid = SOLID_BBOX;
115                 proj.gravity = 0.001;
116
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);
120
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;
125
126                 proj.angles = vectoangles (proj.velocity);
127
128                 proj.glow_color = 10;
129                 proj.glow_size = 20;
130
131                 proj.effects = proj.effects | EF_ADDITIVE;
132                 proj.effects = proj.effects | EF_LOWPRECISION;
133                 counter = counter + 1;
134         }
135 }
136
137
138 // weapon frames
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 =
143 {
144         weapon_doattack(crylink_check, crylink_check, W_Crylink_Attack);
145         weapon_thinkf(WFRAME_FIRE1, 0.15, crylink_ready_01);
146 };
147 void()  crylink_fire2_01 =
148 {
149         weapon_doattack(crylink_check, crylink_check, W_Crylink_Attack2);
150         weapon_thinkf(WFRAME_FIRE1, 0.15, crylink_ready_01);
151 };
152 void()  crylink_fire3_01 =
153 {
154         weapon_doattack(crylink_check, crylink_check, W_Crylink_Attack);
155         weapon_thinkf(WFRAME_FIRE1, 0.15, crylink_ready_01);
156 };
157