Example #1
0
        private void CalcEffects(PdxSublist effects, Dictionary <NationalIdea, float> weight, Dictionary <NationalIdea, float> level, float multiplier)
        {
            //ideas
            foreach (var ideaGroup in World.NationalIdeaGroups)
            {
                var groupWeight = GetFloatEffect(effects, $"idea_{ideaGroup.Name}_weight") * multiplier;
                var groupLevel  = GetFloatEffect(effects, $"idea_{ideaGroup.Name}_level") * multiplier;
                foreach (var idea in ideaGroup.Ideas)
                {
                    if (!weight.ContainsKey(idea))
                    {
                        weight[idea] = 0;
                    }
                    if (!level.ContainsKey(idea))
                    {
                        level[idea] = 0;
                    }
                    weight[idea] += GetFloatEffect(effects, $"idea_{idea.Name}_weight") * multiplier + groupWeight;
                    level[idea]  += GetFloatEffect(effects, $"idea_{idea.Name}_level") * multiplier + groupLevel;
                }
            }

            foreach (var gov in World.GovernmentTypes)
            {
                if (!GovernmentTypeWeights.ContainsKey(gov))
                {
                    GovernmentTypeWeights[gov] = 0;
                }
                GovernmentTypeWeights[gov] += GetFloatEffect(effects, $"gov_{gov}") * multiplier;
            }

            foreach (var reform in World.GovernmentReforms)
            {
                if (!GovernmentReformWeights.ContainsKey(reform))
                {
                    GovernmentReformWeights[reform] = 0;
                }
                GovernmentReformWeights[reform] += GetFloatEffect(effects, $"reform_{reform}") * multiplier;
            }

            VassalThreshhold += GetFloatEffect(effects, "vassal_threshhold") * multiplier;

            // renaissance
            RenaissanceFactor += GetFloatEffect(effects, "renaissance_factor") * multiplier;
        }
Example #2
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);
        }