public void charCreator(int sexselector, int factionselector, int recruitselector, int positionselector, int classselector, int rankselector,
                            int fetishselector, int beautyselector, int upbringselector, int raceselector, int racespecific, bool pregnantselector)
    {
        //public enum CharSex { Woman, Man, Dickgirl, Futanari, Cuntboy, Trap, Eunuch }; // 0 female, trap 5
        // faction: use 0
        //0 recruited, 1 enemy, 2 monster, 3 neutral, 4 your prisoner, 5 your slave
        // use 12 for retainer in position selector, 1000 for none
        //class: 0 soldier,1 warrior, 2 clerk, 3 bureaucrat, 4 monk/nun, 5 priest, 6 alchemist UNC, 7 mystic UNC, 8 thief, 9 infiltrator, 10 paladin, 11 dark paladin, 12 feral, 13 barbarian
        //14 scout, 15 ranger, 16 community worker, 17 w***e, 18 farmer, 19 industry worker, 20 politician, 21 diplomat, 22 inquisitor, 23 enforcer, 24 Performer, 25 Artist, 26 Scholar
        // 0 C, 1 B, 2 A, 3 S, 1000 random
        //	Fetish: 0 None, 1 Dominant, 2 Submissive, AnalWhore, GroupSex, CumSlut, Incest, Crossdressing, Exhibitionism, PetPlay, RapeFantasy, Voyeurism, Monsters, SizeDifference, 1000 random
        // beauty selector: 0, 20, 40, etc. up to 80+  enter more or less what you want from 0 to 100, it will be random. Any other number is a random
        //upbring:  VeryPoor, Poor, MiddleClass, Rich, VeryRich, Noble, Royal, Count, 1000 for random
        // race: 0 human, 1 furry, 2 avian. 3 aquatic, 4 exotics
        //race specific: 0 human, else check list
        // pregnant selector, use false to have her non pregnant. Need texts for pregnancy before adding this feature
        //race specific: 1000 random, check NPCSettlerRace for info



        charID = NPCControl.NPCGenID;          // id thats going to be used to look for him, should use a genNPC control for this
        NPCControl.NPCGenID += 1;

        charSexC     = npcSettlerSex.setSex(sexselector);
        charName     = npcSettlerName.setName(charSexC);
        charSurname  = npcSettlerName.setSurname();
        charGenderC  = npcSettlerSex.setGender(charSexC);
        cityFactionC = npcSettlerfaction.setFaction(factionselector);

        isRecruited = npcSettlerSide.recruitStatus(recruitselector);
        isEnemy     = npcSettlerSide.enemyStatus(recruitselector);
        isMonster   = npcSettlerSide.monsterStatus(recruitselector);
        isPrisoner  = npcSettlerSide.prisonerStatus(recruitselector);
        isNeutral   = npcSettlerSide.neutralStatus(recruitselector);
        isSlave     = npcSettlerSide.slaveStatus(recruitselector);

        cityPositionC = npcSettlerPosition.setPosition(positionselector);

        charClassC = npcSettlerClass.setClass(classselector);

        charRankC = npcSettlerRank.setRank(rankselector);

        charFetishC = npcSettlerFetish.setFetish(fetishselector);

        charPersonalityC = npcSettlerPersonAtt.setPersonality();

        attPhysical   = npcSettlerAttributes.setPhysical(charClassC);
        attMental     = npcSettlerAttributes.setMental(charClassC);
        attSocial     = npcSettlerAttributes.setSocial(charClassC);
        attMagicPower = npcSettlerAttributes.setMagicPower(charClassC);

        coreSkillMartial     = npcSettlerCoreSkills.setCoreMartial(charClassC);     //0
        coreSkillSecurity    = npcSettlerCoreSkills.setCoreSecurity(charClassC);
        coreSkillLabor       = npcSettlerCoreSkills.setCoreLabor(charClassC);
        coreSkillTactics     = npcSettlerCoreSkills.setCoreTactics(charClassC);
        coreSkillGovernance  = npcSettlerCoreSkills.setCoreGovernance(charClassC);
        coreSkillStewardship = npcSettlerCoreSkills.setStewardship(charClassC);
        coreSkillPersuasion  = npcSettlerCoreSkills.setCorePersuasion(charClassC);
        coreSkillIntrigue    = npcSettlerCoreSkills.setIntrigue(charClassC);
        coreSkillDiplomacy   = npcSettlerCoreSkills.setDiplomacy(charClassC);

        utilitySkillCrafting     = npcSettlerUtilitySkills.setUtilityCrafting(charClassC);
        utilitySkillHouseKeeping = npcSettlerUtilitySkills.setHouseKeeping(charClassC);
        utilitySkillFarmHand     = npcSettlerUtilitySkills.setUtilityFarm(charClassC);
        utilitySkillMedicine     = npcSettlerUtilitySkills.setUtilityMedicine(charClassC);
        utilitySkillAlchemy      = npcSettlerUtilitySkills.setUtilityAlchemy(charClassC);
        utilitySkillLearning     = npcSettlerUtilitySkills.setUtilityLearning(charClassC);
        utilitySkillPerformance  = npcSettlerUtilitySkills.setUtilityPerformance(charClassC);
        utilitySkillEtiquette    = npcSettlerUtilitySkills.setUtilityEtiquette(charClassC);
        utilitySkillStreetwise   = npcSettlerUtilitySkills.setUtilityStreetwise(charClassC);

        sexSkillMasseuse    = npcSettlerSexSkills.setSkillMasseuse(charClassC);
        sexSkillStripping   = npcSettlerSexSkills.setSkillStripping(charClassC);
        sexSkillBondage     = npcSettlerSexSkills.setSkillBondage(charClassC);
        sexSkillPetplay     = npcSettlerSexSkills.setSkillPetPlay(charClassC);
        sexSkillPetting     = npcSettlerSexSkills.setSkillPetting(charClassC);
        sexSkillGroupSex    = npcSettlerSexSkills.setSkillGroupSex(charClassC);
        sexSkillPenetration = npcSettlerSexSkills.setSkillDemonstration(charClassC);
        sexSkillWhoring     = npcSettlerSexSkills.setSkillWhoring(charClassC);
        sexSkillEscorting   = npcSettlerSexSkills.setSkillEscorting(charClassC);

        attBeauty      = npcSettlerPersonAtt.setBeauty(beautyselector);  //(ugly, plain, good looking, captivating, stunning)
        attTemperament = npcSettlerPersonAtt.setTemperament(charClassC); //(apathethic,cold, reserved, lively, passional)
        attWillpower   = npcSettlerPersonAtt.setWillpower(charClassC);   // (submissive, docile, humble, assertive, willful)
        attNature      = npcSettlerPersonAtt.setNature(charClassC);      //(spinless, coward, uncertain, brave, determined)
        attOpenness    = npcSettlerPersonAtt.setOpenness(charClassC);    //(Frigthened, uninterested, timid, open, unashamed)
        attDignity     = npcSettlerPersonAtt.setDignity(charClassC);     // how much self worth it has
        attObedience   = npcSettlerPersonAtt.setObedience(charClassC);
        attHappiness   = npcSettlerPersonAtt.setHappiness(charClassC);
        attLibido      = npcSettlerPersonAtt.setLibido(charClassC);    //
        attMorality    = npcSettlerPersonAtt.setMorality(charClassC);  // how good and bad, it can be corrupt good, it means the person is just twisted
        attPiety       = npcSettlerPersonAtt.setPiety(charClassC);

        bgUpbringC = npcSettlerBG.setUpbring(upbringselector);

        if (isPrisoner == true || isSlave == true || isNeutral == true)
        {
            charGold = 0;
        }
        else
        {
            charGold = npcSettlerBG.setGold(bgUpbringC);
        }

        bgChildhoodC = npcSettlerBG.setBGChildhood();
        bgAdulthoodC = npcSettlerBG.setBGAdulthood();

        bgStory [0] = npcSettlerBG.setChildStory(bgChildhoodC);
        bgStory [1] = npcSettlerBG.setAdultStory(bgAdulthoodC);
        bgStory [2] = npcSettlerBG.setCurrentStory(charClassC);


        charRaceC = npcSettlerRace.setRace(raceselector, racespecific);
        charRaceC = npcSettlerRace.adjustRaceGender(charRaceC, charSexC);

        charFurColorC = raceCreator.setFur(charRaceC);

        charFeatherColorC = raceCreator.setFeathers(charRaceC);

        charSkinColorC = raceCreator.setSkinColor(charRaceC);

        charSkinTypeC = raceCreator.setSkinType(charRaceC);

        dickTypeC = raceCreator.setDickType(charRaceC);

        lowerBackC = raceCreator.setLowerBack(charRaceC);

        shoulderBladesC = raceCreator.setShoulderBlades(charRaceC);

        headTypeC = raceCreator.setHeadType(charRaceC);

        //tailTypeC = raceCreator.setTailType (charRaceC);

        armsTypeC = raceCreator.setArms(charRaceC);

        legsTypeC = raceCreator.setLegs(charRaceC);

        headAccesory1C = raceCreator.setHeadAcc1(charRaceC);

        headAccesory2C = raceCreator.setHeadAcc2(charRaceC);

        eyesTypeC = raceCreator.setEyes(charRaceC);

        hasFur       = raceCreator.setHasFur(charRaceC);   // everyone uses the fur colours tho
        hasFeathers  = raceCreator.setHasFeathers(charRaceC);
        hasScales    = raceCreator.setHasScales(charRaceC);
        hasTentacles = raceCreator.setHasTentacles(charRaceC);
        isFlying     = raceCreator.setIsFlying(charRaceC);

        isFurry = raceCreator.setIsFurry(charRaceC);         // to determine portrait
        isFuta  = raceCreator.setIsFuta(charSexC);


        beardStyleC = npcSettlerHead.setBeardStyle(charSexC, charRaceC);

        beardLengthC = npcSettlerHead.setBeardLength(charSexC, charRaceC);

        hairColorC = npcSettlerHead.setHairColor();

        hairStyleC = npcSettlerHead.setHairStyle();

        hairTypeC = npcSettlerHead.setHairType(charRaceC);

        hairLengthCM = npcSettlerHead.setHairLengthCM();

        hairLengthC = npcSettlerHead.setHairLength(hairLengthCM);

        eyesColorC = npcSettlerHead.setEyesColor(charRaceC);

        genderBehaviorStat = npcSettlerPersonAtt.setBehaviorStat(charGenderC);
        genderBehaviorC    = npcSettlerPersonAtt.setGenderBehavior(genderBehaviorStat);

        facialFeaturesStat = npcSettlerHead.setFacialFeatStat(charGenderC);
        facialFeaturesC    = npcSettlerHead.setFacialFeat(facialFeaturesStat);

        bodyFeaturesStat = npcSettlerBody.setBodyFeatStat(charGenderC);
        bodyFeaturesC    = npcSettlerBody.setBodyFeatures(facialFeaturesStat);

        heightChar  = npcSettlerBody.SetHeightChar(charRaceC);        // in cm
        heightNameC = npcSettlerBody.setHeightName(heightChar);


        bodyPhysStat  = npcSettlerBody.SetBodyPhysStat();        // to change it, 0 to 100
        bodyPhysiqueC = npcSettlerBody.setBodyPhysique(bodyPhysStat);

        bodyBuildStat = npcSettlerBody.setBodyBuildStat();         // to change it
        bodyBuildC    = npcSettlerBody.setBodyBuild(bodyBuildStat);


        dickNum    = npcSettlerBody.setDickNum(charSexC);                //how many dicks it has
        dickSizeCM = npcSettlerBody.setDickSizeCM(heightChar, charSexC); // in cm
        dickSizeC  = npcSettlerBody.setDickSize(dickSizeCM);


        testicleSizeCM = npcSettlerBody.setTesticleSizeCM(charSexC, heightChar);
        testiclesSizeC = npcSettlerBody.setTesticlesSize(testicleSizeCM);         // in cm, used to determine if you have or not

        clitorisSize = npcSettlerBody.setClitorisSize();



        breastRow   = npcSettlerBody.setBreastRow(charRaceC);
        breast1Size = npcSettlerBody.setBreast1Size(charSexC, charRaceC); // to determine its current size. Each point is +1 cup, each X changes name, check NPCSettler
        breast2Size = npcSettlerBody.setBreast2Size(breastRow);           // to determine its current size. Each point is +1 cup, each X changes name, check NPCSettler

        breast1NameC = npcSettlerBody.setBreastName(breast1Size);
        breast2NameC = npcSettlerBody.setBreastName(breast2Size);

        breast1CupC = npcSettlerBody.setBreastCup(breast1Size);
        breast2CupC = npcSettlerBody.setBreastCup(breast2Size);


        areola1Size = npcSettlerBody.setAureoleSize(); // aerola size of the first row, 1 change, in cm
        areola2Size = areola1Size;                     // aerola size of the first row, 1 change, in cm



        waistSize  = npcSettlerBody.waistSize();
        waistNameC = npcSettlerBody.setWaistName(waistSize);

        hipsSize  = npcSettlerBody.setHipsSize(waistSize);
        hipsNameC = npcSettlerBody.setHipsName(hipsSize);

        assSize  = npcSettlerBody.setAssSize(hipsSize);
        assNameC = npcSettlerBody.setAssName(assSize);


        hasKnot       = npcSettlerFertility.setHasKnot(charRaceC);
        hasVagina     = npcSettlerFertility.setHasVagina(charSexC);
        isVirgin      = npcSettlerFertility.setIsVirgin(charRaceC);
        isFertile     = npcSettlerFertility.setIsFertile();
        charFertility = npcSettlerFertility.setCharFertility();
        isPregnant    = npcSettlerFertility.isPregnant(pregnantselector, charSexC);
        childRaceC    = npcSettlerFertility.setChildRace(charRaceC);
        pregnantCD    = npcSettlerFertility.setPregnantCD(isPregnant);            // turns until giving birth
        pregnantText  = npcSettlerFertility.pregnantText(isPregnant, childRaceC); //
        isLactating   = isPregnant;
        lactationML   = npcSettlerFertility.setLactationML(charRaceC);            // how much it lactates in ml


        vagLooseness = npcSettlerFertility.setVagLooseness(isVirgin);
        vagLoose     = npcSettlerFertility.setVagLoose(vagLooseness);


        maxHealth     = npcSettlerCombatStats.setMaxHealth(charRaceC);
        currentHealth = maxHealth;

        maxArousal     = npcSettlerCombatStats.setMaxArousal(charRaceC);
        currentArousal = 0;

        maxMP     = npcSettlerCombatStats.setMaxMP(charRaceC, charClassC);
        currentMP = maxMP;



        // power and politics
        charReputation = npcSettlerPosition.setCharReputation(cityPositionC, charClassC);
        politicalPower = npcSettlerPosition.setPoliticalPower(cityPositionC);

        charAgeC = npcSettlerPersonAtt.setCharAge(charRaceC);


        charLoyalty    = npcSettlerPersonAtt.setLoyalty(charRaceC, charClassC);
        charCorruption = npcSettlerPersonAtt.setCorruption(charRaceC, charClassC);
        int i;

        i = 0;
        while (i < 8)
        {
            charAddictions [i] = npcSettlerPersonAtt.setAddiction(i, charRaceC, charClassC);
            i++;
        }

        charValue = npcSettlerPersonAtt.setCharValue(charRankC, charClassC, bgUpbringC, charRaceC, attBeauty, attWillpower, attObedience);



        //	public List<NPCData.CharTraits> charTraits;

        TempList.Clear();

        setChar();

        TempList[0].charTattoos = new string[18];
        i = 0;
        while (i < 18)
        {
            TempList[0].charTattoos[i] = "";
            i++;
        }

        TempList[0].charPiercings = new string[21];
        i = 0;
        while (i < 21)
        {
            TempList[0].charPiercings[i] = "";
            i++;
        }

        TempList[0].charEquipment = new int[12];
        i = 0;
        while (i < 12)
        {
            TempList[0].charEquipment[i] = npcSettlerEquip.setCharEquipment(i, bgUpbringC, charClassC, charRaceC);
            i++;
        }
        //CHANGE TO SOMETHING MORE DYNAMIC... LATER
        TempList [0].charDodge = 10;

        NPCSettlerTraits.trait1 = 1000; NPCSettlerTraits.trait2 = 1000;  NPCSettlerTraits.trait3 = 1000; NPCSettlerTraits.trait4 = 1000; NPCSettlerTraits.trait5 = 1000; NPCSettlerTraits.trait6 = 1000; NPCSettlerTraits.trait7 = 1000; NPCSettlerTraits.trait8 = 1000; NPCSettlerTraits.trait9 = 1000; NPCSettlerTraits.trait10 = 1000;

        i = 0;
        while (i < 10)
        {
            i++;

            TempList[0].charTraits.Add(npcSettlerTraits.setTrait(i, charClassC, charRaceC, charPersonalityC, bgUpbringC, attBeauty, charSexC));
        }

        i = TempList[0].charTraits.Count;
        while (i > 0)
        {
            i--;

            if (TempList[0].charTraits[i] == NPCData.CharTraits.NONE)
            {
                TempList[0].charTraits.RemoveAt(i);
            }
        }

        int count = TempList[0].charTraits.Count;

        i = 0;
        while (i < count)
        {
            npcSettlerTraitsBonus.setTraitBonus(TempList[0].charTraits[i]);
            i++;
        }

        npcSettlerRankAdjustment.rankAdjustment();


        i = 0;
        while (i < 4)
        {
            iterator += 1;
            Random.InitState(hashcode + WorldControl.day * System.DateTime.Now.Millisecond + iterator);
            if (i >= 2 && Random.Range(0, 100) >= 85)
            {
                break;
            }
            attacksTempList.Add(npcSettlerAttacks.classAttacks(charClassC, charRaceC));
            i++;
        }

        i = 0;
        while (i < 4)
        {
            iterator += 1;
            Random.InitState(hashcode + WorldControl.day * System.DateTime.Now.Millisecond + iterator);
            if (i >= 2 && Random.Range(0, 100) >= 85)
            {
                break;
            }
            attacksTempList.Add(npcSettlerAttacks.raceAttacks(charRaceC));
            i++;
        }

        List <NPCData.CharAttacks> attacksDistinctList = attacksTempList.Distinct().ToList();

        foreach (NPCData.CharAttacks value in attacksDistinctList)
        {
            TempList [0].charAttacks.Add(value);
        }



        NPCSettlerPortrait.createPortrait();



        if (isRecruited == true && isPrisoner == false && isSlave == false)
        {
            NPCCharList.CharRetainers.Add(TempList [0]);
        }
        if (isEnemy == true && isPrisoner == false && isSlave == false)
        {
            NPCCharList.CharEnemies.Add(TempList [0]);
        }
        if (isNeutral == true)
        {
            NPCCharList.CharRetainers.Add(TempList [0]);

            //NPCCharList.CharNeutral.Add (TempList [0]);
        }
        if (isMonster == true)
        {
            //this is for debug, remove
            NPCCharList.CharMonster.Add(TempList[0]);
        }
        if (isPrisoner == true && isRecruited == true)
        {
            NPCCharList.CharRetainerPrisoner.Add(TempList [0]);
        }
        if (isSlave == true && isRecruited == true)
        {
            NPCCharList.CharRetainers.Add(TempList [0]);
        }
        if (isPrisoner == true && isEnemy == true)
        {
            NPCCharList.CharEnemyPrisoner.Add(TempList [0]);
        }
        if (isSlave == true && isEnemy == true)
        {
            NPCCharList.CharEnemySlave.Add(TempList [0]);
        }



        //	 attStyle; sets after equipment, use the dedicated settler in game for this
    }
    static void createAccFront()
    {
        NPCData.HeadAccesory1 headAcc1 = NPCCreator.TempList [0].headAccesory1;
        // add to ignore if update after creation
        switch (headAcc1)
        {
        case NPCData.HeadAccesory1.DemonicHorns:
            if (NPCCreator.TempList [0].headType != NPCData.HeadType.HUMAN)
            {
                NPCCreator.TempList [0].charPortraitLayer0 = 0;
                NPCCreator.TempList [0].charPortraitLayer0 = 0;
                break;
            }
            if (NPCCreator.TempList [0].charCorruption > 75)
            {
                NPCCreator.TempList [0].charPortraitLayer0 = 2003;
                NPCCreator.TempList [0].charPortraitLayer5 = 2003;
            }
            else if (NPCCreator.TempList [0].charCorruption > 50)
            {
                NPCCreator.TempList [0].charPortraitLayer0 = 2002;
                NPCCreator.TempList [0].charPortraitLayer5 = 2002;
            }
            else if (NPCCreator.TempList [0].charCorruption > 25)
            {
                NPCCreator.TempList [0].charPortraitLayer0 = 2001;
                NPCCreator.TempList [0].charPortraitLayer5 = 2001;
            }
            else
            {
                NPCCreator.TempList [0].charPortraitLayer0 = 2000;
                NPCCreator.TempList [0].charPortraitLayer5 = 2000;
            }
            break;

        case NPCData.HeadAccesory1.dragonHorns:
            int randNum = Random.Range(0, 3);
            switch (randNum)
            {
            case 0:
                NPCCreator.TempList [0].charPortraitLayer0 = 4000;
                NPCCreator.TempList [0].charPortraitLayer5 = 4000;
                break;

            case 1:
                NPCCreator.TempList [0].charPortraitLayer0 = 4010;
                NPCCreator.TempList [0].charPortraitLayer5 = 4010;
                break;

            case 2:
                NPCCreator.TempList [0].charPortraitLayer0 = 4020;
                NPCCreator.TempList [0].charPortraitLayer5 = 4020;
                break;

            default:
                NPCCreator.TempList [0].charPortraitLayer0 = 4030;
                break;
            }
            break;

        default:
            NPCCreator.TempList [0].charPortraitLayer0 = 0;
            break;
        }
    }