//----------------------------------------------------------------------------- // Purpose: Override so give correct ammo // Input : pOther - the entity that touched me // Output : //----------------------------------------------------------------------------- void CWeapon_SLAM::SlamTouch( CBaseEntity *pOther ) { CBaseCombatCharacter* pBCC = ToBaseCombatCharacter( pOther ); // Can I even pick stuff up? if ( pBCC && !pBCC->IsAllowedToPickupWeapons() ) return; // --------------------------------------------------- // First give weapon to touching entity if allowed // --------------------------------------------------- BaseClass::DefaultTouch(pOther); // ---------------------------------------------------- // Give slam ammo if touching client // ---------------------------------------------------- if (pOther->GetFlags() & FL_CLIENT) { // ------------------------------------------------ // If already owned weapon of this type remove me // ------------------------------------------------ CWeapon_SLAM* oldWeapon = (CWeapon_SLAM*)pBCC->Weapon_OwnsThisType( GetClassname() ); if (oldWeapon != this) { UTIL_Remove( this ); } else { pBCC->GiveAmmo( 1, m_iSecondaryAmmoType ); SetThink(NULL); } } }
//----------------------------------------------------------------------------- // Purpose: Override so give correct ammo // Input : pOther - the entity that touched me // Output : //----------------------------------------------------------------------------- void CWeaponMolotov::MolotovTouch( CBaseEntity *pOther ) { // --------------------------------------------------- // First give weapon to touching entity if allowed // --------------------------------------------------- BaseClass::DefaultTouch(pOther); // ---------------------------------------------------- // Give molotov ammo if touching client // ---------------------------------------------------- if (pOther->GetFlags() & FL_CLIENT) { // ------------------------------------------------ // If already owned weapon of this type remove me // ------------------------------------------------ CBaseCombatCharacter* pBCC = ToBaseCombatCharacter( pOther ); CWeaponMolotov* oldWeapon = (CWeaponMolotov*)pBCC->Weapon_OwnsThisType( GetClassname() ); if (oldWeapon != this) { UTIL_Remove( this ); } else { pBCC->GiveAmmo( 1, m_iSecondaryAmmoType ); SetThink (NULL); } } }
//----------------------------------------------------------------------------- // Drops all weapons, marks the character as not being able to pick up weapons //----------------------------------------------------------------------------- void CTriggerWeaponStrip::StartTouch(CBaseEntity *pOther) { BaseClass::StartTouch( pOther ); if ( PassesTriggerFilters(pOther) == false ) return; CBaseCombatCharacter *pCharacter = pOther->MyCombatCharacterPointer(); if ( m_bKillWeapons ) { for ( int i = 0 ; i < pCharacter->WeaponCount(); ++i ) { CBaseCombatWeapon *pWeapon = pCharacter->GetWeapon( i ); if ( !pWeapon ) continue; pCharacter->Weapon_Drop( pWeapon ); UTIL_Remove( pWeapon ); } return; } // Strip the player of his weapons if ( pCharacter && !pCharacter->IsEFlagSet( EFL_NO_WEAPON_PICKUP ) ) { CBaseCombatWeapon *pBugbait = pCharacter->Weapon_OwnsThisType( "weapon_bugbait" ); if ( pBugbait ) { pCharacter->Weapon_Drop( pBugbait ); UTIL_Remove( pBugbait ); } pCharacter->Weapon_DropAll( true ); pCharacter->AddEFlags( EFL_NO_WEAPON_PICKUP ); } }