private void button_CustomRace_Click(object sender, RoutedEventArgs e)
        {
            string response = PromptDialog.Prompt("Enter your custom value:", "Custom Value", false);

            if (!string.IsNullOrWhiteSpace(response))
            {
                CharacterRaceOption custom = new CharacterRaceOption(response)
                {
                    IsChecked = true
                };
                ((CharacterNote)DataContext).Races.AddChild(custom);
            }
        }
示例#2
0
        public static void AddDefaultRaces(IdeaTreeTemplate defaultTemplate)
        {
            // Racial groups are organized primarily by predominant shared physical characteristics,
            // to simplify the use of modifiers targeted by race which adjust the probability of certain
            // features, such as hair or eye color, etc.

            // Within these physically-organized groups, specific cultural or national backgrounds are
            // provided, with the primary intention of allowing culturally-relevant name generation.

            // Only major countries (with >5 million citizens) are included in the default template,
            // for simplicity's sake.

            // Some major countries are omitted due to a lack of readily-accessible, reliable lists
            // of common local names. Rather than have name selection fall back on the (probably inappropriate)
            // default culture, the country is omitted. It is left to users to add any missing cultures, and
            // appropriate lists of names, on an as-needed basis.

            // There are also a handful of major countries which are omitted because their cultural naming conventions
            // are too different from most other cultures to be generated according to the same 'first name and surname'
            // pattern. It is again left to users to add any missing cultures, and generate names in a manner deemed
            // appropriate, on an as-needed basis.

            #region Asian

            CharacterRaceOption race = new CharacterRaceOption("Asian") { IsChoice = true, IsManualMultiSelect = true };
            CharacterRaceOption subRace = new CharacterRaceOption("Central Asian") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Afghani")
            {
                MaleNameFile = @"NameFiles\Middle Eastern\male_names.txt",
                FemaleNameFile = @"NameFiles\Middle Eastern\female_names.txt",
                SurnameFile = @"NameFiles\Middle Eastern\surnames.txt"
            });
            bool canCreateNames = canCreateNames = CreateNameFiles(@"NameFiles\Middle Eastern");
            subRace.AddChild(new CharacterRaceOption("Kazakh")
            {
                MaleNameFile = @"NameFiles\Asian\Central Asian\Kazakh\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Central Asian\Kazakh\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Central Asian\Kazakh\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Central Asian\Kazakh");
            race.AddChild(subRace);
            subRace = new CharacterRaceOption("Eastern Asian") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Chinese")
            {
                MaleNameFile = @"NameFiles\Asian\Eastern Asian\Chinese\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Eastern Asian\Chinese\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Eastern Asian\Chinese\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Eastern Asian\Chinese");
            subRace.AddChild(new CharacterRaceOption("Japanese")
            {
                MaleNameFile = @"NameFiles\Asian\Eastern Asian\Japanese\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Eastern Asian\Japanese\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Eastern Asian\Japanese\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Eastern Asian\Japanese");
            subRace.AddChild(new CharacterRaceOption("Korean")
            {
                MaleNameFile = @"NameFiles\Asian\Eastern Asian\Korean\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Eastern Asian\Korean\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Eastern Asian\Korean\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Eastern Asian\Korean");
            race.AddChild(subRace);
            subRace = new CharacterRaceOption("Southeast Asian") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Cambodian")
            {
                MaleNameFile = @"NameFiles\Asian\Southeast Asian\Cambodian\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southeast Asian\Cambodian\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southeast Asian\Cambodian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Southeast Asian\Cambodian");
            subRace.AddChild(new CharacterRaceOption("Filipino")
            {
                MaleNameFile = @"NameFiles\Asian\Southeast Asian\Filipino\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southeast Asian\Filipino\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southeast Asian\Filipino\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Southeast Asian\Filipino");
            subRace.AddChild(new CharacterRaceOption("Indonesian")
            {
                MaleNameFile = @"NameFiles\Asian\Southeast Asian\Indonesian\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southeast Asian\Indonesian\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southeast Asian\Indonesian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Southeast Asian\Indonesian");
            subRace.AddChild(new CharacterRaceOption("Malaysian")
            {
                MaleNameFile = @"NameFiles\Asian\Southeast Asian\Malaysian\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southeast Asian\Malaysian\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southeast Asian\Malaysian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Southeast Asian\Malaysian");
            subRace.AddChild(new CharacterRaceOption("Thai")
            {
                MaleNameFile = @"NameFiles\Asian\Southeast Asian\Thai\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southeast Asian\Thai\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southeast Asian\Thai\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Southeast Asian\Thai");
            subRace.AddChild(new CharacterRaceOption("Vietnamese")
            {
                MaleNameFile = @"NameFiles\Asian\Southeast Asian\Vietnamese\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southeast Asian\Vietnamese\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southeast Asian\Vietnamese\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Southeast Asian\Vietnamese");
            race.AddChild(subRace);
            subRace = new CharacterRaceOption("Southern Asian") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Bangladeshi")
            {
                MaleNameFile = @"NameFiles\Asian\Southern Asian\Bangladeshi\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southern Asian\Bangladeshi\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southern Asian\Bangladeshi\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Southern Asian\Bangladeshi");
            subRace.AddChild(new CharacterRaceOption("Indian")
            {
                MaleNameFile = @"NameFiles\Asian\Southern Asian\Indian\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southern Asian\Indian\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southern Asian\Indian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Southern Asian\Indian");
            subRace.AddChild(new CharacterRaceOption("Nepalese")
            {
                MaleNameFile = @"NameFiles\Asian\Southern Asian\Nepalese\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southern Asian\Nepalese\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southern Asian\Nepalese\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Asian\Southern Asian\Nepalese");
            subRace.AddChild(new CharacterRaceOption("Pakistani")
            {
                MaleNameFile = @"NameFiles\Middle Eastern\male_names.txt",
                FemaleNameFile = @"NameFiles\Middle Eastern\female_names.txt",
                SurnameFile = @"NameFiles\Middle Eastern\surnames.txt"
            });
            race.AddChild(subRace);
            defaultTemplate.CharacterTemplate.Races.AddChild(race);

            #endregion Asian

            #region Black

            race = new CharacterRaceOption("Black") { IsChoice = true, IsManualMultiSelect = true };
            subRace = new CharacterRaceOption("African") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Eastern African")
            {
                MaleNameFile = @"NameFiles\Black\African\Eastern African\male_names.txt",
                FemaleNameFile = @"NameFiles\Black\African\Eastern African\female_names.txt",
                SurnameFile = @"NameFiles\Black\African\Eastern African\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Black\African\Eastern African");
            subRace.AddChild(new CharacterRaceOption("Southern African")
            {
                MaleNameFile = @"NameFiles\Black\African\Southern African\male_names.txt",
                FemaleNameFile = @"NameFiles\Black\African\Southern African\female_names.txt",
                SurnameFile = @"NameFiles\Black\African\Southern African\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Black\African\Southern African");
            subRace.AddChild(new CharacterRaceOption("Western African")
            {
                MaleNameFile = @"NameFiles\Black\African\Western African\male_names.txt",
                FemaleNameFile = @"NameFiles\Black\African\Western African\female_names.txt",
                SurnameFile = @"NameFiles\Black\African\Western African\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Black\African\Western African");
            race.AddChild(subRace);
            subRace = new CharacterRaceOption("American") { IsChoice = true, IsManualMultiSelect = true };
            CharacterRaceOption subSubRace = new CharacterRaceOption("Caribbean Islander") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Cuban")
            {
                MaleNameFile = @"NameFiles\Hispanic\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\surnames.txt"
            });
            subSubRace.AddChild(new CharacterRaceOption("Dominican")
            {
                MaleNameFile = @"NameFiles\Hispanic\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\surnames.txt"
            });
            subSubRace.AddChild(new CharacterRaceOption("Haitian")
            {
                MaleNameFile = @"NameFiles\Black\American\Caribbean Islander\Haitian\male_names.txt",
                FemaleNameFile = @"NameFiles\Black\American\Caribbean Islander\Haitian\female_names.txt",
                SurnameFile = @"NameFiles\Black\American\Caribbean Islander\Haitian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Black\American\Caribbean Islander\Haitian");
            subRace.AddChild(subSubRace);
            subSubRace = new CharacterRaceOption("Central American")
            {
                IsChoice = true, IsManualMultiSelect = true,
                MaleNameFile = @"NameFiles\Hispanic\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\surnames.txt"
            };
            subSubRace.AddChild(new CharacterRaceOption("Salvadorian"));
            subSubRace.AddChild(new CharacterRaceOption("Guatemalan"));
            subSubRace.AddChild(new CharacterRaceOption("Honduran"));
            subSubRace.AddChild(new CharacterRaceOption("Nicaraguan"));
            subRace.AddChild(subSubRace);
            subSubRace = new CharacterRaceOption("North American") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Canadian")
            {
                MaleNameFile = @"NameFiles\Caucasian\American\North American\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\American\North American\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\American\North American\surnames.txt"
            });
            subSubRace.AddChild(new CharacterRaceOption("Mexican")
            {
                MaleNameFile = @"NameFiles\Hispanic\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\surnames.txt"
            });
            subSubRace.AddChild(new CharacterRaceOption("United States African American")
            {
                MaleNameFile = @"NameFiles\Black\American\North American\United States American\male_names.txt",
                FemaleNameFile = @"NameFiles\Black\American\North American\United States American\female_names.txt",
                SurnameFile = @"NameFiles\Black\American\North American\United States American\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Black\American\North American\United States American");
            subRace.AddChild(subSubRace);
            subSubRace = new CharacterRaceOption("South American")
            {
                IsChoice = true,
                IsManualMultiSelect = true,
                MaleNameFile = @"NameFiles\Hispanic\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\surnames.txt"
            };
            subSubRace.AddChild(new CharacterRaceOption("Argentinian"));
            subSubRace.AddChild(new CharacterRaceOption("Bolivian"));
            subSubRace.AddChild(new CharacterRaceOption("Brazilian")
            {
                MaleNameFile = @"NameFiles\Hispanic\European\Portuguese\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\European\Portuguese\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\European\Portuguese\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Hispanic\European\Portuguese");
            subSubRace.AddChild(new CharacterRaceOption("Chilean"));
            subSubRace.AddChild(new CharacterRaceOption("Colombian"));
            subSubRace.AddChild(new CharacterRaceOption("Ecuadorian"));
            subSubRace.AddChild(new CharacterRaceOption("Peruvian"));
            subSubRace.AddChild(new CharacterRaceOption("Venezuelan"));
            subRace.AddChild(subSubRace);
            race.AddChild(subRace);
            subRace = new CharacterRaceOption("European") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Black English")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Northern European\English\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Northern European\English\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Northern European\English\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Northern European\English");
            subRace.AddChild(new CharacterRaceOption("French")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Western European\French\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Western European\French\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Western European\French\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Western European\French");
            subRace.AddChild(new CharacterRaceOption("Spanish")
            {
                MaleNameFile = @"NameFiles\Hispanic\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\surnames.txt"
            });
            race.AddChild(subRace);
            defaultTemplate.CharacterTemplate.Races.AddChild(race);

            #endregion Black

            #region Caucasian

            race = new CharacterRaceOption("Caucasian") { IsDefault = true, IsChoice = true, IsManualMultiSelect = true };
            subRace = new CharacterRaceOption("American") { IsDefault = true, IsChoice = true, IsManualMultiSelect = true };
            subSubRace = new CharacterRaceOption("North American")
            {
                IsDefault = true, IsChoice = true, IsManualMultiSelect = true,
                MaleNameFile = @"NameFiles\Caucasian\American\North American\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\American\North American\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\American\North American\surnames.txt"
            };
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\American\North American");
            subSubRace.AddChild(new CharacterRaceOption("Canadian"));
            subSubRace.AddChild(new CharacterRaceOption("United States American") { IsDefault = true });
            subRace.AddChild(subSubRace);
            race.AddChild(subRace);
            race.AddChild(new CharacterRaceOption("Australian")
            {
                MaleNameFile = @"NameFiles\Caucasian\Australian\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\Australian\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\Australian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\Australian");
            subRace = new CharacterRaceOption("European") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace = new CharacterRaceOption("Eastern European") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Czech")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Czech\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Czech\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Eastern European\Czech\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Eastern European\Czech");
            subSubRace.AddChild(new CharacterRaceOption("Polish")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Polish\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Polish\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Eastern European\Polish\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Eastern European\Polish");
            subSubRace.AddChild(new CharacterRaceOption("Romanian")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Romanian\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Romanian\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Eastern European\Romanian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Eastern European\Romanian");
            subSubRace.AddChild(new CharacterRaceOption("Russian")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Russian\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Russian\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Eastern European\Russian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Eastern European\Russian");
            subSubRace.AddChild(new CharacterRaceOption("Ukrainian")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Ukrainian\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Eastern European\Ukrainian\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Eastern European\Ukrainian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Eastern European\Ukrainian");
            subRace.AddChild(subSubRace);
            subSubRace = new CharacterRaceOption("Northern European") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Danish")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Northern European\Danish\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Northern European\Danish\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Northern European\Danish\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Northern European\Danish");
            subSubRace.AddChild(new CharacterRaceOption("English")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Northern European\English\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Northern European\English\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Northern European\English\surnames.txt"
            });
            subSubRace.AddChild(new CharacterRaceOption("Finnish")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Northern European\Finnish\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Northern European\Finnish\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Northern European\Finnish\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Northern European\Finnish");
            subSubRace.AddChild(new CharacterRaceOption("Irish")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Northern European\Irish\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Northern European\Irish\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Northern European\Irish\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Northern European\Irish");
            subSubRace.AddChild(new CharacterRaceOption("Norwegian")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Northern European\Norwegian\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Northern European\Norwegian\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Northern European\Norwegian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Northern European\Norwegian");
            subSubRace.AddChild(new CharacterRaceOption("Scottish")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Northern European\Scottish\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Northern European\Scottish\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Northern European\Scottish\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Northern European\Scottish");
            subSubRace.AddChild(new CharacterRaceOption("Swedish")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Northern European\Swedish\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Northern European\Swedish\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Northern European\Swedish\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Northern European\Swedish");
            subRace.AddChild(subSubRace);
            subSubRace = new CharacterRaceOption("Southern European") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Greek")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Southern European\Greek\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Southern European\Greek\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Southern European\Greek\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Southern European\Greek");
            subSubRace.AddChild(new CharacterRaceOption("Italian")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Southern European\Italian\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Southern European\Italian\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Southern European\Italian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Southern European\Italian");
            subSubRace.AddChild(new CharacterRaceOption("Serbian")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Southern European\Serbian\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Southern European\Serbian\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Southern European\Serbian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Southern European\Serbian");
            subRace.AddChild(subSubRace);
            subSubRace = new CharacterRaceOption("Western European") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Austrian")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Western European\Austrian\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Western European\Austrian\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Western European\Austrian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Western European\Austrian");
            subSubRace.AddChild(new CharacterRaceOption("Belgian")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Western European\Belgian\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Western European\Belgian\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Western European\Belgian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Western European\Belgian");
            subSubRace.AddChild(new CharacterRaceOption("Dutch")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Western European\Dutch\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Western European\Dutch\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Western European\Dutch\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Western European\Dutch");
            subSubRace.AddChild(new CharacterRaceOption("French")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Western European\French\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Western European\French\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Western European\French\surnames.txt"
            });
            subSubRace.AddChild(new CharacterRaceOption("German")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Western European\German\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Western European\German\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Western European\German\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Western European\German");
            subSubRace.AddChild(new CharacterRaceOption("Swiss")
            {
                MaleNameFile = @"NameFiles\Caucasian\European\Western European\Swiss\male_names.txt",
                FemaleNameFile = @"NameFiles\Caucasian\European\Western European\Swiss\female_names.txt",
                SurnameFile = @"NameFiles\Caucasian\European\Western European\Swiss\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Caucasian\European\Western European\Swiss");
            subRace.AddChild(subSubRace);
            race.AddChild(subRace);
            defaultTemplate.CharacterTemplate.Races.AddChild(race);

            #endregion Caucasian

            #region Hispanic

            race = new CharacterRaceOption("Hispanic")
            {
                IsChoice = true, IsManualMultiSelect = true,
                MaleNameFile = @"NameFiles\Hispanic\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\surnames.txt"
            };
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Hispanic");
            subRace = new CharacterRaceOption("American") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace = new CharacterRaceOption("Caribbean Islander") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Cuban"));
            subSubRace.AddChild(new CharacterRaceOption("Dominican"));
            subRace.AddChild(subSubRace);
            subSubRace = new CharacterRaceOption("Central American") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Salvadorian"));
            subSubRace.AddChild(new CharacterRaceOption("Guatemalan"));
            subSubRace.AddChild(new CharacterRaceOption("Honduran"));
            subSubRace.AddChild(new CharacterRaceOption("Nicaraguan"));
            subRace.AddChild(subSubRace);
            subSubRace = new CharacterRaceOption("North American") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Canadian"));
            subSubRace.AddChild(new CharacterRaceOption("Mexican"));
            subSubRace.AddChild(new CharacterRaceOption("United States Hispanic American"));
            subRace.AddChild(subSubRace);
            subSubRace = new CharacterRaceOption("South American") { IsChoice = true, IsManualMultiSelect = true };
            subSubRace.AddChild(new CharacterRaceOption("Argentinian"));
            subSubRace.AddChild(new CharacterRaceOption("Bolivian"));
            subSubRace.AddChild(new CharacterRaceOption("Brazilian")
            {
                MaleNameFile = @"NameFiles\Hispanic\European\Portuguese\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\European\Portuguese\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\European\Portuguese\surnames.txt"
            });
            subSubRace.AddChild(new CharacterRaceOption("Chilean"));
            subSubRace.AddChild(new CharacterRaceOption("Colombian"));
            subSubRace.AddChild(new CharacterRaceOption("Ecuadorian"));
            subSubRace.AddChild(new CharacterRaceOption("Peruvian"));
            subSubRace.AddChild(new CharacterRaceOption("Venezuelan"));
            subRace.AddChild(subSubRace);
            race.AddChild(subRace);
            subRace = new CharacterRaceOption("European") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Portuguese")
            {
                MaleNameFile = @"NameFiles\Hispanic\European\Portuguese\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\European\Portuguese\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\European\Portuguese\surnames.txt"
            });
            subRace.AddChild(new CharacterRaceOption("Spanish"));
            race.AddChild(subRace);
            race.AddChild(new CharacterRaceOption("Filipino")
            {
                MaleNameFile = @"NameFiles\Asian\Southeast Asian\Filipino\male_names.txt",
                FemaleNameFile = @"NameFiles\Asian\Southeast Asian\Filipino\female_names.txt",
                SurnameFile = @"NameFiles\Asian\Southeast Asian\Filipino\surnames.txt"
            });
            defaultTemplate.CharacterTemplate.Races.AddChild(race);

            #endregion Hispanic

            #region Indigenous Peoples

            race = new CharacterRaceOption("Indigenous Peoples") { IsChoice = true, IsManualMultiSelect = true, AllowsNone = true };
            subRace = new CharacterRaceOption("Indigenous American") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Indigenous Central American")
            {
                MaleNameFile = @"NameFiles\Hispanic\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\surnames.txt"
            });
            subRace.AddChild(new CharacterRaceOption("Indigenous North American")
            {
                MaleNameFile = @"NameFiles\Indigenous Peoples\Indigenous American\Indigenous North American\male_names.txt",
                FemaleNameFile = @"NameFiles\Indigenous Peoples\Indigenous American\Indigenous North American\female_names.txt",
                SurnameFile = @"NameFiles\Indigenous Peoples\Indigenous American\Indigenous North American\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Indigenous Peoples\Indigenous American\Indigenous North American");
            subRace.AddChild(new CharacterRaceOption("Indigenous South American")
            {
                MaleNameFile = @"NameFiles\Hispanic\male_names.txt",
                FemaleNameFile = @"NameFiles\Hispanic\female_names.txt",
                SurnameFile = @"NameFiles\Hispanic\surnames.txt"
            });
            race.AddChild(subRace);
            race.AddChild(new CharacterRaceOption("Indigenous Australian")
            {
                MaleNameFile = @"NameFiles\Indigenous Peoples\Indigenous Australian\male_names.txt",
                FemaleNameFile = @"NameFiles\Indigenous Peoples\Indigenous Australian\female_names.txt",
                SurnameFile = @"NameFiles\Indigenous Peoples\Indigenous Australian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Indigenous Peoples\Indigenous Australian");
            race.AddChild(new CharacterRaceOption("Oceania Native")
            {
                MaleNameFile = @"NameFiles\Indigenous Peoples\Oceania Native\male_names.txt",
                FemaleNameFile = @"NameFiles\Indigenous Peoples\Oceania Native\female_names.txt",
                SurnameFile = @"NameFiles\Indigenous Peoples\Oceania Native\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Indigenous Peoples\Oceania Native");
            defaultTemplate.CharacterTemplate.Races.AddChild(race);

            #endregion Indigenous Peoples

            #region Middle Eastern

            race = new CharacterRaceOption("Middle Eastern")
            {
                IsChoice = true, IsManualMultiSelect = true,
                MaleNameFile = @"NameFiles\Middle Eastern\male_names.txt",
                FemaleNameFile = @"NameFiles\Middle Eastern\female_names.txt",
                SurnameFile = @"NameFiles\Middle Eastern\surnames.txt"
            };
            subRace = new CharacterRaceOption("Northern African") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Algerian"));
            subRace.AddChild(new CharacterRaceOption("Egyptian"));
            subRace.AddChild(new CharacterRaceOption("Moroccan"));
            subRace.AddChild(new CharacterRaceOption("Sudanese"));
            subRace.AddChild(new CharacterRaceOption("Tunisian"));
            race.AddChild(subRace);
            subRace = new CharacterRaceOption("Western Asian") { IsChoice = true, IsManualMultiSelect = true };
            subRace.AddChild(new CharacterRaceOption("Azerbaijani")
            {
                MaleNameFile = @"NameFiles\Middle Eastern\Western Asian\Azerbaijani\male_names.txt",
                FemaleNameFile = @"NameFiles\Middle Eastern\Western Asian\Azerbaijani\female_names.txt",
                SurnameFile = @"NameFiles\Middle Eastern\Western Asian\Azerbaijani\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Middle Eastern\Western Asian\Azerbaijani");
            subRace.AddChild(new CharacterRaceOption("Emirati"));
            subRace.AddChild(new CharacterRaceOption("Iranian")
            {
                MaleNameFile = @"NameFiles\Middle Eastern\Western Asian\Iranian\male_names.txt",
                FemaleNameFile = @"NameFiles\Middle Eastern\Western Asian\Iranian\female_names.txt",
                SurnameFile = @"NameFiles\Middle Eastern\Western Asian\Iranian\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Middle Eastern\Western Asian\Iranian");
            subRace.AddChild(new CharacterRaceOption("Iraqi"));
            subRace.AddChild(new CharacterRaceOption("Israeli")
            {
                MaleNameFile = @"NameFiles\Middle Eastern\Western Asian\Israeli\male_names.txt",
                FemaleNameFile = @"NameFiles\Middle Eastern\Western Asian\Israeli\female_names.txt",
                SurnameFile = @"NameFiles\Middle Eastern\Western Asian\Israeli\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Middle Eastern\Western Asian\Israeli");
            subRace.AddChild(new CharacterRaceOption("Jordanian"));
            subRace.AddChild(new CharacterRaceOption("Palestinian"));
            subRace.AddChild(new CharacterRaceOption("Saudi"));
            subRace.AddChild(new CharacterRaceOption("Syrian"));
            subRace.AddChild(new CharacterRaceOption("Turkish")
            {
                MaleNameFile = @"NameFiles\Middle Eastern\Western Asian\Turkish\male_names.txt",
                FemaleNameFile = @"NameFiles\Middle Eastern\Western Asian\Turkish\female_names.txt",
                SurnameFile = @"NameFiles\Middle Eastern\Western Asian\Turkish\surnames.txt"
            });
            if (canCreateNames) canCreateNames = CreateNameFiles(@"NameFiles\Middle Eastern\Western Asian\Israeli");
            subRace.AddChild(new CharacterRaceOption("Yemeni"));
            race.AddChild(subRace);
            defaultTemplate.CharacterTemplate.Races.AddChild(race);

            #endregion Middle Eastern
        }