float flying;
flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last
+ if(cvar("g_balance_nex_charge"))
+ {
+ mydmg *= self.nex_charge;
+ myforce *= self.nex_charge;
+ //print("^1Damage: ^7", ftos(mydmg), "\n");
+ self.nex_charge *= cvar("g_balance_nex_charge_shot_multiplier"); // do this AFTER setting mydmg/myforce
+ }
+
W_SetupShot (self, TRUE, 5, "weapons/nexfire.wav", mydmg);
yoda = 0;
void spawnfunc_weapon_nex (void); // defined in t_items.qc
-.float sent_nex_scope;
float w_nex(float req)
{
+ float dt;
if (req == WR_AIM)
{
self.BUTTON_ATCK = bot_aim(1000000, 0, 1, FALSE);
}
else if (req == WR_THINK)
{
+ if(cvar("g_balance_nex_charge") && self.nex_charge < cvar("g_balance_nex_charge_limit"))
+ self.nex_charge = min(1, self.nex_charge + cvar("g_balance_nex_charge_rate") * frametime / W_TICSPERFRAME);
if (self.BUTTON_ATCK)
{
if (weapon_prepareattack(0, cvar("g_balance_nex_primary_refire")))
}
if (self.BUTTON_ATCK2)
{
- if(cvar("g_balance_nex_secondary"))
+ if(cvar("g_balance_nex_secondary_charge"))
{
- if (weapon_prepareattack(0, cvar("g_balance_nex_secondary_refire")))
+ dt = frametime / W_TICSPERFRAME;
+ if(self.nex_charge < 1)
{
- W_Nex_Attack(1);
- weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_nex_secondary_animtime"), w_ready);
+ dt = min(dt, (1 - self.nex_charge) / cvar("g_balance_nex_secondary_charge_rate"));
+ if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
+ {
+ if(cvar("g_balance_nex_secondary_ammo"))
+ {
+ dt = min(dt, (self.ammo_cells - cvar("g_balance_nex_primary_ammo")) / cvar("g_balance_nex_secondary_ammo"));
+ dt = max(0, dt);
+ if(dt > 0)
+ {
+ self.ammo_cells = max(cvar("g_balance_nex_secondary_ammo"), self.ammo_cells - cvar("g_balance_nex_secondary_ammo") * dt);
+ }
+ }
+ }
+ self.nex_charge += dt * cvar("g_balance_nex_secondary_charge_rate");
}
}
- else
+ else if(cvar("g_balance_nex_secondary"))
{
- if(clienttype(self) == CLIENTTYPE_REAL)
- if(!self.sent_nex_scope)
+ if (weapon_prepareattack(0, cvar("g_balance_nex_secondary_refire")))
{
- msg_entity = self;
- WriteByte(MSG_ONE, SVC_TEMPENTITY);
- WriteByte(MSG_ONE, TE_CSQC_NEX_SCOPE);
- self.sent_nex_scope = 1;
- }
+ W_Nex_Attack(1);
+ weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_nex_secondary_animtime"), w_ready);
+ }
}
}
}
else if (req == WR_CHECKAMMO1)
return self.ammo_cells >= cvar("g_balance_nex_primary_ammo");
else if (req == WR_CHECKAMMO2)
+ {
+ if(cvar("g_balance_nex_secondary_charge"))
+ return self.ammo_cells >= cvar("g_balance_nex_primary_ammo");
return self.ammo_cells >= cvar("g_balance_nex_secondary_ammo");
+ }
return TRUE;
};
#endif