bool CASW_Pickup_Weapon::AllowedToPickup(CASW_Marine *pMarine) { if (!pMarine || !ASWGameRules() || !pMarine->GetMarineResource()) return false; // check if we're swapping for an existing item int index = pMarine->GetWeaponPositionForPickup(GetWeaponClass()); CASW_Weapon* pWeapon = pMarine->GetASWWeapon(index); const char* szSwappingClass = pWeapon ? pWeapon->GetClassname() : ""; // first check if the gamerules will allow it bool bAllowed = ASWGameRules()->MarineCanPickup(pMarine->GetMarineResource(), GetWeaponClass(), szSwappingClass); #ifdef CLIENT_DLL m_bSwappingWeapon = ( pWeapon != NULL ); #endif return bAllowed; }
void CASW_Pickup_Weapon_Ammo_Satchel::InitWeapon(CASW_Marine* pMarine, CASW_Weapon* pWeapon) { if (!pMarine || !pWeapon) return; CASW_Weapon_Ammo_Satchel *pSatchel = dynamic_cast<CASW_Weapon_Ammo_Satchel*>(pWeapon); if (!pSatchel) return; // ammo satchel doesn't have normal ammo //pWeapon->SetClip1( 0 ); //pWeapon->SetClip2( 0 ); // equip the weapon pMarine->Weapon_Equip_In_Index( pWeapon, pMarine->GetWeaponPositionForPickup(GetWeaponClass()) ); //pSatchel->m_nAmmoDrops = m_nAmmoDrops; }
void CASW_Pickup_Weapon_Ammo_Bag::InitWeapon(CASW_Marine* pMarine, CASW_Weapon* pWeapon) { if (!pMarine || !pWeapon) return; CASW_Weapon_Ammo_Bag *pBag = dynamic_cast<CASW_Weapon_Ammo_Bag*>(pWeapon); if (!pBag) return; // ammo bag doesn't have normal ammo pWeapon->SetClip1( 0 ); pWeapon->SetClip2( 0 ); // equip the weapon pMarine->Weapon_Equip_In_Index( pWeapon, pMarine->GetWeaponPositionForPickup(GetWeaponClass()) ); for (int i=0;i<ASW_AMMO_BAG_SLOTS;i++) { pBag->m_AmmoCount.Set(i, m_iAmmoCount[i]); m_iAmmoCount[i] = 0; } }