bool Dota_Resupply::ReSupplyPlayer( CHL2MP_Player * pPlayer ) { CBaseCombatWeapon * weapon; int weaponLevel; int iAmmoIndex; bool gotSomething = false; for ( int i = 1; i < MAX_AMMO_TYPES; i++ ) { Item_t * item = GetItemDef()->GetItemOfIndex(i); if ( item && item->pWeaponNeeded == NULL ) { weapon = pPlayer->Weapon_OwnsThisType( item->pName ); weaponLevel = pPlayer->GetWeaponLevel( item->pName ); if ( weapon && weaponLevel > 0 ) { iAmmoIndex = weapon->GetPrimaryAmmoType(); if ( iAmmoIndex < 0 || iAmmoIndex >= MAX_AMMO_SLOTS ) continue; int iMax = (GetAmmoDef()->MaxCarry(iAmmoIndex) / 4) * weaponLevel; if ( weapon->UsesClipsForAmmo1() ) { int missingFromClip1 = weapon->GetMaxClip1() - weapon->Clip1(); iMax += missingFromClip1; } int iAdd = iMax - pPlayer->GetAmmoCount(iAmmoIndex); if ( iAdd >= 1 ) gotSomething |= (pPlayer->GiveAmmo( iAdd, weapon->GetPrimaryAmmoType() ) != 0); } } } return gotSomething; }