private void OnTriggerEnter(Collider collider)
    {
        //if the player enters the steppingstones collider then hide the grapheme text and teleport point also update the players rownumber, playerpos variable and the steppingstones boolean selectedStone to true
        if (collider.gameObject.tag == "Player")
        {
            graphemeText.text = " ";
            teleportPoint.SetActive(false);
            plyr.rowNumber = row;
            selectedStone  = true;
            npc.playerPos  = stone.transform;

            //if the steppingstone is both selected and a correct steppingstone then update the correct respawn point, move the npc to the steppingstone and show the next row of steppingstones
            if (correctStone && selectedStone)
            {
                CorrectRespawnSet();
                npc.NPCMove();
                plyr.RespawnSetup();
                plyr.RowShow();

                //if its the first time the player has teleported to this correct steppingstone then show a green version of the grapheme text flying over to the otherside of the pond
                if (firstTime2)
                {
                    lvlfin.ShowFinalStone();
                    firstTime2 = false;
                }

                //if its the first time the player has teleported to this correct steppingstone then play the correct sound effect
                if (firstTime && plyr.rowNumber != 5)
                {
                    npc.Correct();
                    firstTime = false;
                }
            }
            else
            {
                //if the steppingstone is incorrect then hide the stone, play the splash sound effect and respawn the player at the last correct steppingstone
                DestroyStone();
                npc.Splash();
                plyr.LastCorrectRespawn();
            }
        }
    }