private PdxSublist GetCharacterData(string type, CK2CharacterBase character) { var rulerData = new PdxSublist(null, character.BirthDate.ToString("yyyy.MM.dd")); var monarchData = new PdxSublist(null, type); monarchData.AddValue("name", character.Name); if (character.DynastyID == 0) { //todo: better support for lowborn rulers //monarchData.AddValue("dynasty", "Lowborn"); } else { monarchData.AddValue("dynasty", character.World.CK2Dynasties[character.DynastyID].Name); } if (CountryTag == "SCA") { Console.WriteLine(); } monarchData.AddValue("birth_date", rulerData.Key); monarchData.AddValue("adm", ((character.Attribites.Stewardship + character.Attribites.Learning) / 6).ToString()); monarchData.AddValue("dip", ((character.Attribites.Diplomacy + character.Attribites.Learning) / 6).ToString()); monarchData.AddValue("mil", ((character.Attribites.Martial + character.Attribites.Learning) / 6).ToString()); if (type == "heir") { monarchData.AddValue("claim", "95"); monarchData.AddValue("monarch_name", character.Name); monarchData.AddValue("death_date", "1821.5.5"); } rulerData.AddSublist(monarchData.Key, monarchData); return(rulerData); }
private void AddStrength(CK2Title t, CK2CharacterBase lastHolder = null) { if (t?.Holder != null) { if (!t.IsRevolt && t.Holder != lastHolder) { ((CK2Character)t.Holder).AddStrength(Development); } AddStrength(t.LiegeTitle, t.Holder); } }
internal bool IsDejureVassalOf(CK2CharacterBase liege) { foreach (var title in Titles) { foreach (var liegeTitle in liege.Titles) { if (title.IsDejureVassalOf(liegeTitle)) { return(true); } } } return(false); }
public Eu4Country(Eu4World world, CK2CharacterBase holder, string tag, string file, bool vanilla, CK2Title title = null) : base(world) { title = title ?? holder.PrimaryTitle; this.title = title; DisplayNoun = title.DisplayName; DisplayAdj = title.DisplayAdj; IsVanilla = vanilla; CountryTag = tag; World = world; FileName = file; Subjects = new List <string>(); this.holder = holder; GovernmentRank = (byte)((title.Rank == TitleRank.kingdom) ? 2 : (title.Rank == TitleRank.empire ? 3 : 1)); //if (world.TitleGovernmentMapper.ContainsKey(title.Name)) //{ // Government = world.TitleGovernmentMapper[title.Name]; //} //else //{ // //TODO: proper government flavour stuff ////world.GovernmentMapper // //Government = "feudal_monarchy"; //world.GovernmentMapper[holder.GovernmentType]; //} if (holder != null) { var prov = holder.Titles.Where(t => t.Rank == TitleRank.county).Select(t => t.Province).FirstOrDefault(); PrimaryCulture = holder.Culture == prov?.Culture ? World.MapCulture(prov).Name : World.MapCulture(holder.Culture).Name; Religion = World.MapReligion(holder.Religion)?.Name; } AcceptedCultures = new List <string>(); CalcEffects(); Government = GovernmentTypeWeights.OrderByDescending(w => w.Value).First().Key; Reforms = new List <string>(); Reforms.Add(GovernmentReformWeights.OrderByDescending(w => w.Value).First().Key); }
internal void Initialise(List <CK2Title> ck2Titles) { CK2Titles = ck2Titles; RevoltArmy = -1; baseTax = 1; baseProduction = 1; baseManpower = 1; fortLevel = 0; var religions = new Dictionary <Eu4Religion, int>(); var cultures = new Dictionary <Eu4Culture, int>(); var countyTitles = ck2Titles.Where(t => t.Rank == TitleRank.county).Count(); var revoltWeight = 0; CK2CharacterBase revolter = null; ck2Titles.ForEach(title => { if (title.Rank == TitleRank.county) { if (!IsHRE) { CheckLiege(title); } EconTech += title.Province.EconTech; CultureTech += title.Province.CultureTech; MilTech += title.Province.MilTech; // todo: culture splitting if (title.Province.Religion != null) { CountRelCulture(religions, World.MapReligion(title.Province.Religion)); } if (title.Province.Culture != null) { CountRelCulture(cultures, World.MapCulture(title.Province)); } //baronies foreach (var barony in title.Province.BaronTitles) { CalcEffects(barony, 1f / (countyTitles)); } } //CalcCountryEffects(title); CalcEffects(title, 1f / countyTitles); if (title.IsInRevolt()) { revoltWeight++; revolter = title.GetRevolt().Holder; if (revolter.DoesDirectlyOwn(title)) { RevoltArmy = 0; } } else { revoltWeight--; } }); if (revoltWeight > 0) { ControllerTag = "REB"; var revolt = World.CK2World.CK2Revolts[revolter.ID]; Revolt = World.RevoltMapper[revolt.CasusBelli]; var leader = World.CK2World.CK2Characters[revolt.Actor]; var surname = leader.DynastyID == 0 ? string.Empty : World.CK2World.CK2Dynasties[leader.DynastyID].Name; RevoltLeader = $"{leader.Name} {surname}"; } EconTech /= countyTitles; CultureTech /= countyTitles; MilTech /= countyTitles; Religion = religions.Count == 0 ? null : religions.OrderByDescending(r => r.Value).First().Key.Name; Culture = cultures.Count == 0 ? null : cultures.OrderByDescending(r => r.Value).First().Key.Name; BaseTax = (int)baseTax; BaseProduction = (int)baseProduction; BaseManpower = (int)baseManpower; ck2Titles.ForEach(t => { AddStrength(t); }); FortLevel = (int)fortLevel; }