Beispiel #1
0
 public void Save()
 {
     if (SaveCultures)
     {
         script.Save();
     }
 }
Beispiel #2
0
        public void Save()
        {
            if (!SaveReligions)
            {
                return;
            }

            LanguageManager.instance.SetupReligionEventSubsitutions();

            var list = new List <ScriptScope>();

            foreach (var child in script.Root.Children)
            {
                list.AddRange((child as ScriptScope)?.Children.Where((o => o is ScriptScope)).Where(o => !((ScriptScope)o).Name.Contains("_names")).Cast <ScriptScope>());
            }
            foreach (var religionParser in AllReligions)
            {
                if (religionParser.Provinces.Count > 0)
                {
                    religionParser.CreateSocietyDetails(religionParser.Provinces[0].Culture.Name);
                }
            }

            foreach (var scriptScope in list)
            {
                String name = (scriptScope as ScriptScope)?.Name;
                if (AllReligions.All(c => c.Name != name))
                {
                    System.Console.Out.WriteLine("Cannot find " + name);
                }
            }

            script.Save();
        }
Beispiel #3
0
        public void Save()
        {
            Script s = new Script();
            s.Name = Globals.GameDir + "map\\geographical_region.txt";
            s.Root = new ScriptScope();
            foreach (var region in regions)
            {
                ScriptScope ss = new ScriptScope();

                String duchieList = "";

                foreach (var titleParser in region.duchies)
                {
                    duchieList = duchieList + " " + titleParser.Name;
                }
                ss.Name = StarNames.SafeName(region.name);
                ss.Do(@"
                    duchies = {
                        " + duchieList + @"
                    }
");
                s.Root.Add(ss);
           }

            s.Save();
        }
Beispiel #4
0
        public void Init()
        {
            LanguageManager.instance.Add("norse", StarNames.Generate(Rand.Next(1000000)));
            LanguageManager.instance.Add("pagan", StarNames.Generate(Rand.Next(1000000)));

            Script s = new Script();

            script = s;
            s.Name = Globals.ModDir + "common\\cultures\\00_cultures.txt";
            s.Root = new ScriptScope();
            CultureGroupParser r = AddCultureGroup("barbarian");

            //  r.Init();
            AllCultureGroups.Add(r);

            var cul = r.AddCulture("norse");

            cul.dna       = CulturalDnaManager.instance.GetNewFromVanillaCulture();
            cul.dna.horde = false;
            //   cul.dna.horde = false;
            cul.DoDetailsForCulture();

            //    cul.Init();
            cul.Name = cul.Scope.Name;
            CultureMap[cul.Scope.Name] = cul;
            AllCultures.Add(cul);
            s.Save();
        }
Beispiel #5
0
        public void Save()
        {
            Script s = new Script();

            s.Name = Globals.GameDir + "map\\geographical_region.txt";
            s.Root = new ScriptScope();
            foreach (var region in regions)
            {
                ScriptScope ss = new ScriptScope();

                String duchieList = "";

                foreach (var titleParser in region.duchies)
                {
                    duchieList = duchieList + " " + titleParser.Name;
                }
                ss.Name = StarNames.SafeName(region.name);
                ss.Do(@"
                    duchies = {
                        " + duchieList + @"
                    }
");
                s.Root.Add(ss);
            }

            s.Save();
        }
Beispiel #6
0
        public void CreateFromTemplate(Script s, String prefix, String targetFilename,
                                       Dictionary <String, String> convert)
        {
            s.Name = targetFilename;

            SearchReplace(s.Root, convert, prefix);

            s.Save();
            Correct(s.Root, convert, prefix);
        }
Beispiel #7
0
        public void Save()
        {
            if (title == null)
            {
                return;
            }
            if (Title == null)
            {
                return;
            }

            string dir = Globals.ModDir + "history\\provinces\\";

            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }
            String provincesDir = Globals.MapDir + "history\\provinces\\" + id.ToString() + " - " + Name.Replace("c_", "") + ".txt";

            Script s = new Script();

            s.Root = new ScriptScope();
            s.Name = provincesDir;
            s.Root.Add(new ScriptCommand("title", Name, s.Root));
            s.Root.Add(new ScriptCommand("max_settlements", 3, s.Root));
            if (Title.Holder == null)
            {
                foreach (var provinceParser in Adjacent)
                {
                    if (provinceParser.title != null && provinceParser.Title.Holder != null)
                    {
                        s.Root.Add(new ScriptCommand("culture", provinceParser.Title.Holder.culture, s.Root));
                        s.Root.Add(new ScriptCommand("religion", provinceParser.Title.Holder.religion, s.Root));
                        break;
                    }
                }
            }
            else
            {
                s.Root.Add(new ScriptCommand("culture", Title.Holder.culture, s.Root));
                s.Root.Add(new ScriptCommand("religion", Title.Holder.religion, s.Root));
            }
            if (MapManager.instance.LoadedTerrain.ContainsKey(id))
            {
                s.Root.Add(new ScriptCommand("terrain", MapManager.instance.LoadedTerrain[id], s.Root));
            }

            foreach (var barony in baronies)
            {
                s.Root.Add(new ScriptCommand(barony.title, barony.type, s.Root));
            }
            s.Save();
        }
Beispiel #8
0
        public void Save()
        {
            foreach (var religionParser in AllReligions)
            {
                if (religionParser.ReligiousHeadTitle != null)
                {
                    CharacterParser chr = CharacterManager.instance.GetNewCharacter();
                    chr.GiveTitle(religionParser.ReligiousHeadTitle);

                    chr.religion = religionParser.Name;
                }
            }

            script.Save();
        }
Beispiel #9
0
        public void Save()
        {
            Script s = new Script();

            s.Name = Globals.ModDir + "events\\gen_" + name + "_events.txt";

            s.Root = new ScriptScope();
            s.Root.Add(new ScriptCommand("namespace", nameSpace, s.Root));

            foreach (var scriptScope in Events)
            {
                scriptScope.Value.Name = "character_event";
                s.Root.Add(scriptScope.Value);
            }

            s.Save();
            s      = new Script();
            s.Name = Globals.ModDir + "decisions\\gen_" + name + "_decisions.txt";

            s.Root = new ScriptScope();
            ScriptScope ss = new ScriptScope();

            s.Root.Add(ss);
            ss.Name = "decisions";
            //  s.Root.Add(new ScriptCommand("namespace", nameSpace, s.Root));

            foreach (var scriptScope in Decisions)
            {
                ScriptScope e = new ScriptScope();
                scriptScope.Value.Name = scriptScope.Key;
                ss.Add(scriptScope.Value);
            }

            s.Save();

            s      = new Script();
            s.Name = Globals.ModDir + "common\\traits\\03_zz_gen_" + name + "_traits.txt";

            s.Root = new ScriptScope();
            //       s.Root.Add(new ScriptCommand("namespace", nameSpace, s.Root));
            foreach (var scriptScope in Traits)
            {
                scriptScope.Value.Name = scriptScope.Key;
                s.Root.Add(scriptScope.Value);
            }

            s.Save();
        }
        public void Save()
        {
            Script s = new Script();
            s.Name = Globals.ModDir + "events\\gen_" + name + "_events.txt";

            s.Root = new ScriptScope();
            s.Root.Add(new ScriptCommand("namespace", nameSpace, s.Root));
       
            foreach (var scriptScope in Events)
            {
                scriptScope.Value.Name = "character_event";
                s.Root.Add(scriptScope.Value);
            }

            s.Save();
            s = new Script();
            s.Name = Globals.ModDir + "decisions\\gen_" + name + "_decisions.txt";

            s.Root = new ScriptScope();
            ScriptScope ss = new ScriptScope();
            s.Root.Add(ss);
            ss.Name = "decisions";
          //  s.Root.Add(new ScriptCommand("namespace", nameSpace, s.Root));
       
             foreach (var scriptScope in Decisions)
            {
                ScriptScope e = new ScriptScope();
                scriptScope.Value.Name = scriptScope.Key;
                ss.Add(scriptScope.Value);
            }

            s.Save();

            s = new Script();
            s.Name = Globals.ModDir + "common\\traits\\03_zz_gen_" + name + "_traits.txt";

            s.Root = new ScriptScope();
     //       s.Root.Add(new ScriptCommand("namespace", nameSpace, s.Root));
            foreach (var scriptScope in Traits)
            {
                scriptScope.Value.Name = scriptScope.Key;
                s.Root.Add(scriptScope.Value);
            }

            s.Save();
        }
Beispiel #11
0
        public void Save()
        {
            if (title == null)
                return;
            if (Title == null)
                return;

            string dir = Globals.ModDir + "history\\provinces\\";
            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }
            String provincesDir = Globals.MapDir + "history\\provinces\\" + id.ToString() + " - " + Name.Replace("c_", "") + ".txt";

            Script s = new Script();
            s.Root = new ScriptScope();
            s.Name = provincesDir;
            s.Root.Add(new ScriptCommand("title", Name, s.Root));
            s.Root.Add(new ScriptCommand("max_settlements", 3, s.Root));
            if (Title.Holder == null)
            {
                foreach (var provinceParser in Adjacent)
                {
                    if (provinceParser.title != null && provinceParser.Title.Holder != null)
                    {
                        s.Root.Add(new ScriptCommand("culture", provinceParser.Title.Holder.culture, s.Root));
                        s.Root.Add(new ScriptCommand("religion", provinceParser.Title.Holder.religion, s.Root));
                        break;
                    }
                }
            }
            else
            {
                s.Root.Add(new ScriptCommand("culture", Title.Holder.culture, s.Root));
                s.Root.Add(new ScriptCommand("religion", Title.Holder.religion, s.Root));
                
            }
            if (MapManager.instance.LoadedTerrain.ContainsKey(id))
                s.Root.Add(new ScriptCommand("terrain", MapManager.instance.LoadedTerrain[id], s.Root));
        
            foreach (var barony in baronies)
            {
                s.Root.Add(new ScriptCommand(barony.title, barony.type, s.Root));
            }
            s.Save();
        }
Beispiel #12
0
        public void Init()
        {
            LanguageManager.instance.Add("norse", StarNames.Generate(Rand.Next(1000000)));
            LanguageManager.instance.Add("pagan", StarNames.Generate(Rand.Next(1000000)));
            LanguageManager.instance.Add("christian", StarNames.Generate(Rand.Next(1000000)));
            
            Script s = new Script();
            script = s; 
            s.Name = Globals.ModDir + "common\\religions\\00_religions.txt";
            s.Root = new ScriptScope();
            ReligionGroupParser r = AddReligionGroup("pagan");
            r.Init();
            var pagan = r.AddReligion("pagan");

            pagan.CreateRandomReligion(null); 
            
            AllReligionGroups.Add(r);
            s.Save();
           
        }
Beispiel #13
0
        public void Init()
        {
            LanguageManager.instance.Add("norse", StarNames.Generate(Rand.Next(1000000)));
            LanguageManager.instance.Add("pagan", StarNames.Generate(Rand.Next(1000000)));
            LanguageManager.instance.Add("christian", StarNames.Generate(Rand.Next(1000000)));

            Script s = new Script();

            script = s;
            s.Name = Globals.ModDir + "common\\religions\\00_religions.txt";
            s.Root = new ScriptScope();
            ReligionGroupParser r = AddReligionGroup("pagan");

            r.Init();
            var pagan = r.AddReligion("pagan");

            pagan.CreateRandomReligion(null);

            AllReligionGroups.Add(r);
            s.Save();
        }
Beispiel #14
0
        public void Save()
        {
            return;

            Script eventScript = EventManager.instance.GetNewScript("ck2gen_societyEvents");

            string interestedBlock = "";

            foreach (var instanceSecretSociety in SocietyManager.instance.secretSocieties)
            {
                interestedBlock += "interested_in_society = " + instanceSecretSociety + "\n";
            }

            eventScript.Root.Do($@"
            
            namespace = MNM

            character_event = {{
	            id = MNM.9910010
	            hide_window = yes

	            is_triggered_only = yes

	            trigger = {{
		            is_in_society = no
		            OR = {{
			            {interestedBlock}
		            }}
	            }}

	            immediate = {{
		            character_event = {{ id = MNM.9910011 days = 90 random = 640 }}
	            }}
            }}



    character_event = {{
	    id = MNM.9910024
	    desc = EVTDESC_MNM_10024
	    picture = GFX_evt_ritual_scroll
	    border = GFX_event_normal_frame_religion
	    is_triggered_only = yes
	    trigger = {{
		    NOT = {{
			    FROM = {{
				    any_society_member = {{
					    always = yes
				    }}
			    }}
		    }}
	    }}
	    immediate = {{
		    set_character_flag = society_join_block
	    }}
	    option = {{
		    name = EVTOPTA_MNM_10024
		    join_society = FROM
		    set_society_grandmaster = yes
		    add_society_currency_massive_effect = yes
		    clr_character_flag = society_join_block
	    }}
	    option = {{
		    name = EVTOPTB_MNM_10024
		    clr_character_flag = society_join_block
	    }}
    }}

"
                                );

            String interestedTrigger = "";


            foreach (var instanceSecretSociety in SocietyManager.instance.secretSocieties)
            {
                interestedTrigger += $@"

	if = {{
			limit = {{
				interested_in_society = {instanceSecretSociety}
				NOT = {{ has_character_flag = ongoing_recruitment }}
			}}

			random_society_member = {{
				limit = {{
					society_member_of = {instanceSecretSociety}
					#is_within_diplo_range = ROOT
					is_society_grandmaster = no
				}}
				save_event_target_as = assassins_recruiter
				character_event = {{ id = MNM.9910012 }}
			}}
		}}
";
            }
            String monasticBlock = "";


            foreach (var instanceSecretSociety in SocietyManager.instance.monasticSocieties)
            {
                monasticBlock += $@"

					society_member_of = {instanceSecretSociety}	
";
            }

            eventScript.Root.Do($@"


character_event = {{
	id = MNM.9910011
	hide_window = yes

	is_triggered_only = yes

	trigger = {{
		is_in_society = no
		OR = {{
			{interestedBlock}
		}}
	}}

	immediate = {{
		
	        {interestedTrigger}
	
	}}	
}}


    character_event = {{
	id = MNM.994450
	hide_window = yes
	is_triggered_only = yes
	trigger = {{
		FROM = {{
			leader = {{
						OR = {{
		                    {monasticBlock}
	                    }}

			}}
		}}
	}}
	immediate = {{
		FROM = {{
			leader = {{
				character_event = {{
					id = MNM.994451
				}}
			}}
		}}
	}}
}}


character_event = {{
	id = MNM.994451
	hide_window = yes
	is_triggered_only = yes
	immediate = {{
		FROM = {{
			letter_event = {{
				id = MNM.994452
			}}
		}}
	}}
}}

letter_event = {{
	id = MNM.994452
	desc = EVTDESC_MNM_4452
	border = GFX_event_letter_frame_religion
	is_triggered_only = yes
	immediate = {{
		set_character_flag = society_join_block
	}}
	option = {{
		name = EVTOPTA_MNM_44511
		FROM = {{
			ROOT = {{
				join_prev_monastic_order_society = yes
			}}
		}}
		scaled_wealth = -0.25
		clr_character_flag = society_join_block
	}}
}}


    character_event = {{
	id = MNM.99100
	hide_window = yes
	is_triggered_only = yes
	trigger = {{
		FROM = {{
			leader = {{
				society_member_of = hermetics
			}}
		}}
	}}
	immediate = {{
		FROM = {{
			leader = {{
				character_event = {{
					id = MNM.101
				}}
			}}
		}}
	}}
}}

character_event = {{
	id = MNM.9910012
	hide_window = yes
	is_triggered_only = yes
	immediate = {{
		FROM = {{
			if = {{
				limit = {{
					NOT = {{
						has_character_flag = ongoing_recruitment
					}}
				}}
				set_character_flag = assassins_attempted_recruitment
				set_character_flag = ongoing_recruitment
				character_event = {{
						id = MNM.6022
					}}
			}}
		}}
	}}
}}

");
            eventScript.Save();
            script.Save();
        }
Beispiel #15
0
        public void Save()
        {
            if (title == null)
            {
                return;
            }
            if (Title == null)
            {
                return;
            }

            if (!TitleManager.instance.Titles.Contains(Title))
            {
                int gfdgfd = 0;
            }
            string dir = Globals.ModDir + "history\\provinces\\";

            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }
            String provincesDir = Globals.MapDir + "history\\provinces\\" + id.ToString() + " - " + Title.Name.Replace("c_", "") + ".txt";

            Script s = new Script();

            s.Root = new ScriptScope();
            s.Name = provincesDir;
            s.Root.Add(new ScriptCommand("title", Title.Name, s.Root));
            s.Root.Add(new ScriptCommand("max_settlements", max_settlements, s.Root));



            if (Culture != null)
            {
                s.Root.Add(new ScriptCommand("culture", initialCulture, s.Root));
                s.Root.Add(new ScriptCommand("religion", initialReligion, s.Root));
            }
            if (MapManager.instance.LoadedTerrain.ContainsKey(id))
            {
                s.Root.Add(new ScriptCommand("terrain", MapManager.instance.LoadedTerrain[id], s.Root));
            }



            int cc = 0;

            foreach (var barony in baronies)
            {
                if (baronies[0].type == "tribal" && barony.type != "temple" && cc > 0)
                {
                    continue;
                }
                if (barony.enabled && cc == 0)
                {
                    s.Root.Add(new ScriptCommand(barony.title, barony.type, s.Root));
                }
                cc++;
            }

            var cities = baronies.Where(c => c.type == "city" && c.enabled);

            if (cities.Any())
            {
                if (Adjacent.Where(o => !o.land).Count() > 0)
                {
                    s.Root.Do(@"1.1.1 = { 
                   " + cities.First().title + @" = ct_port_1
                  }");
                }
            }

            if (terrain != null)
            {
                s.Root.Add(new ScriptCommand("terrain", terrain, s.Root));
            }

            foreach (var scriptScope in dateScripts)
            {
                s.Root.SetChild(scriptScope);
            }

            s.Save();
        }
        public void Save()
        {

            foreach (var cultureParser in CultureManager.instance.AllCultures)
            {
                if (cultureParser.Governments.Count == 0)
                {
                    var gov = GovernmentManager.instance.CreateNewGovernment(cultureParser);

                }
                foreach (var government in cultureParser.Governments)
                {
                    if (government.cultureAllow.Count == 0)
                    {
                        government.cultureAllow.Add(cultureParser.Name);
                    }
                }

                if (!Government.cultureDone.Contains(cultureParser.Name))
                {
                    cultureParser.Governments.Add(GovernmentManager.instance.CreateNewGovernment(cultureParser));      
                }
            }

            if (!Directory.Exists(Globals.ModDir + "gfx\\interface\\"))
                Directory.CreateDirectory(Globals.ModDir + "gfx\\interface\\");
            var files = Directory.GetFiles(Globals.ModDir + "gfx\\interface\\");
            foreach (var file in files)
            {
                File.Delete(file);
            }
            

            foreach (var government in governments)
            {
                switch (government.type)
                {
                    case "nomadic":
                        try
                        {
                            File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_nomadic.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");
                        }
                        catch (Exception)
                        {
                            
                            
                        }
                        
                        SpriteManager.instance.AddGovernment(government);
                        break;
                    case "tribal":
                       try
                        {
                            File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_tribal.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");
                        }
                        catch (Exception)
                        {
                            
                            
                        }
                        SpriteManager.instance.AddGovernment(government);
                    
                        break;
                    case "feudal":
                        try
                        {
                            File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_feudal.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");

                        }
                        catch (Exception)
                        {
                            
                            
                        }
                        SpriteManager.instance.AddGovernment(government);
                    
                        break;
                    case "theocracy":
                        try
                        {
                            File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_theocracy.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");
                        }
                        catch (Exception)
                        {
                            
                        }
                        
                        SpriteManager.instance.AddGovernment(government);
                    
                        break;
                    case "republic":
                        try
                        {
                            File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_republic.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");

                        }
                        catch (Exception)
                        {
                            
                        }
                        SpriteManager.instance.AddGovernment(government);
                    
                        break;      
                }
                
            }


            Script s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\nomadic_governments.txt";

            s.Root = new ScriptScope();

            var scope = new ScriptScope();
            scope.Name = "nomadic_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "nomadic" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();

            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\feudal_governments.txt";

            s.Root = new ScriptScope();

            scope = new ScriptScope();
            scope.Name = "feudal_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "feudal" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\theocracy_governments.txt";

            s.Root = new ScriptScope();

            scope = new ScriptScope();
            scope.Name = "theocracy_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "theocracy" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\republic_governments.txt";

            s.Root = new ScriptScope();

            scope = new ScriptScope();
            scope.Name = "republic_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "republic" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\tribal_governments.txt";

            s.Root = new ScriptScope();

            scope = new ScriptScope();
            scope.Name = "tribal_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "tribal" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();
        }
Beispiel #17
0
        public void Init()
        {
            LanguageManager.instance.Add("norse", StarNames.Generate(Rand.Next(1000000)));
            LanguageManager.instance.Add("pagan", StarNames.Generate(Rand.Next(1000000)));
            
            Script s = new Script();
            script = s; 
            s.Name = Globals.ModDir + "common\\cultures\\00_cultures.txt";
            s.Root = new ScriptScope();
            CultureGroupParser r = AddCultureGroup("barbarian");

          //  r.Init();
            AllCultureGroups.Add(r);

            var cul = r.AddCulture("norse");

            cul.dna = CulturalDnaManager.instance.GetNewFromVanillaCulture();
            cul.dna.horde = false;
         //   cul.dna.horde = false;
            cul.DoDetailsForCulture(); 
            
            //    cul.Init();
            cul.Name = cul.Scope.Name;
            CultureMap[cul.Scope.Name] = cul;
            AllCultures.Add(cul);
            s.Save();
           
        }
Beispiel #18
0
        public void SaveTitles()
        {
            foreach (var titleParser in Titles)
            {
                if (titleParser.Name == "b_sasaka")
                {
                    int gfdg = 0;
                }

                if (titleParser.culture == null)
                {
                    if (titleParser.Dejure != null)
                    {
                        titleParser.culture = titleParser.Dejure.culture;
                    }
                    else
                    {
                        titleParser.culture = "norse";
                    }
                }
                if (titleParser.Rank > 1 && titleParser.Scope.Find("capital") == null)
                {
                }
                var  p      = titleParser.GetAllProvinces();
                bool bFound = false;
                foreach (var provinceParser in p)
                {
                    if (provinceParser.id == titleParser.capital)
                    {
                        bFound = true;
                        break;
                    }
                }

                if (!bFound && p.Count > 0)
                {
                    var ca = p[Rand.Next(p.Count)];
                    titleParser.capital = ca.id;
                    var cap = (titleParser.Scope.Find("capital") as ScriptCommand);
                    if (cap == null)
                    {
                        titleParser.Scope.Add(new ScriptCommand("capital", ca.id, titleParser.Scope));
                    }
                    else
                    {
                        cap.Value = ca.id;
                    }
                    titleParser.CapitalProvince = ca;
                    if (titleParser.Holder != null)
                    {
                        titleParser.Holder.GiveTitleSoftPlusIntermediate(titleParser.CapitalProvince.Title);
                    }
                }
                int h = 0;
                foreach (var child in titleParser.Scope.Children)
                {
                    ScriptScope scope = child as ScriptScope;
                }

                String tit = titleParser.Culture.dna.kingTitle;

                switch (titleParser.Rank)
                {
                case 0:
                    tit = titleParser.Culture.dna.baronTitle;
                    break;

                case 1:
                    tit = titleParser.Culture.dna.countTitle;
                    break;

                case 2:
                    tit = titleParser.Culture.dna.dukeTitle;
                    break;

                case 3:
                    tit = titleParser.Culture.dna.kingTitle;
                    break;

                case 4:
                    tit = titleParser.Culture.dna.empTitle;
                    break;
                }

                if (titleParser.Rank > 0)
                {
                    if (!titleParser.Scope.HasNamed("culture"))
                    {
                        titleParser.Scope.Add(new ScriptCommand()
                        {
                            Name = "culture", Value = titleParser.culture
                        });
                    }
                }

                if (tit == null)
                {
                }
                if (tit != null && tit.Trim().Length > 0)
                {
                    if (!titleParser.Scope.HasNamed("title_female") && !titleParser.Scope.HasNamed("title"))
                    {
                        titleParser.Scope.Do(
                            @"
                        title=" + tit + @"
                        title_female=" + tit + @"
"
                            );
                    }
                }
            }



            if (!Directory.Exists(Globals.ModDir + "history\\titles\\"))
            {
                Directory.CreateDirectory(Globals.ModDir + "history\\titles\\");
            }
            var files = Directory.GetFiles(Globals.ModDir + "history\\titles\\");

            foreach (var file in files)
            {
                File.Delete(file);
            }
            for (int index = 0; index < Titles.Count; index++)
            {
                var title = Titles[index];
                if (title.Name == "b_sasaka")
                {
                }

                if (!title.Active && title.Rank > 0)
                {
                    continue;
                }


                if (title.Religious)
                {
                }
                Script titleScript =
                    ScriptLoader.instance.Load(Globals.GameDir + "history\\titles\\" + title.Name + ".txt");
                titleScript.Root.Clear();

                /*   ScriptScope thing = new ScriptScope();
                 * thing.Name = "1.1.1";
                 * titleScript.Root.SetChild(thing);*/

                /*
                 * if (title.government == "republic")
                 * {
                 *    thing.Add(new ScriptCommand() {Name = "law", Value = "succ_patrician_elective"});
                 *    // if (title.Liege != null && title.Rank == 0 && title.TopmostTitle.government == "republic")
                 *    {
                 *        // if (title.Liege.Owns[0].baronies[0].title == title.Name)
                 *        {
                 *            var name = title.Culture.dna.GetPlaceName();
                 *            var sname = StarNames.SafeName(name);
                 *            while (LanguageManager.instance.Get(sname) != null)
                 *            {
                 *                name = title.Culture.dna.GetPlaceName();
                 *                sname = StarNames.SafeName(name);
                 *            }
                 *            if (!dynastiesWithPalaces.Contains(title.Holder.Dynasty.ID))
                 *            {
                 *                var barony = TitleManager.instance.CreateBaronyScriptScope(null, title.Culture);
                 *                Titles.Add(barony);
                 *                barony.government = "republicpalace";
                 *                barony.republicdynasty = title.Holder.Dynasty.ID;
                 *                barony.culture = title.culture;
                 *                barony.republicreligion = title.Holder.religion;
                 *                barony.Liege = title;
                 *                title.Holder.GiveTitleSoft(barony);
                 *                dynastiesWithPalaces.Add(title.Holder.Dynasty.ID);
                 *
                 *            }
                 *        }
                 *    }
                 * }
                 */
                if (title.Liege != null && title.Liege.Rank > title.Rank)
                {
                    //    thing.Add(new ScriptCommand() {Name = "liege", Value = title.Liege.Name});
                }

                /* if (title.Rank == 0 && title.government == "republicpalace")
                 * {
                 *
                 *   thing.Add(new ScriptCommand() { Name = "holding_dynasty", Value = title.republicdynasty });
                 *   //thing.Add(new ScriptCommand() { Name = "liege", Value = title.republicdynasty });
                 *   if (title.Scope.Find("culture") == null)
                 *   {
                 *       title.Scope.Add(new ScriptCommand() { Name = "culture", Value = title.culture });
                 *       title.Scope.Add(new ScriptCommand() { Name = "religion", Value = title.republicreligion });
                 *
                 *   }
                 * }*/

                //     titleScript.Root.SetChild(thing);

                foreach (var scriptScope in title.titleScripts)
                {
                    int v = 2;
                    if (!scriptScope.FromVanilla)
                    {
                        while (titleScript.Root.HasNamed(scriptScope.Name))
                        {
                            var indexOf = scriptScope.Name.LastIndexOf(".");//(v - 1));
                            scriptScope.Name = scriptScope.Name.Substring(0, indexOf) + "." + v;
                            v++;
                        }
                    }
                    titleScript.Root.SetChild(scriptScope);
                }

                /*    TitleParser lastLiege = null;
                 * foreach (var heldDate in title.heldDates)
                 * {
                 *  ScriptScope thing = new ScriptScope();
                 *  thing.Name = heldDate.date+".1.1";
                 *  titleScript.Root.SetChild(thing);
                 *  if (title.Culture.dna.horde)
                 *      thing.Add(new ScriptCommand() { Name = "historical_nomad", Value = true });
                 *
                 *  if (title.Liege != null && title.Liege.Rank > title.Rank && title.Liege != lastLiege)
                 *  {
                 *      thing.Add(new ScriptCommand() { Name = "liege", Value = title.Liege.Name });
                 *      lastLiege = title.Liege;
                 *  }
                 *
                 * //  if (title.Holder != null)
                 *  {
                 *      thing.Add(new ScriptCommand() { Name = "holder", Value = heldDate.chrid });
                 *
                 *      //     title.Holder.MakeAlive();
                 *  }
                 *
                 * }
                 * /*      {
                 *
                 *        {
                 *            ScriptScope thing = new ScriptScope();
                 *            thing.Name = "1.1.1";
                 *            titleScript.Root.SetChild(thing);
                 *            if (title.Culture.dna.horde)
                 *                thing.Add(new ScriptCommand() { Name = "historical_nomad", Value = true });
                 *
                 *            if (title.Liege != null)
                 *            {
                 *                thing.Add(new ScriptCommand() { Name = "liege", Value = title.Liege.Name });
                 *
                 *            }
                 *
                 *            if (title.Holder != null)
                 *            {
                 *                thing.Add(new ScriptCommand() { Name = "holder", Value = title.Holder.ID });
                 *
                 *                //     title.Holder.MakeAlive();
                 *            }
                 *            else if (title.SubTitles.Count > 0 && title.Rank >= 2 && title.Holder == null)
                 *            {
                 *
                 *                thing.Add(new ScriptCommand() { Name = "holder", Value = title.SubTitles.Values.ToArray()[0].Holder.ID });
                 *                //    title.SubTitles.Values.ToArray()[0].Holder.MakeAlive();
                 *            }
                 *            thing = new ScriptScope();
                 *            thing.Name = SimulationManager.instance.Year + ".1.1";
                 *            titleScript.Root.SetChild(thing);
                 *            if (title.CurrentHolder != null)
                 *            {
                 *                thing.Add(new ScriptCommand() { Name = "holder", Value = title.CurrentHolder.ID });
                 *
                 *            }
                 *
                 *
                 * }
                 *
                 *
                 * }
                 */

                titleScript.Save();
            }
        }
Beispiel #19
0
        public void Save()
        {
            return;

            foreach (var cultureParser in CultureManager.instance.AllCultureGroups)
            {
                if (cultureParser.Governments.Count == 0)
                {
                    //    var gov = GovernmentManager.instance.CreateNewGovernment(cultureParser.Cultures[0]);
                }

                if (!cultureDone.Contains(cultureParser.Name))
                {
                    var g = GovernmentManager.instance.CreateNewGovernment(cultureParser.Cultures[0]);

                    cultureParser.Governments.Add(g);
                }

                foreach (var government in cultureParser.Governments)
                {
                    if (government.cultureGroupAllow.Count == 0)
                    {
                        government.cultureGroupAllow.Add(cultureParser.Name);
                    }
                }
            }

            if (!Directory.Exists(Globals.ModDir + "gfx\\interface\\"))
            {
                Directory.CreateDirectory(Globals.ModDir + "gfx\\interface\\");
            }
            var files = Directory.GetFiles(Globals.ModDir + "gfx\\interface\\");

            foreach (var file in files)
            {
                File.Delete(file);
            }


            foreach (var government in governments)
            {
                try
                {
                    File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_republic.dds",
                              Globals.ModDir + "gfx\\interface\\government_icon_" +
                              government.name.Replace("_government", "republic_government") + ".dds");
                    File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_feudal.dds",
                              Globals.ModDir + "gfx\\interface\\government_icon_" +
                              government.name.Replace("_government", "feudal_government") + ".dds");
                    File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_tribal.dds",
                              Globals.ModDir + "gfx\\interface\\government_icon_" +
                              government.name.Replace("_government", "tribal_government") + ".dds");
                    File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_nomadic.dds",
                              Globals.ModDir + "gfx\\interface\\government_icon_" +
                              government.name.Replace("_government", "nomadic_government") + ".dds");
                    File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_theocracy.dds",
                              Globals.ModDir + "gfx\\interface\\government_icon_" +
                              government.name.Replace("_government", "theocracy_government") + ".dds");
                }
                catch (Exception)
                {
                }
            }



            Script s     = new Script();
            var    scope = new ScriptScope();

            /*
             * s.Name = Globals.ModDir + "common\\governments\\nomadic_governments.txt";
             *
             * s.Root = new ScriptScope();
             *
             * scope.Name = "nomadic_governments";
             * s.Root.Add(scope);
             * foreach (var government in governments)
             * {
             *   if (government.cultureAllow.Count > 0)
             *   {
             *       {
             *           government.SetType("nomadic");
             *
             *           var g = new ScriptScope();
             *           g.Name = government.name.Replace("_government", government.type+"_government");
             *           var last = government.name;
             *           government.name = g.Name;
             *           LanguageManager.instance.Add(g.Name,
             *                CultureManager.instance.CultureMap[government.cultureAllow[0]].dna.GetUniqueMaleName());
             *           government.SetType("nomadic");
             *
             *           government.Save(g);
             *           scope.Add(g);
             *           government.name = last;
             *       }
             *
             *   }
             * }
             *
             * s.Save();
             */
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\feudal_governments.txt";

            s.Root = new ScriptScope();

            scope      = new ScriptScope();
            scope.Name = "feudal_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.cultureGroupAllow.Count > 0)
                {
                    government.SetType("feudal");
                    var g = new ScriptScope();
                    g.Name = government.name.Replace("_government", government.type + "_government");
                    var last = government.name;
                    government.name = g.Name;
                    LanguageManager.instance.Add(g.Name,
                                                 CultureManager.instance.CultureGroupMap[government.cultureGroupAllow[0]].Cultures[0].dna.GetUniqueMaleName());
                    government.SetType("feudal");
                    government.Save(g);
                    scope.Add(g);
                    government.name = last;
                }
            }

            s.Save();
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\theocracy_governments.txt";

            s.Root = new ScriptScope();

            scope      = new ScriptScope();
            scope.Name = "theocracy_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.cultureGroupAllow.Count > 0)
                {
                    government.SetType("theocracy");
                    var g = new ScriptScope();
                    g.Name = government.name.Replace("_government", government.type + "_government");
                    var last = government.name;
                    government.name = g.Name;
                    LanguageManager.instance.Add(g.Name,
                                                 CultureManager.instance.CultureGroupMap[government.cultureGroupAllow[0]].Cultures[0].dna.GetUniqueMaleName());
                    government.SetType("theocracy");
                    government.Save(g);
                    scope.Add(g);
                    government.name = last;
                }
            }

            s.Save();
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\republic_governments.txt";

            s.Root = new ScriptScope();

            scope      = new ScriptScope();
            scope.Name = "republic_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.cultureGroupAllow.Count > 0)
                {
                    government.SetType("republic");
                    var g = new ScriptScope();
                    g.Name = government.name.Replace("_government", government.type + "_government");
                    var last = government.name;
                    government.name = g.Name;
                    LanguageManager.instance.Add(g.Name,
                                                 CultureManager.instance.CultureGroupMap[government.cultureGroupAllow[0]].Cultures[0].dna.GetUniqueMaleName());
                    government.SetType("republic");
                    government.Save(g);
                    scope.Add(g);
                    government.name = last;
                }
            }

            s.Save();
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\tribal_governments.txt";

            s.Root = new ScriptScope();

            scope      = new ScriptScope();
            scope.Name = "tribal_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.cultureGroupAllow.Count > 0)
                {
                    government.SetType("tribal");
                    var g = new ScriptScope();
                    g.Name = government.name.Replace("_government", government.type + "_government");
                    var last = government.name;
                    government.name = g.Name;
                    SpriteManager.instance.AddGovernment(government);
                    LanguageManager.instance.Add(g.Name,
                                                 CultureManager.instance.CultureGroupMap[government.cultureGroupAllow[0]].Cultures[0].dna.GetUniqueMaleName());
                    government.SetType("tribal");
                    government.Save(g);
                    scope.Add(g);
                    government.name = last;
                }
            }

            s.Save();
        }
Beispiel #20
0
        public void SaveTitles()
        {
            foreach (var titleParser in Titles)
            {
                if (titleParser.culture == null)
                {
                    continue;
                }

                String tit = titleParser.Culture.dna.kingTitle;

                switch (titleParser.Rank)
                {
                case 0:
                    tit = titleParser.Culture.dna.baronTitle;
                    break;

                case 1:
                    tit = titleParser.Culture.dna.countTitle;
                    break;

                case 2:
                    tit = titleParser.Culture.dna.dukeTitle;
                    break;

                case 3:
                    tit = titleParser.Culture.dna.kingTitle;
                    break;

                case 4:
                    tit = titleParser.Culture.dna.empTitle;
                    break;
                }

                titleParser.Scope.Add(new ScriptCommand()
                {
                    Name = "culture", Value = titleParser.culture
                });

                titleParser.Scope.Do(
                    @"
                        title=" + tit + @"
                        title_female=" + tit + @"
"
                    );
            }

            foreach (var religionParser in ReligionManager.instance.AllReligions)
            {
                if (religionParser.Believers.Count > 0 && religionParser.hasLeader)
                {
                    religionParser.DoLeader(religionParser.Believers[Rand.Next(religionParser.Believers.Count)]);
                }
            }
            if (!Directory.Exists(Globals.ModDir + "history\\titles\\"))
            {
                Directory.CreateDirectory(Globals.ModDir + "history\\titles\\");
            }
            var files = Directory.GetFiles(Globals.ModDir + "history\\titles\\");

            foreach (var file in files)
            {
                File.Delete(file);
            }
            foreach (var title in Titles)
            {
                if (!title.Active)
                {
                    continue;
                }
                if (title.Religious)
                {
                }
                Script titleScript = ScriptLoader.instance.Load(Globals.GameDir + "history\\titles\\" + title + ".txt");

                titleScript.Root.Clear();



                {
                    if (titleScript.Root.HasNamed("767.1.1"))
                    {
                        titleScript.Root.Delete("767.1.1");
                        titleScript.Root.Delete("768.1.1");
                    }
                    {
                        ScriptScope thing = new ScriptScope();
                        thing.Name = "767.1.1";
                        titleScript.Root.SetChild(thing);
                        if (title.Culture.dna.horde)
                        {
                            thing.Add(new ScriptCommand()
                            {
                                Name = "historical_nomad", Value = true
                            });
                        }

                        if (title.Liege != null)
                        {
                            thing.Add(new ScriptCommand()
                            {
                                Name = "liege", Value = title.Liege.Name
                            });
                        }

                        if (title.Holder != null)
                        {
                            thing.Add(new ScriptCommand()
                            {
                                Name = "holder", Value = title.Holder.ID
                            });

                            //     title.Holder.MakeAlive();
                        }
                        else if (title.SubTitles.Count > 0 && title.Rank >= 2 && title.Holder == null)
                        {
                            thing.Add(new ScriptCommand()
                            {
                                Name = "holder", Value = title.SubTitles.Values.ToArray()[0].Holder.ID
                            });
                            //    title.SubTitles.Values.ToArray()[0].Holder.MakeAlive();
                        }
                        thing      = new ScriptScope();
                        thing.Name = "768.1.1";
                        titleScript.Root.SetChild(thing);
                        if (title.CurrentHolder != null)
                        {
                            thing.Add(new ScriptCommand()
                            {
                                Name = "holder", Value = title.CurrentHolder.ID
                            });
                        }
                    }
                }

                titleScript.Save();
            }
        }
Beispiel #21
0
        public void Save()
        {
            /*
             * script.Root.Do($@"
             * has_assassins_prerequisites = {{
             *  age = 16
             *      true_religion_{ReligionManager.instance.ShiiteEquiv.Name}_trigger = yes
             *          OR = {{
             *                  is_female = no
             *                  has_game_rule = {{
             *                          name = gender
             *                          value = all
             *                  }}
             *          }}
             *  }}
             * ");
             *
             * script.Root.Do($@"
             * has_common_devilworship_prerequisites = {{
             *      age = 16
             *      custom_tooltip = {{
             *              text = must_be_a_sinner_tooltip
             *              hidden_tooltip = {{
             *                      OR = {{
             *                              has_impious_trait_trigger = yes
             *                              has_vice_trigger = yes
             *                              trait = drunkard
             *                              trait = possessed
             *                              trait = lunatic
             *                      }}
             *              }}
             *      }}
             * }}
             *
             * ");
             *
             * script.Root.Do($@"
             *
             * has_satanists_prerequisites = {{
             *      has_common_devilworship_prerequisites = yes
             *      OR = {{
             *              religion_group = {ReligionManager.instance.ChristianGroupSub.Name}
             *              religion_group = {ReligionManager.instance.MuslimGroupSub.Name}
             *              religion_group = {ReligionManager.instance.ZoroGroupSub.Name}
             *              religion_group = {ReligionManager.instance.JewGroupSub.Name}
             *      }}
             * }}
             *
             * ");
             *
             *
             *
             * script.Root.Do($@"
             *
             * has_trollcrafters_prerequisites = {{
             *  has_common_devilworship_prerequisites = yes
             *  OR = {{
             *          religion_group = {ReligionManager.instance.PaganGroupSub.Name}
             *  }}
             * }}
             *
             * ");
             *
             *
             * script.Root.Do($@"
             *
             * has_cult_of_kali_prerequisites = {{
             *  has_common_devilworship_prerequisites = yes
             *  OR = {{
             *          religion = {ReligionManager.instance.HinduEquiv.Name}
             *  }}
             * }}
             *
             * ");
             *
             * script.Root.Do($@"
             *
             * has_cold_ones_prerequisites = {{
             *  has_common_devilworship_prerequisites = yes
             *  OR = {{
             *          religion = {ReligionManager.instance.JainEquiv.Name}
             *  }}
             * }}
             *
             * ");
             *
             *
             *
             * script.Root.Do($@"
             *
             * has_plaguebringers_prerequisites = {{
             *  has_common_devilworship_prerequisites = yes
             *  OR = {{
             *          religion = {ReligionManager.instance.BuddhistEquiv.Name}
             *  }}
             * }}
             *
             * ");
             */

            script.Save();
        }
Beispiel #22
0
 public void Save()
 {
     script.Save();
 }
Beispiel #23
0
        public void Save()
        {
            foreach (var cultureParser in CultureManager.instance.AllCultures)
            {
                if (cultureParser.Governments.Count == 0)
                {
                    var gov = GovernmentManager.instance.CreateNewGovernment(cultureParser);
                }
                foreach (var government in cultureParser.Governments)
                {
                    if (government.cultureAllow.Count == 0)
                    {
                        government.cultureAllow.Add(cultureParser.Name);
                    }
                }

                if (!Government.cultureDone.Contains(cultureParser.Name))
                {
                    cultureParser.Governments.Add(GovernmentManager.instance.CreateNewGovernment(cultureParser));
                }
            }

            if (!Directory.Exists(Globals.ModDir + "gfx\\interface\\"))
            {
                Directory.CreateDirectory(Globals.ModDir + "gfx\\interface\\");
            }
            var files = Directory.GetFiles(Globals.ModDir + "gfx\\interface\\");

            foreach (var file in files)
            {
                File.Delete(file);
            }


            foreach (var government in governments)
            {
                switch (government.type)
                {
                case "nomadic":
                    try
                    {
                        File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_nomadic.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");
                    }
                    catch (Exception)
                    {
                    }

                    SpriteManager.instance.AddGovernment(government);
                    break;

                case "tribal":
                    try
                    {
                        File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_tribal.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");
                    }
                    catch (Exception)
                    {
                    }
                    SpriteManager.instance.AddGovernment(government);

                    break;

                case "feudal":
                    try
                    {
                        File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_feudal.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");
                    }
                    catch (Exception)
                    {
                    }
                    SpriteManager.instance.AddGovernment(government);

                    break;

                case "theocracy":
                    try
                    {
                        File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_theocracy.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");
                    }
                    catch (Exception)
                    {
                    }

                    SpriteManager.instance.AddGovernment(government);

                    break;

                case "republic":
                    try
                    {
                        File.Copy(Globals.GameDir + "gfx\\interface\\government_icon_republic.dds", Globals.ModDir + "gfx\\interface\\government_icon_" + government.name.Replace("government_", "") + ".dds");
                    }
                    catch (Exception)
                    {
                    }
                    SpriteManager.instance.AddGovernment(government);

                    break;
                }
            }


            Script s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\nomadic_governments.txt";

            s.Root = new ScriptScope();

            var scope = new ScriptScope();

            scope.Name = "nomadic_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "nomadic" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();

            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\feudal_governments.txt";

            s.Root = new ScriptScope();

            scope      = new ScriptScope();
            scope.Name = "feudal_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "feudal" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\theocracy_governments.txt";

            s.Root = new ScriptScope();

            scope      = new ScriptScope();
            scope.Name = "theocracy_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "theocracy" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\republic_governments.txt";

            s.Root = new ScriptScope();

            scope      = new ScriptScope();
            scope.Name = "republic_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "republic" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();
            s = new Script();

            s.Name = Globals.ModDir + "common\\governments\\tribal_governments.txt";

            s.Root = new ScriptScope();

            scope      = new ScriptScope();
            scope.Name = "tribal_governments";
            s.Root.Add(scope);
            foreach (var government in governments)
            {
                if (government.type == "tribal" && government.cultureAllow.Count > 0)
                {
                    var g = new ScriptScope();
                    g.Name = government.name;
                    government.Save(g);
                    scope.Add(g);
                }
            }

            s.Save();
        }