dropWeaponForDeath( attacker )
{
weapon = self.lastDroppableWeapon;
if ( isdefined( self.droppedDeathWeapon ) )
return;
if ( level.inGracePeriod )
return;
if ( !isdefined( weapon ) )
{
/#
if ( getdvar("scr_dropdebug") == "1" )
println( "didn't drop weapon: not defined" );
#/
return;
}
if ( weapon == "none" )
{
/#
if ( getdvar("scr_dropdebug") == "1" )
println( "didn't drop weapon: weapon == none" );
#/
return;
}
if ( !self hasWeapon( weapon ) )
{
/#
if ( getdvar("scr_dropdebug") == "1" )
println( "didn't drop weapon: don't have it anymore (" + weapon + ")" );
#/
return;
}
if ( weapon != "riotshield_mp" )
{
if ( !(self AnyAmmoForWeaponModes( weapon )) )
{
/#
if ( getdvar("scr_dropdebug") == "1" )
println( "didn't drop weapon: no ammo for weapon modes" );
#/
return;
}
clipAmmoR = self GetWeaponAmmoClip( weapon, "right" );
clipAmmoL = self GetWeaponAmmoClip( weapon, "left" );
if ( !clipAmmoR && !clipAmmoL )
{
/#
if ( getdvar("scr_dropdebug") == "1" )
println( "didn't drop weapon: no ammo in clip" );
#/
return;
}
stockAmmo = self GetWeaponAmmoStock( weapon );
stockMax = WeaponMaxAmmo( weapon );
if ( stockAmmo > stockMax )
stockAmmo = stockMax;
item = self dropItem( weapon );
item ItemWeaponSetAmmo( clipAmmoR, stockAmmo, clipAmmoL );
}
else
{
item = self dropItem( weapon );
if ( !isDefined( item ) )
return;
item ItemWeaponSetAmmo( 1, 1, 0 );
}
/#
if ( getdvar("scr_dropdebug") == "1" )
println( "dropped weapon: " + weapon );
#/
self.droppedDeathWeapon = true;
item.owner = self;
item.ownersattacker = attacker;
item thread watchPickup();
item thread deletePickupAfterAWhile();
detach_model = getWeaponModel( weapon );
if ( !isDefined( detach_model ) )
return;
if( isDefined( self.tag_stowed_back ) && detach_model == self.tag_stowed_back )
self detach_back_weapon();
if ( !isDefined( self.tag_stowed_hip ) )
return;
if( detach_model == self.tag_stowed_hip )
self detach_hip_weapon();
}