public BritishPersona(Ped _ped, LicenceTypes _LicenceType, LicenceStatuses _LicenceStatus, int _PenaltyPoints, bool _CarryingLicence) : this(_ped)
 {
     if (!_ped.Exists())
     {
         AllBritishPersona.Remove(this); return;
     }
     foreach (BritishPersona pers in AllBritishPersona.ToArray())
     {
         if (pers.ped == _ped && pers != this)
         {
             AllBritishPersona.Remove(pers);
         }
     }
     ped = _ped;
     if (ped.Exists())
     {
         _LSPDFRPersona = LSPD_First_Response.Mod.API.Functions.GetPersonaForPed(ped);
         if (ped.IsInAnyVehicle(false))
         {
             VehicleRecords.VerifyVehicleRecordsExist(ped.CurrentVehicle);
         }
         foreach (BritishPersona pers in AllBritishPersona.ToArray())
         {
             if (pers.ped == ped && pers != this)
             {
                 AllBritishPersona.Remove(pers);
             }
         }
     }
     LicenceType     = _LicenceType;
     LicenceStatus   = _LicenceStatus;
     PenaltyPoints   = _PenaltyPoints;
     CarryingLicence = _CarryingLicence;
 }
        /// <summary>
        /// Constructor that sets values based off the LSPDFR API
        /// </summary>
        /// <param name="_ped"></param>
        public BritishPersona(Ped _ped) : this(LSPD_First_Response.Mod.API.Functions.GetPersonaForPed(_ped))
        {
            if (!_ped.Exists())
            {
                Game.LogTrivial("PED DOESNT EXIST"); AllBritishPersona.Remove(this); return;
            }

            foreach (BritishPersona pers in AllBritishPersona.ToArray())
            {
                if (pers.ped == _ped && pers != this)
                {
                    AllBritishPersona.Remove(pers);
                }
            }
            ped = _ped;
            if (ped.Exists())
            {
                _LSPDFRPersona = LSPD_First_Response.Mod.API.Functions.GetPersonaForPed(ped);
                if (ped.IsInAnyVehicle(false))
                {
                    VehicleRecords.VerifyVehicleRecordsExist(ped.CurrentVehicle);
                }
                foreach (BritishPersona pers in AllBritishPersona.ToArray())
                {
                    if (pers.ped == ped && pers != this)
                    {
                        AllBritishPersona.Remove(pers);
                    }
                }
            }
            int roll = Main.rnd.Next(10);

            if (roll < 6)
            {
                LicenceType = LicenceTypes.Full;
            }
            else
            {
                //If ped is driving a vehicle with a passenger
                if (_ped.IsInAnyVehicle(false))
                {
                    if (_ped.CurrentVehicle.Driver == _ped)
                    {
                        if (!_ped.CurrentVehicle.IsSeatFree(0))
                        {
                            if (Main.rnd.Next(4) < 3)
                            {
                                LicenceType = LicenceTypes.Provisional;
                            }
                            else
                            {
                                LicenceType = LicenceTypes.None;
                            }
                        }
                    }
                }
                else
                {
                    roll = Main.rnd.Next(4);
                    if (roll < 2)
                    {
                        LicenceType = LicenceTypes.Provisional;
                    }
                    else
                    {
                        LicenceType = LicenceTypes.None;
                    }
                }
            }
            FullyCompInsured = Main.rnd.Next(8) == 0;
            int Citations = LSPDFRPersona.Citations;

            PenaltyPoints = Citations * 3;

            if (LSPDFRPersona.ELicenseState == ELicenseState.Valid)
            {
                LicenceStatus = LicenceStatuses.Valid;
            }
            else if (LSPDFRPersona.ELicenseState == ELicenseState.Suspended)
            {
                if (Main.rnd.Next(6) < 4)
                {
                    LicenceStatus = LicenceStatuses.Disqualified;
                }
                else
                {
                    LicenceStatus = LicenceStatuses.Revoked;
                }
            }
            else if (LSPDFRPersona.ELicenseState == ELicenseState.Expired)
            {
                LicenceStatus = LicenceStatuses.Expired;
            }
            else
            {
                LicenceStatus = LicenceStatuses.Valid;
            }

            if (LicenceStatus == LicenceStatuses.Disqualified || LicenceStatus == LicenceStatuses.Revoked || LicenceType == LicenceTypes.None)
            {
                CarryingLicence = false;
            }
            else
            {
                CarryingLicence = Main.rnd.Next(6) < 4;
            }
        }