Exemple #1
0
        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);
        }
Exemple #2
0
 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);
     }
 }
Exemple #3
0
 internal bool IsDejureVassalOf(CK2CharacterBase liege)
 {
     foreach (var title in Titles)
     {
         foreach (var liegeTitle in liege.Titles)
         {
             if (title.IsDejureVassalOf(liegeTitle))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        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;
        }