public void MakeChars()
        {
            Close = false;
            if (IsReset == false)
            {
                for (int k = 0; k < Talk.Length; k++)
                {
                    Talk[k] += "\r\n";
                }
            }

            for (int i = 1; i < 99; i++)
            {
                ConversationIndexNumber2 = i;
                foreach (string s in Talk)
                {
                    if (s.Contains("%" + ConversationIndexNumber.ToString() + ";" + i))
                    {
                        tempString += s;
                    }
                }

                conversations.Add(tempString);
                tempString = "";
            }
        }
        public virtual void Print(SpriteBatch spriteBatch, GameTime gameTime, KeyboardState keyboardState, KeyboardState prevKeyboardState)
        {
            Count = Regex.Matches(conversations[conversationCount], "\r\n").Count;

            if (charsRemoved == false)
            {
                if (conversations[conversationCount].Contains("%"))
                {
                    conversations[conversationCount] = Regex.Replace(conversations[conversationCount], "%" + ConversationIndexNumber.ToString() + ";" + @"[\d-]" + ":", "");
                    charsRemoved = true;
                }
            }
            printChars = conversations[conversationCount].ToCharArray();

            if (number <= printChars.Length - 1)
            {
                Typing = true;
                timer += gameTime.ElapsedGameTime.Milliseconds;
                if (charPrinted == false)
                {
                    sb.Append(printChars[number]);
                    charPrinted = true;
                }


                spriteBatch.DrawString(Font, sb.ToString(), TextPosition, Color.White);


                if (timer > speed)
                {
                    number++;
                    charPrinted = false;

                    timer = 0;
                }
            }
            else
            {
                Typing = false;



                merged = new string(printChars);
                if (merged == "")
                {
                    Close = true;
                }
                choiceStrings = Regex.Split(merged, @"[\d-]" + ".");
                timer        += gameTime.ElapsedGameTime.Milliseconds;
                if (timer > 300)
                {
                    clicked = false;
                }
                #region Keyboard Choice control(Up down and space and not using number keys)

                gamePadState = GamePad.GetState(PlayerIndex.One);

                if (conversations[conversationCount].Contains("1."))
                {
                    if (keyboardState.IsKeyDown(Keys.Down) && !clicked)
                    {
                        choiceState += 1; clicked = true; timer = 0;
                    }
                    if (keyboardState.IsKeyDown(Keys.Up) && !clicked)
                    {
                        choiceState -= 1; clicked = true; timer = 0;
                    }
                    if (keyboardState.IsKeyDown(Keys.S) && !clicked)
                    {
                        choiceState += 1; clicked = true; timer = 0;
                    }
                    if (keyboardState.IsKeyDown(Keys.W) && !clicked)
                    {
                        choiceState -= 1; clicked = true; timer = 0;
                    }
                    if (gamePadState.ThumbSticks.Left.Y < -0.1f && !clicked)
                    {
                        choiceState += 1; clicked = true; timer = 0;
                    }
                    if (gamePadState.ThumbSticks.Left.X > 0.1f && !clicked)
                    {
                        choiceState -= 1; clicked = true; timer = 0;
                    }


                    if (choiceState > choiceStrings.Length - 1)
                    {
                        choiceState = 1;
                    }
                    if (choiceState < 1)
                    {
                        choiceState = choiceStrings.Length - 1;
                    }
                }


                #endregion
                #region CHOICES (VERY COMPLEX ASK MARTIN)
                //INTITIAL CHOICE
                if (conversations[conversationCount].Contains("1."))
                {
                    if ((keyboardState.IsKeyDown(Keys.D1) && !clicked && LastKey == 0) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 0 && choiceState == 1 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 1;
                        ConversationIndexNumber = 2;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D2) && !clicked && LastKey == 0) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 0 && choiceState == 2 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 2;
                        ConversationIndexNumber = 3;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D3) && !clicked && LastKey == 0) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 0 && choiceState == 3 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 3;
                        ConversationIndexNumber = 4;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }

                    //1

                    if ((keyboardState.IsKeyDown(Keys.D1) && LastKey == 1 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 1 && choiceState == 1 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 1;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 1);
                        //ConversationIndexNumber = 21;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D1) && LastKey == 2 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 2 && choiceState == 1 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 1;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 1);
                        //ConversationIndexNumber = 31;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D1) && LastKey == 3 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 3 && choiceState == 1 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 1;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 1);
                        //ConversationIndexNumber = 41;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }

                    //2

                    if ((keyboardState.IsKeyDown(Keys.D2) && LastKey == 1 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 1 && choiceState == 2 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 2;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 2);
                        //ConversationIndexNumber = 22;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D2) && LastKey == 2 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 2 && choiceState == 2 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 2;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 2);
                        //ConversationIndexNumber = 32;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D2) && LastKey == 3 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 3 && choiceState == 2 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 2;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 2);
                        //ConversationIndexNumber = 42;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }

                    //3

                    if ((keyboardState.IsKeyDown(Keys.D3) && LastKey == 1 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 1 && choiceState == 3 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 3;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 3);
                        //ConversationIndexNumber = 23;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D3) && LastKey == 2 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 2 && choiceState == 3 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 3;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 3);
                        //ConversationIndexNumber = 33;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D3) && LastKey == 3 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 3 && choiceState == 3 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 3;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 3);
                        //ConversationIndexNumber = 43;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    //4

                    if ((keyboardState.IsKeyDown(Keys.D4) && LastKey == 1 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 1 && choiceState == 4 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 4;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 4);
                        //ConversationIndexNumber = 23;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D4) && LastKey == 2 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 2 && choiceState == 4 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 4;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 4);
                        //ConversationIndexNumber = 33;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D4) && LastKey == 3 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 3 && choiceState == 4 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 4;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 4);
                        //ConversationIndexNumber = 43;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    //5

                    if ((keyboardState.IsKeyDown(Keys.D5) && LastKey == 1 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 1 && choiceState == 5 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 5;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 5);
                        //ConversationIndexNumber = 23;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D5) && LastKey == 2 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 2 && choiceState == 5 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 5;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 5);
                        //ConversationIndexNumber = 33;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                    if ((keyboardState.IsKeyDown(Keys.D5) && LastKey == 3 && !clicked) || (keyboardState.IsKeyDown(Keys.Space) && !clicked && LastKey == 3 && choiceState == 5 && prevKeyboardState.IsKeyUp(Keys.Space)))
                    {
                        LastKey = 5;
                        ConversationIndexNumber = int.Parse((ConversationIndexNumber.ToString()) + 5);
                        //ConversationIndexNumber = 43;
                        IsReset = true;
                        Reset();
                        MakeChars();

                        clicked = true;
                        timer   = 0;
                    }
                }
                #endregion



                if ((merged.Contains("1.") == false))
                {
                    spriteBatch.DrawString(Font, merged, TextPosition, Color.White);
                }
                if (merged.Contains("1."))
                {
                    choiceStrings = Regex.Split(merged, @"(?=[\d-])").Where(s => s != String.Empty).ToArray();


                    for (int i = 0; i < choiceStrings.Length; i++)
                    {
                        if (choiceState == i + 1)
                        {
                            if (i > 0 && Regex.Matches(choiceStrings[i - 1], "\r\n").Count == 2)
                            {
                                spriteBatch.DrawString(Font, choiceStrings[i], new Vector2(TextPosition.X, TextPosition.Y + (i * 82)), Color.Yellow);
                            }
                            if (i == 0)
                            {
                                spriteBatch.DrawString(Font, choiceStrings[i], new Vector2(TextPosition.X, TextPosition.Y + (i * 41)), Color.Yellow);
                            }
                            if (i > 0 && Regex.Matches(choiceStrings[i - 1], "\r\n").Count == 1)
                            {
                                spriteBatch.DrawString(Font, choiceStrings[i], new Vector2(TextPosition.X, TextPosition.Y + (i * 62)), Color.Yellow);
                            }
                        }
                        else
                        {
                            if (i > 0 && Regex.Matches(choiceStrings[i - 1], "\r\n").Count == 2)
                            {
                                spriteBatch.DrawString(Font, choiceStrings[i], new Vector2(TextPosition.X, TextPosition.Y + (i * 82)), Color.White);
                            }
                            if (i == 0)
                            {
                                spriteBatch.DrawString(Font, choiceStrings[i], new Vector2(TextPosition.X, TextPosition.Y + (i * 41)), Color.White);
                            }
                            if (i > 0 && Regex.Matches(choiceStrings[i - 1], "\r\n").Count == 1)
                            {
                                spriteBatch.DrawString(Font, choiceStrings[i], new Vector2(TextPosition.X, TextPosition.Y + (i * 62)), Color.White);
                            }
                        }
                    }
                }


                if (keyboardState.IsKeyDown(Keys.Space) && prevKeyboardState.IsKeyUp(Keys.Space) && (conversations[conversationCount].Contains("1.") == false) && timer > 300)
                {
                    //CAN'T USE NORMAL RESET... SADLY

                    Count         = 0;
                    merged        = "";
                    sb.Length     = 0;
                    number        = 0;
                    tempString    = "";
                    choiceStrings = null;
                    conversationCount++;
                    charsRemoved = false;
                    Typing       = false;
                    if (conversationCount > conversations.Count() - 1)
                    {
                        conversationCount = conversations.Count() - 1;
                    }
                }
            }
        }