Well, here's a patch for game/bg_pmove.c that blocks full-ammo reloads. Works against both 1.1.0 and CVS.
--- /usr/src/tremulous-1.1.0-src/src/game/bg_pmove.c 2006-01-12 18:05:09.000000000 +0100
+++ bg_pmove.c 2006-05-08 14:50:08.000000000 +0200
@@ -2674,7 +2674,7 @@
static void PM_Weapon( void )
{
int addTime = 200; //default addTime - should never be used
- int ammo, clips, maxClips;
+ int ammo, maxammo, clips, maxClips;
qboolean attack1 = qfalse;
qboolean attack2 = qfalse;
qboolean attack3 = qfalse;
@@ -2810,14 +2810,22 @@
{
pm->ps->pm_flags &= ~PMF_WEAPON_RELOAD;
- pm->ps->weaponstate = WEAPON_RELOADING;
+ BG_FindAmmoForWeapon( pm->ps->weapon, &maxammo, NULL );
+ if( BG_FindUsesEnergyForWeapon( pm->ps->weapon ) &&
+ BG_InventoryContainsUpgrade( UP_BATTPACK, pm->ps->stats ) )
+ maxammo = (int)( (float)maxammo * BATTPACK_MODIFIER );
- //drop the weapon
- PM_StartTorsoAnim( TORSO_DROP );
+ // don't reload full clips
+ if(ammo < maxammo) {
+ pm->ps->weaponstate = WEAPON_RELOADING;
- addTime = BG_FindReloadTimeForWeapon( pm->ps->weapon );
+ //drop the weapon
+ PM_StartTorsoAnim( TORSO_DROP );
- pm->ps->weaponTime += addTime;
+ addTime = BG_FindReloadTimeForWeapon( pm->ps->weapon );
+
+ pm->ps->weaponTime += addTime;
+ }
return;
}