public bool MarkAutoSelectItems()
        {
            bool ItemStateChanged = false;

            foreach (var CheckedObject in AutoSelect)
            {
                if (CheckedObject.ID < -1)
                {
                    continue;
                }
                if (CheckedObject.RandomizedItem > -2)
                {
                    CheckedObject.RandomizedItem = -2;
                    ItemStateChanged             = true;
                    continue;
                }
                if (CheckedObject.SpoilerRandom > -2)
                {
                    CheckedObject.RandomizedItem = CheckedObject.SpoilerRandom;
                    ItemStateChanged             = true;
                    continue;
                }
                if (CheckedObject.RandomizedState() == 2)
                {
                    CheckedObject.RandomizedItem = CheckedObject.ID;
                    ItemStateChanged             = true;
                    continue;
                }
            }
            return(ItemStateChanged);
        }
        //Automatic Checks

        public bool CheckAutoSelectItems()
        {
            bool ItemStateChanged = false;

            foreach (var CheckedObject in AutoSelect)
            {
                //Check if the items checked status has been changed, most likely by CheckEntrancePair.
                if (ActionDic.ContainsKey(CheckedObject.ID) && ActionDic[CheckedObject.ID] != CheckedObject.Checked && CheckedObject.IsEntrance())
                {
                    continue;
                }
                if (CheckedObject.ID < -1)
                {
                    continue;
                }
                if (CheckedObject.Checked && CheckedObject.RandomizedItem > -2)
                {
                    if (Instance.ItemInRange(CheckedObject.RandomizedItem) && !Tools.SameItemMultipleChecks(CheckedObject.RandomizedItem, Instance) && CheckedObject.ItemBelongsToMe())
                    {
                        Instance.Logic[CheckedObject.RandomizedItem].Aquired = false;
                        LogicEditing.CheckEntrancePair(CheckedObject, Instance, false);
                    }
                    CheckedObject.Checked = false;
                    if (!KeepChecked)
                    {
                        CheckedObject.RandomizedItem = -2;
                    }
                    ItemStateChanged = true;
                    continue;
                }
                if (CheckedObject.SpoilerRandom > -2 || CheckedObject.RandomizedItem > -2 || CheckedObject.RandomizedState() == 2)
                {
                    CheckedObject.Checked = true;
                    if (CheckedObject.RandomizedState() == 2)
                    {
                        CheckedObject.RandomizedItem = CheckedObject.ID;
                    }
                    if (CheckedObject.SpoilerRandom > -2)
                    {
                        CheckedObject.RandomizedItem = CheckedObject.SpoilerRandom;
                    }
                    if (CheckedObject.RandomizedItem < 0)
                    {
                        CheckedObject.RandomizedItem = -1;
                        ItemStateChanged             = true;
                        continue;
                    }
                    if (CheckedObject.ItemBelongsToMe())
                    {
                        Instance.Logic[CheckedObject.RandomizedItem].Aquired = true;
                    }
                    Instance.Logic[CheckedObject.RandomizedItem].PlayerData.ItemCameFromPlayer = FromNetPlayer;
                    LogicEditing.CheckEntrancePair(CheckedObject, Instance, true);
                    ItemStateChanged = true;
                    continue;
                }
            }
            return(ItemStateChanged);
        }
        private void UpdateCoursesListView()
        {
            try
            {
                courses_listView.Items.Clear();
                Globals.Courses.ToList().ForEach(x =>
                {
                    for (int i = 0; i < x.Value.Classes.Count; i++)
                    {
                        var item = x.Value.Classes[i];
                        if ((!item.Full && !item.Over) || (EditedChild != null && EditedChild.RegisteredCourses.Contains(item)))
                        {
                            if (num_childAge.Value >= x.Value.AcademicYearStart && num_childAge.Value <= x.Value.AcademicYearEnd)
                            {
                                var newAvailableCourse = new CheckedObject()
                                {
                                    Checked = false,
                                    Class   = item,
                                    Course  = x.Value,
                                };

                                if (Globals.Instructors.ToList().Exists(z => z.Value.TeachingCourses.Contains(item)))
                                {
                                    newAvailableCourse.Instructor = Globals.Instructors.Single(z => z.Value.TeachingCourses.Contains(item)).Value;
                                }
                                else
                                {
                                    newAvailableCourse.Instructor = new Instructor()
                                    {
                                        Name = "---"
                                    }
                                };                                                                     //HEHE XD

                                if (EditedChild != null && EditedChild.RegisteredCourses.Contains(item))
                                {
                                    newAvailableCourse.Checked = true;
                                }

                                courses_listView.Items.Add(newAvailableCourse);
                            }
                        }
                    }
                });
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }