CBaseEntity * CEntHost::GiveNamedItem( const char * szName, int iSubType, bool removeIfNotCarried ) { // If I already own this type don't create one if ( GetHost()->Weapon_OwnsThisType( szName, iSubType ) ) return NULL; CBaseEntity *pEntity = CreateEntityByName( szName ); if ( !pEntity ) { Msg( "NULL Ent in GiveNamedItem!\n" ); return NULL; } pEntity->SetLocalOrigin( GetLocalOrigin() ); pEntity->AddSpawnFlags( SF_NORESPAWN ); CBaseCombatWeapon *pWeapon = dynamic_cast<CBaseCombatWeapon *>(pEntity); DispatchSpawn( pEntity ); if ( pWeapon ) { pWeapon->SetSubType( iSubType ); GetHost()->Weapon_Equip( pWeapon ); } else { if ( pEntity && !(pEntity->IsMarkedForDeletion()) ) { pEntity->Touch( GetHost() ); } } return pEntity; }