Player 2 joining deletes objects and references

Options

Hi, sorry if this is a dumb question but trust me when I say I've tried my best to figure it out on my own.

😖

Here's the issue: First of all, when player 2 joins I get this error:

I've tried Googling it but the threads I've found on the matter don't help me, or I'm not understanding them right.

using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
using UnityEngine.UI;
using TMPro;
public class NetworkConnector : MonoBehaviourPunCallbacks
{
    [SerializeField] TextMeshProUGUI createRoomInput;
    [SerializeField] TextMeshProUGUI joinRoomInput;
    public static bool lobbyReady = false;
    [SerializeField] Image connectImage;
    private void Awake()
    {
        DontDestroyOnLoad(this);
        PhotonNetwork.AutomaticallySyncScene = true;
        PhotonNetwork.GameVersion = "1";
        connectImage.color = Color.red;
    }
    public void ConnectToPhoton()
    {
        PhotonNetwork.ConnectUsingSettings();
    }
    public void DisconnectFromPhoton()
    {
        PhotonNetwork.Disconnect();
    }
    public void JoinGame()
    {
        if (PhotonNetwork.NetworkClientState == ClientState.ConnectedToMasterServer)
        {
            PhotonNetwork.JoinRoom(joinRoomInput.text);
        }
        else
        {
            Debug.LogError("Can't join random room now, client is not ready");
        }


    }
    public override void OnDisconnected(DisconnectCause cause)
    {
        Debug.LogWarning($"Failed to connect: {cause}");
    }
    public override void OnCreatedRoom()
    {
        lobbyReady = true;
    }
    public void CreateRoom()
    {
        PhotonNetwork.CreateRoom(createRoomInput.text, new RoomOptions { MaxPlayers = (byte)Players.Count });
        PhotonNetwork.LoadLevel(1);
        Debug.Log(createRoomInput.text);


    }
    public override void OnJoinedRoom()
    {
        Debug.Log($"{PhotonNetwork.CurrentRoom.Name} joined!");
    }




    public override void OnPlayerEnteredRoom(Player other)
    {
        Debug.LogFormat("OnPlayerEnteredRoom() {0}", other.NickName); // not seen if you're the player connecting




        if (PhotonNetwork.IsMasterClient)
        {
            Debug.LogFormat("OnPlayerEnteredRoom IsMasterClient {0}", PhotonNetwork.IsMasterClient); // called before OnPlayerLeftRoom




            CreateRoom();
        }
    }




    public override void OnPlayerLeftRoom(Player other)
    {
        Debug.LogFormat("OnPlayerLeftRoom() {0}", other.NickName); // seen when other disconnects




        if (PhotonNetwork.IsMasterClient)
        {
            Debug.LogFormat("OnPlayerLeftRoom IsMasterClient {0}", PhotonNetwork.IsMasterClient); // called before OnPlayerLeftRoom


        }
    }
    public override void OnConnectedToMaster()
    {
        connectImage.color = Color.green;
    }
}

My second issue, and the weirdest one, is that when player 2 joins the game they destroy gameobjects and make references show up as missing. Basically in another script I create 50 humans and assign them houses and locations (also GOs) and set their parent to be an empty GO named "Humans". If I set humans to not destroy on load then when player 2 joins they will delete the references the people have to their homes and current locations. If I do allow humans to be destroyed on load then when player 2 joins they will destroy the empty humans parent and take all the humans along with it. Either 50 people go missing or they become homeless. Tragic. I've been stuck on this problem for days now so any help would be appreciated.