#ifdef SVQC
VORTEX_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP)
+
+.float vortex_lasthit;
#endif
#else
#ifdef SVQC
void W_Vortex_Attack(float issecondary)
{
float mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, myammo, charge;
-
+
mydmg = WEP_CVAR_BOTH(vortex, !issecondary, damage);
myforce = WEP_CVAR_BOTH(vortex, !issecondary, force);
mymindist = WEP_CVAR_BOTH(vortex, !issecondary, damagefalloff_mindist);
}
yoda = 0;
+ damage_goodhits = 0;
FireRailgunBullet(w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, WEP_VORTEX);
if(yoda && flying)
- Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_ACHIEVEMENT_YODA);
+ Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_ACHIEVEMENT_YODA);
+ if(damage_goodhits && self.vortex_lasthit)
+ {
+ Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_ACHIEVEMENT_IMPRESSIVE);
+ damage_goodhits = 0; // only every second time
+ }
+
+ self.vortex_lasthit = damage_goodhits;
//beam and muzzle flash done on client
SendCSQCVortexBeamParticle(charge);
void spawnfunc_weapon_vortex(void); // defined in t_items.qc
.float vortex_chargepool_pauseregen_finished;
-float W_Vortex(float req)
+bool W_Vortex(int req)
{
float dt;
float ammo_amount;
{
if(WEP_CVAR(vortex, charge) && self.vortex_charge < WEP_CVAR(vortex, charge_limit))
self.vortex_charge = min(1, self.vortex_charge + WEP_CVAR(vortex, charge_rate) * frametime / W_TICSPERFRAME);
-
+
if(WEP_CVAR_SEC(vortex, chargepool))
if(self.vortex_chargepool_ammo < 1)
{
}
}
}
-
+
return true;
}
case WR_INIT:
precache_sound("weapons/nexwhoosh1.wav");
precache_sound("weapons/nexwhoosh2.wav");
precache_sound("weapons/nexwhoosh3.wav");
- VORTEX_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP)
+ VORTEX_SETTINGS(WEP_SKIP_CVAR, WEP_SET_PROP);
+ return true;
+ }
+ case WR_SETUP:
+ {
+ self.vortex_lasthit = 0;
return true;
}
case WR_CHECKAMMO1:
}
case WR_CONFIG:
{
- VORTEX_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS)
+ VORTEX_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS);
+ return true;
+ }
+ case WR_RESETPLAYER:
+ {
+ self.vortex_lasthit = 0;
return true;
}
case WR_RELOAD:
}
#endif
#ifdef CSQC
-var float autocvar_g_balance_vortex_secondary = 0; // WEAPONTODO
-float W_Vortex(float req)
+float autocvar_g_balance_vortex_secondary = 0; // WEAPONTODO
+bool W_Vortex(int req)
{
switch(req)
{
pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1);
if(!w_issilent)
sound(self, CH_SHOTS, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
-
+
return true;
}
case WR_INIT: