The lcannon secondary attack can be used while the primary is charged up, effectively cancelling the charge and preserving a significant amount of ammo.
This is not the best option, but if LCChargeFire is called with secondary and check ps.stats[ STAT_MISC ] is greater than 0, LCChargeFire could return without doing anything. Something like this
Index: src/game/g_weapon.c
===================================================================
--- src/game/g_weapon.c (revision 868)
+++ src/game/g_weapon.c (working copy)
@@ -607,6 +607,6 @@
if( secondary )
{
+ if( ent->client->ps.stats[ STAT_MISC] > 0 )
+ return;
m = fire_luciferCannon( ent, muzzle, forward, LCANNON_SECONDARY_DAMAGE,
LCANNON_SECONDARY_RADIUS );
ent->client->ps.weaponTime = LCANNON_REPEAT;
This is not the best option, but if LCChargeFire is called with secondary and check ps.stats[ STAT_MISC ] is greater than 0, LCChargeFire could return without doing anything. Something like this Index: src/game/g_weapon.c =================================================================== --- src/game/g_weapon.c (revision 868) +++ src/game/g_weapon.c (working copy) @@ -607,6 +607,6 @@ if( secondary ) { + if( ent->client->ps.stats[ STAT_MISC] > 0 ) + return; m = fire_luciferCannon( ent, muzzle, forward, LCANNON_SECONDARY_DAMAGE, LCANNON_SECONDARY_RADIUS ); ent->client->ps.weaponTime = LCANNON_REPEAT;