コード例 #1
0
        public TitleParser CreateBaronyScriptScope(ProvinceParser capital, CultureParser culture)
        {
            var place = culture.dna.GetPlaceName();
            var text  = place;

            place = StarNames.SafeName(text);
            if (TitleManager.instance.TieredTitles.ContainsKey("b_" + place))
            {
                return(CreateBaronyScriptScope(capital, culture));
            }
            var         rand  = Rand.Get();
            Color       col   = Color.FromArgb(255, rand.Next(200) + 55, rand.Next(200) + 55, rand.Next(200) + 55);
            ScriptScope scope = new ScriptScope();

            scope.Parent = capital.Title.Scope;


            scope.Name = "b_" + place;
            LanguageManager.instance.Add("b_" + place, text);
            //  scope.Kids.Add(new ScriptCommand() { Name = "rebel", Value = false });

            TitleParser title = new TitleParser(scope);

            TieredTitles[title.Name] = title;
            capital.Title.Scope.Add(title.Scope);

            //          if (culture.dna.horde)
//                title.Scope.Do("historical_nomad = yes");
            //   AddTitle(title);

            return(title);
        }
コード例 #2
0
        public string AddSafe(string name)
        {
            String safe = StarNames.SafeName(name);

            Add(safe, name);
            return(safe);
        }
コード例 #3
0
        public void Save()
        {
            Script s = new Script();

            s.Name = Globals.GameDir + "map\\geographical_region.txt";
            s.Root = new ScriptScope();
            foreach (var region in regions)
            {
                ScriptScope ss = new ScriptScope();

                String duchieList = "";

                foreach (var titleParser in region.duchies)
                {
                    duchieList = duchieList + " " + titleParser.Name;
                }
                ss.Name = StarNames.SafeName(region.name);
                ss.Do(@"
                    duchies = {
                        " + duchieList + @"
                    }
");
                s.Root.Add(ss);
            }

            s.Save();
        }
コード例 #4
0
        public ReligionParser BranchReligion(string religion, ProvinceParser capital = null)
        {
            var rel   = this.ReligionMap[religion];
            var group = rel.Group;

            if (rel.Group.Religions.Count > 3 && Rand.Next(2) == 0)
            {
                String name = StarNames.Generate(capital.Title.culture);
                String safe = StarNames.SafeName(name);
                LanguageManager.instance.Add(safe, name);
                group = AddReligionGroup(safe);
                var rel2 = group.AddReligion(StarNames.Generate(capital.Title.culture));
                rel2.RandomReligionProperties();
                //rel2.Init(Rand.Next(255), Rand.Next(255), Rand.Next(255));
                rel2.CreateRandomReligion(group);
                return(rel2);
            }
            else
            {
                var rel2 = group.AddReligion(StarNames.Generate(capital.Title.culture));
                //rel2.Init(Rand.Next(255), Rand.Next(255), Rand.Next(255));
                rel2.RandomReligionProperties();
                rel2.CreateRandomReligion(group);
                rel2.Mutate(rel, capital.Title.Culture, 6);
                return(rel2);
            }
        }
コード例 #5
0
        public ReligionParser AddReligion(String name, String orig = null)
        {
            if (name != "pagan")
            {
                String oname = name;
                name = StarNames.SafeName(name);
                LanguageManager.instance.Add(name, oname);
                orig = oname;
            }



            ScriptScope scope = new ScriptScope();

            scope.Name = name;
            Scope.Add(scope);
            ReligionParser r = new ReligionParser(scope);

            ReligionManager.instance.AllReligions.Add(r);
            if (orig != null)
            {
                r.LanguageName = orig;
            }
            Religions.Add(r);
            ReligionManager.instance.ReligionMap[name] = r;
            return(r);
        }
コード例 #6
0
        public Government BranchGovernment(Government gov, CultureParser culture)
        {
            var newGov = gov.Mutate(10);

            {
                if (newGov.type == "nomadic")
                {
                    newGov.type = "tribal";
                    newGov.SetType(newGov.type);
                }
            }

            do
            {
                newGov.name = culture.dna.GetMaleName();
            } while (LanguageManager.instance.Get(StarNames.SafeName(newGov.name) + "_government") != null);

            string s = newGov.name;

            newGov.name = StarNames.SafeName(newGov.name) + "_government";
            LanguageManager.instance.Add(newGov.name, s);
            culture.Governments.Add(newGov);
            if (!newGov.cultureAllow.Contains(culture.Name))
            {
                newGov.cultureAllow.Add(culture.Name);
            }
            return(newGov);
        }
コード例 #7
0
        public CultureParser AddCulture(String name)
        {
            if (name != "norse")
            {
                String oname = name;
                name = StarNames.SafeName(name);

                LanguageManager.instance.Add(name, oname);
            }


            ScriptScope scope = new ScriptScope();

            scope.Name = name;
            Name       = name;

            Scope.Add(scope);
            CultureParser r = new CultureParser(scope);

            CultureManager.instance.AllCultures.Add(r);
            Cultures.Add(r);
            CultureManager.instance.CultureMap[name] = r;
            r.Name = Name;
            r.Init();

            Scope.SetChild(r.Scope);
            return(r);
        }
コード例 #8
0
ファイル: ReligionManager.cs プロジェクト: sedyer/ck2gen
        public ReligionParser BranchReligion(string religion, String culture)
        {
            var rel      = ReligionMap[religion];
            var group    = rel.Group;
            int totCount = 0;

            foreach (var religionParser in rel.Group.Religions)
            {
                totCount += religionParser.Provinces.Count;
            }

            if (CultureManager.instance.allowMultiCultureGroups)
            {
                var rell = StarNames.Generate(culture);

                while (instance.ReligionMap.ContainsKey(StarNames.SafeName(rell)))
                {
                    rell = StarNames.Generate(culture);
                }

                var rel2 = group.AddReligion(rell);

                rel2.CreateNewReligion();

                rel2.Mutate(rel, CultureManager.instance.CultureMap[culture], 6);

                return(rel2);
            }

            else
            {
                String name = StarNames.Generate(culture);
                String safe = StarNames.SafeName(name);

                while (instance.GroupMap.ContainsKey(safe))
                {
                    name = StarNames.Generate(culture);
                    safe = StarNames.Generate(culture);
                }

                LanguageManager.instance.Add(safe, name);

                group = AddReligionGroup(safe);

                name = StarNames.Generate(culture);

                while (instance.ReligionMap.ContainsKey(safe))
                {
                    name = StarNames.Generate(culture);
                    safe = StarNames.SafeName(name);
                }

                var rel2 = group.AddReligion(name);

                rel2.CreateNewReligion();

                return(rel2);
            }
        }
コード例 #9
0
        public void Rename(string name)
        {
            String oldName = Name;

            Name = "c_" + StarNames.SafeName(name);
            LanguageManager.instance.Add(Name, name);
            LanguageManager.instance.Add("PROV" + id, name);
            MapManager.instance.ProvinceMap.Remove(oldName);
            MapManager.instance.ProvinceMap[Name] = this;
        }
コード例 #10
0
        public string GetUniqueMaleName()
        {
            var name = ConstructWord(3 * wordLengthBias, 8 * wordLengthBias);

            name = stripVowelsFromEnd(name);
            if (LanguageManager.instance.Get(StarNames.SafeName(name)) != null)
            {
                return(GetUniqueMaleName());
            }
            return(name);
        }
コード例 #11
0
        public TitleParser CreateKingScriptScope(ProvinceParser capital, CharacterParser chr)
        {
            var         rand  = Rand.Get();
            Color       col   = Color.FromArgb(255, rand.Next(200) + 55, rand.Next(200) + 55, rand.Next(200) + 55);
            ScriptScope scope = new ScriptScope();

            scope.Parent = LandedTitlesScript.Root;



            {
                String place = chr.Culture.dna.GetPlaceName();
                String text  = place;
                place = StarNames.SafeName(place);

                if (TitleManager.instance.TitleMap.ContainsKey("k_" + place))
                {
                    return(CreateKingScriptScope(capital, chr.culture));
                }

                LanguageManager.instance.Add(place, text);
                scope.Name = "k_" + place;
                LanguageManager.instance.Add(scope.Name, text);
            }


            //scope.Kids.Add(new ScriptCommand() { Name = "rebel", Value = false });
            scope.Add(new ScriptCommand()
            {
                Name = "color", Value = col
            });
            scope.Add(new ScriptCommand()
            {
                Name = "color2", Value = col
            });

            scope.Add(new ScriptCommand()
            {
                Name = "capital", Value = capital.id
            });

            TitleParser title = new TitleParser(scope);

            AddTitle(title);

            // now place the counties into it...
            if (title.capital != 0)
            {
                title.CapitalProvince = MapManager.instance.ProvinceIDMap[title.capital];
            }

            return(title);
        }
コード例 #12
0
ファイル: CultureManager.cs プロジェクト: sedyer/ck2gen
        public CultureParser BranchCulture(string Culture)
        {
            var rel = CultureMap[Culture];

            var group = rel.Group;

            var cultureName = rel.dna.GetPlaceName();

            while (GroupMap.ContainsKey(StarNames.SafeName(cultureName)))
            {
                cultureName = rel.dna.GetPlaceName();
            }

            CultureParser rel2 = null;

            if (allowMultiCultureGroups)
            {
                rel2 = group.AddCulture(cultureName);
                rel2.Init();
                rel2.dna = rel.dna.MutateSmall(4);
            }

            else
            {
                // need to make a new group for the culture

                var newGroupName = rel.dna.GetPlaceName();

                while (GroupMap.ContainsKey(StarNames.SafeName(newGroupName)))
                {
                    newGroupName = rel.dna.GetPlaceName();
                }

                LanguageManager.instance.Add(StarNames.SafeName(newGroupName), newGroupName);

                var newCultureGroup = AddCultureGroup(StarNames.SafeName(newGroupName), group);

                newCultureGroup.Name = StarNames.SafeName(newGroupName);
                rel2 = newCultureGroup.AddCulture(cultureName);
                newCultureGroup.AddCulture(rel2);

                rel2.Init();
                rel2.dna = rel.dna.Mutate(16, rel);
                rel2.dna.DoRandom();

                CultureGroupMap[newCultureGroup.Name] = newCultureGroup;
            }

            rel2.DoDetailsForCulture();

            return(rel2);
        }
コード例 #13
0
        public void CreateMercs()
        {
            // do mercs...
            foreach (var cultureParser in CultureManager.instance.AllCultures)
            {
                String name     = "";
                String namesafe = null;

                do
                {
                    name     = cultureParser.dna.GetMaleName();
                    namesafe = "d_" + StarNames.SafeName(name);
                } while (TitleMap.ContainsKey(namesafe) || LanguageManager.instance.Get(namesafe) != "");

                LanguageManager.instance.Add(namesafe, name);
                String composition = compositions[Rand.Next(compositions.Length)];
                LandedTitlesScript.Root.Do(@"

                    " + namesafe + @" = {

	                    color = { 135 170 60 }
	                    color2 = { 255 255 255 }

	                    capital = "     + MapManager.instance.GetInhabited().id + @" 
	
	                    # Parent Religion 
	                    culture =  "     + cultureParser.Name + @" 
	
	                    mercenary = yes

	                    title = ""CAPTAIN""
	                    foa = ""CAPTAIN_FOA""

	                    # Always exists
	                    landless = yes
	
	                    # Cannot be held as a secondary title
	                    primary = yes
	
	                    # Cannot be vassalized
	                    independent = yes
	
	                    strength_growth_per_century = 1.00
	
	                    mercenary_type = "     + composition + @"
                    }


                ");
            }
        }
コード例 #14
0
        public TitleParser CreateDukeScriptScope(ProvinceParser capital, String name = null)
        {
            var         rand  = Rand.Get();
            Color       col   = Color.FromArgb(255, rand.Next(200) + 55, rand.Next(200) + 55, rand.Next(200) + 55);
            ScriptScope scope = new ScriptScope();

            scope.Parent = LandedTitlesScript.Root;

            if (name == null)
            {
                String place = capital.Title.Holder.Culture.dna.GetPlaceName();
                String text  = place;
                place = StarNames.SafeName(place);
                LanguageManager.instance.Add(place, text);
                scope.Name = "d_" + place;
                LanguageManager.instance.Add(scope.Name, text);
            }
            else
            {
                scope.Name = "d_" + name;
            }

            //  scope.Kids.Add(new ScriptCommand() { Name = "rebel", Value = false });
            scope.Add(new ScriptCommand()
            {
                Name = "color", Value = col
            });
            scope.Add(new ScriptCommand()
            {
                Name = "color2", Value = col
            });

            scope.Add(new ScriptCommand()
            {
                Name = "capital", Value = capital.id
            });

            TitleParser title = new TitleParser(scope);

            //          if (capital.Title.Culture.dna.horde)
//                title.Scope.Do("historical_nomad = yes");

            AddTitle(title);
            if (title.capital != 0)
            {
                title.CapitalProvince = MapManager.instance.ProvinceIDMap[title.capital];
            }
            // now place the counties into it...

            return(title);
        }
コード例 #15
0
ファイル: ProvinceParser.cs プロジェクト: worriedfish/ck2gen
        public void RenameForCulture(CultureParser culture)
        {
            LanguageManager.instance.Remove(Name);

            String namem = null;

            do
            {
                var name = culture.dna.GetPlaceName();
                namem = name;
            } while (MapManager.instance.ProvinceMap.ContainsKey(StarNames.SafeName(namem)));

            Rename(namem);
        }
コード例 #16
0
        public void Rename(String name)
        {
            String oldName = Name;

            LanguageManager.instance.Remove(Name);
            this.Name = StarNames.SafeName(name);
            if (Rank == 0)
            {
                Name = "b_" + Name;
            }
            if (Rank == 1)
            {
                Name = "c_" + Name;
            }
            if (Rank == 2)
            {
                Name = "d_" + Name;
            }
            if (Rank == 3)
            {
                Name = "k_" + Name;
            }
            if (Rank == 4)
            {
                Name = "e_" + Name;
            }

            LanguageManager.instance.Add(Name, name);
            TitleManager.instance.TitleMap.Remove(oldName);
            TitleManager.instance.TitleMap[name] = this;
            if (TitleManager.instance.TieredTitles.ContainsKey(oldName))
            {
                TitleManager.instance.TieredTitles.Remove(oldName);
                TitleManager.instance.TieredTitles[name] = this;

                if (Liege != null)
                {
                    Liege.SubTitles.Remove(oldName);
                    Liege.SubTitles[name] = this;
                }
            }

            Scope.Parent.ChildrenMap.Remove(oldName);
            Scope.Parent.ChildrenMap[name] = this;
        }
コード例 #17
0
ファイル: CultureManager.cs プロジェクト: worriedfish/ck2gen
        public CultureParser BranchCulture(string Culture)
        {
            var rel   = this.CultureMap[Culture];
            var group = rel.Group;

            var naa = rel.dna.GetPlaceName();

            while (GroupMap.ContainsKey(StarNames.SafeName(naa)))
            {
                naa = rel.dna.GetPlaceName();
            }

            CultureParser rel2 = null;

            if (!allowMultiCultureGroups)
            {
                var na = rel.dna.GetPlaceName();
                while (GroupMap.ContainsKey(StarNames.SafeName(na)))
                {
                    na = rel.dna.GetPlaceName();
                }

                LanguageManager.instance.Add(StarNames.SafeName(na), na);

                var group2 = AddCultureGroup(StarNames.SafeName(na), group);
                group2.Name = StarNames.SafeName(na);
                rel2        = group2.AddCulture(naa);
                group2.AddCulture(rel2);

                rel2.Init();
                rel2.dna = rel.dna.Mutate(16, rel);
                rel2.dna.DoRandom();
                CultureGroupMap[group2.Name] = group2;
            }
            else
            {
                rel2 = group.AddCulture(naa);
                rel2.Init();
                rel2.dna = rel.dna.MutateSmall(4);
            }

            rel2.DoDetailsForCulture();

            return(rel2);
        }
コード例 #18
0
        public void RenameForCulture(CultureParser culture)
        {
            LanguageManager.instance.Remove(Name);
            var name = culture.dna.GetPlaceName();

            if (MapManager.instance.ProvinceMap.ContainsKey("c_" + StarNames.SafeName(name)))
            {
                RenameForCulture(culture);
                return;
            }

            if (Title != null)
            {
                Title.Rename(name);
            }

            Rename(name);
        }
コード例 #19
0
ファイル: ReligionGroupParser.cs プロジェクト: sedyer/ck2gen
        public ReligionParser AddReligion(String name, String orig = null)
        {
            if (name != "urtru")
            {
                String oname = name;
                name = StarNames.SafeName(name);

                LanguageManager.instance.Add(name, oname);
                orig = oname;
            }

            ScriptScope scope = new ScriptScope
            {
                Name = name
            };

            Scope.Add(scope);

            ReligionParser r = new ReligionParser(scope);

            ReligionManager.instance.AllReligions.Add(r);

            if (orig != null)
            {
                r.LanguageName = orig;
            }

            r.Name  = r.Scope.Name;
            r.Group = this;

            var col = Col();

            r.r = col.R;
            r.g = col.G;
            r.b = col.B;

            Religions.Add(r);
            ReligionManager.instance.ReligionMap[name] = r;

            Console.Out.WriteLine(r.Name + " added");

            return(r);
        }
コード例 #20
0
ファイル: ProvinceParser.cs プロジェクト: worriedfish/ck2gen
        public void Rename(string name)
        {
            if (StarNames.SafeName(name) == "selj")
            {
            }
            String oldName = Name;

            Name = StarNames.SafeName(name);
            LanguageManager.instance.Remove(Name);
            LanguageManager.instance.Add(StarNames.SafeName(name), name);
            LanguageManager.instance.Add("c_" + StarNames.SafeName(name), name);
            LanguageManager.instance.Add("PROV" + id, name);
            MapManager.instance.ProvinceMap.Remove(oldName);
            MapManager.instance.ProvinceMap[Name] = this;

            if (Title != null)
            {
                Title.Rename(name, true);
            }
        }
コード例 #21
0
        public Government CreateNewGovernment(CultureParser culture)
        {
            Government g = new Government();

            g.type = "tribal";
            Government r = g.Mutate(8);

            r.name = culture.dna.GetMaleName();
            string s = r.name;

            r.name = StarNames.SafeName(r.name) + "_government";
            LanguageManager.instance.Add(r.name, s);
            culture.Governments.Add(r);
            r.SetType(r.type);
            if (!r.cultureAllow.Contains(culture.Name))
            {
                r.cultureAllow.Add(culture.Name);   //    governments.Add(r);
            }
            return(r);
        }
コード例 #22
0
        public void AddRegion(String name, List <TitleParser> duchies)
        {
            String safeName = StarNames.SafeName(name);

            LanguageManager.instance.Add(safeName, name);
            Region r = new Region();

            for (int index = 0; index < duchies.Count; index++)
            {
                var titleParser = duchies[index];
                if (duchiesAssigned.Contains(titleParser))
                {
                    duchies.Remove(titleParser);
                    index--;
                }
            }
            r.name = name;
            r.duchies.AddRange(duchies);
            duchiesAssigned.AddRange(duchies);
            regions.Add(r);
        }
コード例 #23
0
ファイル: CultureManager.cs プロジェクト: worriedfish/ck2gen
        public CultureParser AddCulture(String name)
        {
            string langName = "";

            if (name != "norse")
            {
                String oname = name;
                name = StarNames.SafeName(name);

                LanguageManager.instance.Add(name, oname);
                langName = oname;
            }


            ScriptScope scope = new ScriptScope();

            scope.Name = name;

            Scope.Add(scope);
            CultureParser r = new CultureParser(scope, this);

            CultureManager.instance.AllCultures.Add(r);
            r.LanguageName = langName;
            Cultures.Add(r);
            CultureManager.instance.CultureMap[name] = r;
            r.Name = name;
            r.Init();
            r.group = this;
            var col = Col();

            r.r = col.R;
            r.g = col.G;
            r.b = col.B;
            Scope.SetChild(r.Scope);
            return(r);
        }
コード例 #24
0
        public CultureParser BranchCulture(string Culture)
        {
            var rel   = this.CultureMap[Culture];
            var group = rel.Group;

            var rel2 = group.AddCulture(rel.dna.GetPlaceName());

            if (Rand.Next(10) == 0 || rel.Group.Cultures.Count > 5)
            {
                var group2 = AddCultureGroup(StarNames.SafeName(rel.dna.GetPlaceName()), group);
                group2.AddCulture(rel2);
                rel2.Init();
                rel2.dna = rel.dna.Mutate(6);
                rel2.dna.DoRandom();
            }
            else
            {
                rel2.Init();
                rel2.dna = rel.dna.MutateSmall(5);
            }

            rel2.DoDetailsForCulture();
            return(rel2);
        }
コード例 #25
0
        public void DoLeader(ProvinceParser capital)
        {
            String popeName = StarNames.SafeName(StarNames.Generate(10000000));

            LanguageManager.instance.Add(popeName, StarNames.Generate(10000000));

            TitleParser title = null;

            switch (Rand.Next(3))
            {
            case 0:
                title = TitleManager.instance.CreateKingScriptScope(capital, Name);
                break;

            case 1:
                title = TitleManager.instance.CreateEmpireScriptScope(capital, Name);
                break;

            case 2:
                title = TitleManager.instance.CreateDukeScriptScope(capital, Name);
                break;
            }

            ReligiousHeadTitle           = title;
            ReligiousHeadTitle.Religious = true;
            ReligiousHeadTitle.Active    = true;
            //  ch.UpdateCultural();
            var ch = SimulationManager.instance.AddCharacterForTitle(ReligiousHeadTitle, true);

            ch.religion = Name;
            ch.UpdateCultural();
            var liege = ReligiousHeadTitle.CapitalProvince.Title;

            if (Rand.Next(3) == 0)
            {
                ch.GiveTitle(ReligiousHeadTitle.CapitalProvince.Title);
            }
            String religious_names = "";

            for (int n = 0; n < 40; n++)
            {
                religious_names = CultureManager.instance.CultureMap[ch.culture].dna.GetMaleName() + " ";
            }
            title.Scope.Do(@"

	        title = """     + popeName + @"""
	        foa = ""POPE_FOA""
	        short_name = yes
	        location_ruler_title = yes
	        landless = yes
	        controls_religion = """     + Name + @"""
	        religion = """     + Name + @"""
	        primary = yes
	        dynasty_title_names = no
	        male_names = {
			        "             + religious_names + @"
        }

");



            LanguageManager.instance.Add(title.Name, this.LanguageName);
        }
コード例 #26
0
ファイル: ReligionParser.cs プロジェクト: sedyer/ck2gen
        private void DoReligionScope(string god, string devil, string priest, string scripture_name, string crusade_name, CulturalDna dna, int r, int g, int b, bool bNew = true)
        {
            string safegod            = StarNames.SafeName(god);
            string safedevil          = StarNames.SafeName(devil);
            string safepriest         = StarNames.SafeName(priest);
            string safehigh_god_name  = StarNames.SafeName(high_god_name);
            string safescripture_name = StarNames.SafeName(scripture_name);
            string safecrusade_name   = StarNames.SafeName(crusade_name);

            String desc = "";

            this.god            = god;
            this.devil          = devil;
            this.scripture_name = scripture_name;

            if (!polytheism)
            {
                desc = "All praise the almighty " + high_god_name + "!";
            }
            else
            {
                desc = "The Gods smile upon you.";
            }

            LanguageManager.instance.Add(Name + "_DESC", desc);
            LanguageManager.instance.Add(safegod, god);
            LanguageManager.instance.Add(safedevil, devil);
            LanguageManager.instance.Add(safepriest, priest);
            LanguageManager.instance.Add(safehigh_god_name, high_god_name);
            LanguageManager.instance.Add(safescripture_name, scripture_name);
            LanguageManager.instance.Add(safecrusade_name, crusade_name);

            this.r = r;
            this.g = g;
            this.b = b;

            String gods = "";

            if (bNew)
            {
                for (int n = 0; n < 10; n++)
                {
                    string go = dna.GetGodName();
                    var    sg = StarNames.SafeName(go);
                    LanguageManager.instance.Add(sg, go);

                    this.gods.Add(sg);
                    gods += sg + " ";
                }
            }

            String egods = "";

            if (bNew)
            {
                for (int n = 0; n < 5; n++)
                {
                    string go = dna.GetGodName();
                    var    sg = StarNames.SafeName(go);
                    LanguageManager.instance.Add(sg, go);
                    evilgods.Add(sg);

                    egods += sg + " ";
                }
            }

            if (!polytheism)
            {
                gods  = safegod;
                egods = safedevil;
            }
            else
            {
                gods = safehigh_god_name + " " + gods;
            }

            this.safecrusade_name   = safecrusade_name;
            this.safescripture_name = safescripture_name;
            this.safepriest         = safepriest;
            this.safehigh_god_name  = safehigh_god_name;
            this.egods = egods;

            if (max_wives > 1 && max_consorts > 0)
            {
                max_consorts = 0;
            }

            ScopeReligionDetails();
        }
コード例 #27
0
        public String GetPlaceName()
        {
            if (Rand.Next(3) != 0)
            {
                return(ConstructWord(5, 8));
            }
            if (WordFormats.Count == 0)
            {
                for (int n = 0; n < 1; n++)
                {
                    WordFormats.Add(CommonWordFormats[Rand.Next(CommonWordFormats.Count)]);
                }
            }
            if (wordsForLand.Count == 0)
            {
                string s = ConstructWord(2 * wordLengthBias, 4 * wordLengthBias);
                wordsForLand.Add(s);
            }

            if (placeFormat == null)
            {
                placeFormat = placeFormatOptions[Rand.Next(placeFormatOptions.Count())];
            }

            string format = this.WordFormats[Rand.Next(WordFormats.Count)];

            int nWords = 1;

            if (Rand.Next(3) == 0)
            {
                nWords++;
            }

            if (Rand.Next(3) == 0)
            {
                nWords++;
            }
            if (Rand.Next(3) != 0)
            {
                format = "{0}";
                nWords = 1;
            }

            int index = 0;

            if (nWords == 1)
            {
                index  = format.IndexOf("{0}") + 3;
                format = format.Substring(0, index);
            }
            if (nWords == 2)
            {
                index  = format.IndexOf("{1}") + 3;
                format = format.Substring(0, index);
            }
            String[] strs = new String[nWords];
            for (int n = 0; n < nWords; n++)
            {
                if (nWords == 1)
                {
                    strs[n] = ConstructWord(5 * wordLengthBias, 8 * wordLengthBias);
                }
                else if (nWords == 2)
                {
                    strs[n] = ConstructWord(3 * wordLengthBias, 5 * wordLengthBias);
                }
                else if (nWords == 3)
                {
                    strs[n] = ConstructWord(3 * wordLengthBias, 4 * wordLengthBias);
                }
            }
            if (nWords == 1)
            {
                var s = Capitalize(String.Format(format, strs[0]));
                if (LanguageManager.instance.Get(StarNames.SafeName(s)) != null)
                {
                    return(GetPlaceName());
                }
                return(s);
            }
            else if (nWords == 2)
            {
                var s = Capitalize(String.Format(format, strs[0], strs[1]));
                if (LanguageManager.instance.Get(StarNames.SafeName(s)) != null)
                {
                    return(GetPlaceName());
                }
                return(s);
            }
            else
            {
                var s = Capitalize(String.Format(format, strs[0], strs[1], strs[2]));
                if (LanguageManager.instance.Get(StarNames.SafeName(s)) != null)
                {
                    return(GetPlaceName());
                }
                return(s);
            }
        }
コード例 #28
0
ファイル: ReligionParser.cs プロジェクト: sedyer/ck2gen
        public void DoLeader(ProvinceParser capital)
        {
            String popeName = StarNames.SafeName(StarNames.Generate(10000000));

            LanguageManager.instance.Add(popeName, StarNames.Generate(10000000));

            PopeName = popeName;
            TitleParser title = null;
            bool        bNew  = false;

            ReligiousHeadTitle = null;

            if (ReligiousHeadTitle == null)
            {
                bNew = true;

                switch (Rand.Next(8))
                {
                case 0:
                case 1:
                case 2:
                case 3:
                    title = TitleManager.instance.CreateKingScriptScope(capital, Name);
                    break;

                case 4:
                    title = TitleManager.instance.CreateEmpireScriptScope(capital, Name);
                    break;

                case 5:
                case 6:
                case 7:
                    title = TitleManager.instance.CreateDukeScriptScope(capital, Name);
                    break;
                }

                ReligiousHeadTitle = title;
            }

            ReligiousHeadTitle.Religious = true;
            ReligiousHeadTitle.Active    = true;
            ReligiousHeadTitle.religion  = Name;

            TitleManager.instance.ReligiousTitles.Add(ReligiousHeadTitle);

            if (bNew)
            {
                var ch = SimulationManager.instance.AddCharacterForTitle(ReligiousHeadTitle, true);
                ch.religion = Name;
                ch.UpdateCultural();
            }

            String religious_names = "";

            for (int n = 0; n < 40; n++)
            {
                religious_names = CultureManager.instance.CultureMap[ReligiousHeadTitle.Holder.culture].dna.GetMaleName() + " ";
            }

            ReligiousHeadTitle.Scope.Do(@"

	        title = """     + popeName + @"""
	        foa = ""POPE_FOA""
	        short_name = "     + (Rand.Next(2) == 0 ? "yes" : "no") + @"
	        location_ruler_title = "     + (Rand.Next(2) == 0 ? "yes" : "no") + @"
	        landless = "     + (bNew ? "yes" : "no") + @"
	        controls_religion = """     + Name + @"""
	        religion = """     + Name + @"""
	        primary = yes
	        dynasty_title_names = no
	    

");

            LanguageManager.instance.Add(ReligiousHeadTitle.Name, this.LanguageName);
        }
コード例 #29
0
        private void DoReligionScope(string god, string devil, string priest, string scripture_name, string crusade_name,
                                     CulturalDna dna, int r, int g, int b)
        {
            string safegod            = StarNames.SafeName(god);
            string safedevil          = StarNames.SafeName(devil);
            string safepriest         = StarNames.SafeName(priest);
            string safehigh_god_name  = StarNames.SafeName(high_god_name);
            string safescripture_name = StarNames.SafeName(scripture_name);
            string safecrusade_name   = StarNames.SafeName(crusade_name);
            String desc = "";

            if (!polytheism)
            {
                desc = "All praise the almighty " + high_god_name + "!";
            }
            else
            {
                desc = "The Gods smile upon you.";
            }

            LanguageManager.instance.Add(this.Name + "_DESC", desc);

            LanguageManager.instance.Add(safegod, god);
            LanguageManager.instance.Add(safedevil, devil);
            LanguageManager.instance.Add(safepriest, priest);
            LanguageManager.instance.Add(safehigh_god_name, high_god_name);
            LanguageManager.instance.Add(safescripture_name, scripture_name);
            LanguageManager.instance.Add(safecrusade_name, crusade_name);

            this.r = r;
            this.g = g;
            this.b = b;

            String gods = "";
            {
                for (int n = 0; n < 10; n++)
                {
                    string go = dna.GetGodName();
                    var    sg = StarNames.SafeName(go);
                    LanguageManager.instance.Add(sg, go);

                    this.gods.Add(sg);
                    gods += sg + " ";
                }
            }

            String egods = "";

            for (int n = 0; n < 5; n++)
            {
                string go = dna.GetGodName();
                var    sg = StarNames.SafeName(go);
                LanguageManager.instance.Add(sg, go);
                this.evilgods.Add(sg);

                egods += sg + " ";
            }


            if (!polytheism)
            {
                gods  = safegod;
                egods = safedevil;
            }
            else
            {
                gods = safehigh_god_name + " " + gods;
            }


            if (max_wives > 1 && max_consorts > 0)
            {
                max_consorts = 0;
            }

            Scope.Do(@"

	            graphical_culture = westerngfx

		            icon = "         + icon + @"
		            heresy_icon = "         + heresy_icon + @"
		         
		            ai_convert_other_group = "         + ai_convert_other_group + @" # always try to convert
	
		            color = { "         + r + " " + g + " " + b + @" }
		
		            crusade_name = "         + safecrusade_name + @"
		            scripture_name = "         + safescripture_name + @"
		            priest_title = "         + safepriest + @"
		
		            high_god_name = "         + safehigh_god_name + @"
		
		            god_names = {
			            "             + gods + @"
		            }
		
		            evil_god_names = {
			           "             + egods + @"
		            }
		
		            investiture = "         + (investiture ? "yes" : "no") + @"
		            can_have_antipopes  = "         + (can_have_antipopes ? "yes" : "no") + @"
		            can_excommunicate  = "         + (can_excommunicate ? "yes" : "no") + @"
		            can_grant_divorce  = "         + (can_grant_divorce ? "yes" : "no") + @"
		            can_grant_claim  = "         + (can_grant_claim ? "yes" : "no") + @"
		            can_call_crusade  = "         + (can_call_crusade ? "yes" : "no") + @"
		            can_retire_to_monastery  = "         + (can_retire_to_monastery ? "yes" : "no") + @"
		            priests_can_inherit  = "         + (priests_can_inherit ? "yes" : "no") + @"
		            can_hold_temples  = "         + (can_hold_temples ? "yes" : "no") + @"
		            pacifist  = "         + (pacifist ? "yes" : "no") + @"
		           
                    bs_marriage  = " + (bs_marriage ? "yes" : "no") + @"
		            pc_marriage  = "         + (pc_marriage ? "yes" : "no") + @"
		            psc_marriage  = "         + (psc_marriage ? "yes" : "no") + @"
		            cousin_marriage  = "         + (psc_marriage ? "yes" : "no") + @"
		            matrilineal_marriages  = "         + (matrilineal_marriages ? "yes" : "no") + @"
		            allow_viking_invasion  = "         + (allow_viking_invasion ? "yes" : "no") + @"
		            allow_looting  = "         + (allow_looting ? "yes" : "no") + @"
		            allow_rivermovement  = "         + (allow_rivermovement ? "yes" : "no") + @"
		            female_temple_holders  = "         + (female_temple_holders ? "yes" : "no") + @"
		            autocephaly  = "         + (autocephaly ? "yes" : "no") + @"
		            divine_blood  = "         + (divine_blood ? "yes" : "no") + @"
		            has_heir_designation  = "         + (has_heir_designation ? "yes" : "no") + @"
		            peace_prestige_loss  = "         + (peace_prestige_loss ? "yes" : "no") + @"
		         
		            "         + (max_consorts > 0 ? ("max_consorts = " + max_consorts.ToString()) : "") + @"
		
                    max_wives  = " + max_wives + @"
		            uses_decadence = "         + (uses_decadence ? "yes" : "no") + @"
                    uses_jizya_tax = " + (uses_jizya_tax ? "yes" : "no") + @"
          
                    can_grant_invasion_cb = invasion
		            
		            religious_clothing_head = "         + religious_clothing_head + @"
		            religious_clothing_priest = "         + religious_clothing_priest + @"
");
        }
コード例 #30
0
        public Module CreateReligionPhilosophy(String nameSpace, String religion, List <SchoolInfo> schools)
        {
            Module m = new Module();

            m.name      = religion + "_philosophies";
            m.nameSpace = nameSpace;
            String eventID  = "";
            int    n        = 1;
            var    schoolss = new List <SchoolTypes>(Schools);

            foreach (var school in schools)
            {
                ScriptScope decision = new ScriptScope();
                ScriptScope trait    = new ScriptScope();

                int nn         = Rand.Next(schoolss.Count);
                var schooldata = schoolss[nn];
                schoolss.RemoveAt(nn);
                String otherSchools = "";
                foreach (var schoolInfo in schools)
                {
                    if (schoolInfo.Name == school.Name)
                    {
                        continue;
                    }

                    otherSchools += StarNames.SafeName(schoolInfo.Name) + "\n\r";
                }
                String      rname = LanguageManager.instance.Get(religion);
                ScriptScope ev    = new ScriptScope();
                eventID = nameSpace + "." + n;
                String eventDesc = eventID + "desc";

                TraitManager.instance.AddTrait(StarNames.SafeName(school.Name));
                LanguageManager.instance.Add(StarNames.SafeName(school.Name), school.Name);
                LanguageManager.instance.Add("embrace_" + StarNames.SafeName(school.Name), "Embrace " + school.Name);
                LanguageManager.instance.Add("embrace_" + StarNames.SafeName(school.Name) + "_desc", "You embrace " + school.Name + ", a philosophy of " + rname + " that promotes " + schooldata.principles + @". Members of the opposing philosophies will disapprove.");
                LanguageManager.instance.Add(StarNames.SafeName(school.Name) + "_desc", "Follows the school of " + school.Name + ", a philosophy of " + rname + " that promotes " + schooldata.principles + @".");
                LanguageManager.instance.Add(eventDesc, "You have embraced the " + school.Name + " philosophy of " + rname);
                LanguageManager.instance.Add("embrace_" + StarNames.SafeName(school.Name) + "_desc", "Praise " + ReligionManager.instance.ReligionMap[religion].high_god_name + ", " + school.Name + " is the way!");
                LanguageManager.instance.Add("embrace_" + StarNames.SafeName(school.Name) + "_event_desc", "You embrace " + school.Name + ", a philosophy of " + rname + " that promotes " + schooldata.principles + @". Members of the opposing philosophies will disapprove.");
                ev.Do(@"

                    id = " + eventID + @"
	                desc = "     + eventDesc + @"
	                picture = GFX_evt_kaaba
	                border = GFX_event_normal_frame_religion
	                is_triggered_only = yes
	                hide_from = yes
	                option = {
		                name = "         + "embrace_" + StarNames.SafeName(school.Name) + "_desc" + @"
		                add_trait = "         + StarNames.SafeName(school.Name) + @"		                
	                }
                ");

                decision.Do(@" 
		        potential = {
			        has_dlc = ""Sons of Abraham""
			        religion = "             + religion + @"
			        NOT = { 
				        OR = {
					        
				        }
			        }
			        is_ruler = yes
			        age = 16
			        prisoner = no
		        }
		
		        allow = {
			        piety = 50
		        }
		
		        effect = {
			        add_trait = "             + StarNames.SafeName(school.Name) + @"
			        character_event = { id = "             + eventID + @" tooltip = " + "embrace_" + StarNames.SafeName(school.Name) + "_event_desc" + @" }
		        }
		
		        revoke_allowed = {
			        always = no
		        }
		
		        ai_will_do = {
			        factor = 1
			
			        modifier = {
				        factor = "                 + schooldata.ZealousMod + @"
				        trait = zealous
			        }
			        modifier = {
				        factor = "                 + schooldata.CynicalMod + @"
				        trait = cynical
			        }
			        modifier = {
				        factor = 1.2
				        liege = { trait =  "                 + StarNames.SafeName(school.Name) + @" }
			        }
			        modifier = {
				        factor = 0.05 # Slow it down
			        }
		        }

            ");

                trait.Do(@" 
	
                opposites = {
	                "     + otherSchools + @"

                }

                " + schooldata.effectString + @"	

	            customizer = no
	            random = no
                opposite_opinion = -20
                same_opinion = 20
                religious = yes
      ");
                n++;
                m.Decisions["embrace_" + StarNames.SafeName(school.Name)] = decision;
                m.Events["embrace_" + StarNames.SafeName(school.Name)]    = ev;
                m.Traits[StarNames.SafeName(school.Name)] = trait;
            }

            return(m);
        }