示例#1
0
        private void HandleRevolt(CharacterParser character)
        {
            if (character.NumberofCountTitles > 0)
            {
                foreach (var titleParser in character.Titles)
                {
                    if (titleParser.Owns.Count > 0)
                    {
                        if (
                            !ReligionManager.instance.ReligionMap[character.religion].Believers.Contains(
                                titleParser.CapitalProvince))
                        {
                            ReligionManager.instance.ReligionMap[character.religion].Believers.Add(titleParser.CapitalProvince);
                        }
                    }
                }
            }
            var pr = new List <ProvinceParser>();

            foreach (var title in character.Titles)
            {
                title.AddChildProvinces(pr);
                if (title.Owns.Count > 0)
                {
                    bool bDo = false;
                    foreach (var provinceParser in title.Owns[0].Adjacent)
                    {
                        if (provinceParser.land && (provinceParser.title == null || provinceParser.Title.Holder == null))
                        {
                            bDo = true;
                            break;
                        }
                    }
                    if (bDo)
                    {
                        pr.Add(title.Owns[0]);
                    }
                }
            }

            pr.Remove(character.PrimaryTitle.CapitalProvince);
            for (int index = 0; index < pr.Count; index++)
            {
                var  provinceParser = pr[index];
                bool keep           = false;
                foreach (var parser in provinceParser.Adjacent)
                {
                    if (parser.title == null)
                    {
                        continue;
                    }
                    ;
                    if (parser.Title.Holder == null)
                    {
                        keep = true;
                        break;
                    }
                }
                if (!keep)
                {
                    pr.Remove(provinceParser);
                    index--;
                }
            }
            if (pr.Count == 0)
            {
                return;
            }

            var p = pr[Rand.Next(pr.Count)];
            List <ProvinceParser> provinces = new List <ProvinceParser>();

            provinces.Add(p);
            while (provinces.Count < character.Titles.Count / 2)
            {
                MapManager.instance.FindAdjacent(provinces, provinces.Count / 2);
            }
            var ch = CharacterManager.instance.GetNewCharacter();

            characters.Add(ch);
            foreach (var provinceParser in provinces)
            {
                if (provinceParser.title != null)
                {
                    ch.GiveTitle(TitleManager.instance.TitleMap[provinceParser.title]);
                }
            }

            int nn = Globals.OneInChanceOfReligionSplinter;

            if (ReligionManager.instance.ReligionMap[character.religion].Believers.Count > 100)
            {
                nn--;
            }
            if (ReligionManager.instance.ReligionMap[character.religion].Believers.Count > 300)
            {
                nn--;
            }
            if (character.religion == "pagan")
            {
                nn = 0;
            }
            else
            {
                nn += ReligionManager.instance.ReligionMap[character.religion].Resilience;
            }



            if (Rand.Next(nn) == 0)
            {
                ReligionParser r = ReligionManager.instance.BranchReligion(character.religion, pr[Rand.Next(pr.Count)]);
                ch.religion = r.Name;
            }
            if (Rand.Next(Globals.OneInChanceOfCultureSplinter) == 0)
            {
                ch.culture = CultureManager.instance.BranchCulture(character.culture).Name;
                if (character.PrimaryTitle.Government != null)
                {
                    ch.PrimaryTitle.Government = GovernmentManager.instance.BranchGovernment(character.PrimaryTitle.Government, ch.Culture);
                    if (ch.PrimaryTitle.Government.uses_decadence)
                    {
                        ch.Religion.uses_decadence = true;
                    }
                }
            }
        }
示例#2
0
 public ReligionProxy(ReligionParser title)
 {
     this.religion = title;
 }