Restrict editing of content based on form value in content type
(I think it'd be fine to have either 1) the rooms originally created
  by an admin and just have the building field hidden/disabled/limited
  when non-admins edit, or 2) even let them create new rooms with the
  building field limited based on their role/permissions.)


You could do this via a custom module or in your theme's mytheme.theme

function mytheme_form_alter(&amp;$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  // check form id for edit
  if($form_id == 'node_room_edit_form') {
    // Load the current loggedin user.
    $user = \Drupal\user\Entity\User::load(\Drupal::currentUser()-&gt;id());
    // Check if user does not have administrator role
    if(!$user-&gt;hasRole('administrator')) {
      // get current node id
      $nid = \Drupal::routeMatch()-&gt;getParameter('node');
      // load the node
      \Drupal\node\Entity\Node::load($nid);
      // check if building field is not set to something
      if($node-&gt;field_building-&gt;value != 'something') {
        // remove access to field, make field not required so when 
        // they save they don't get an error.
        $form['field_name']['widget']['#access'] = FALSE;
        $form['field_name']['widget']['#required'] = FALSE;
      }
    }
  }
  // check id for create
  if($form_id == 'node_room_form') {
    // logic goes here.
  }
}