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; } } } }
public ReligionProxy(ReligionParser title) { this.religion = title; }