Beispiel #1
0
        public Dynasty GetDynasty(CultureParser culture)
        {
            ScriptScope scope = new ScriptScope();

            scope.Name = ID.ToString();
            ID++;
            do
            {
                Name = culture.dna.GetDynastyName();
            } while (Name == null || Name.Trim().Length == 0);

            var nameScope = new ScriptCommand("name", Name, scope);

            scope.Add(nameScope);
            scope.Add(new ScriptCommand("culture", culture.Name, scope));
            script.Root.Add(scope);
            var d = new Dynasty()
            {
                ID = ID - 1, Scope = scope, NameScope = nameScope
            };

            d.Color            = Color.FromArgb(255, Rand.Next(200) + 55, Rand.Next(200) + 55, Rand.Next(200) + 55);
            DynastyMap[ID - 1] = d;
            culture.Dynasties.Add(d);
            return(d);
        }
Beispiel #2
0
        public CharacterParser CreateNewCharacter(Dynasty dynasty, bool bFemale, int dateOfBirth, string religion, String culture)
        {
            if (!bInit)
            {
                Init();
            }

            var chr = new CharacterParser();

            Characters.Add(chr);
            AliveCharacters.Add(chr);
            chr.YearOfBirth = dateOfBirth;
            if (dynasty == null)
            {
                dynasty = DynastyManager.instance.GetDynasty(CultureManager.instance.CultureMap[culture]);
            }
            chr.Dynasty     = dynasty;
            chr.religion    = religion;
            chr.isFemale    = bFemale;
            chr.culture     = culture;
            chr.YearOfDeath = SimulationManager.instance.Year + 1000;
            AddedSinceLastPrune.Add(chr);
            CharacterMap[chr.ID] = chr;
            chr.SetupExistingDynasty();
            chr.UpdateCultural();

            return(chr);
        }
Beispiel #3
0
        public CharacterParser CreateNewCharacter(Dynasty dynasty, bool bFemale, int dateOfBirth, string religion, String culture)
        {
            if (!bInit)
            {
                Init();
            }

            //   var scope = new ScriptScope();
            //  scope.Name = CharacterParser.IDMax.ToString();
            //  scope.SetChild(CharactersScript.Root);
            var chr = new CharacterParser();

            //   chr.SetProperty("dynasty", Rand.Next(1235)+1);
            //    chr.SetProperty("culture", new ScriptReference("norse"));
            //     chr.SetProperty("religion", new ScriptReference("pagan"));
            //  chr.DeleteProperty("name");
            Characters.Add(chr);
            chr.YearOfBirth = dateOfBirth;
            chr.Dynasty     = dynasty;
            chr.religion    = religion;
            chr.isFemale    = bFemale;
            chr.culture     = culture;
            chr.YearOfDeath = 769 + Rand.Next(30);
            this.CharactersScript.Root.SetChild(chr.Scope);
            AddedSinceLastPrune.Add(chr);
            CharacterMap[chr.ID] = chr;
            chr.SetupExistingDynasty();
            chr.UpdateCultural();
            return(chr);
        }
Beispiel #4
0
 public Dynasty GetDynasty(CultureParser culture)
 {
     ScriptScope scope = new ScriptScope();
     scope.Name = ID.ToString();
     ID++;
     scope.Add(new ScriptCommand("name", culture.dna.GetDynastyName(), scope));
     scope.Add(new ScriptCommand("culture", culture.Name, scope));
     script.Root.Add(scope);
     var d = new Dynasty() {ID = ID - 1, Scope = scope};
     DynastyMap[ID - 1] = d;
     culture.Dynasties.Add(d);
     return d;
 }
Beispiel #5
0
        public CharacterParser CreateNewHistoricCharacter(Dynasty dynasty, bool bFemale, string religion, String culture, int dateOfBirth, int dateOfDeath = -1, bool adult = true)
        {
            if (!bInit)
            {
                Init();
            }

            //   var scope = new ScriptScope();
            //  scope.Name = CharacterParser.IDMax.ToString();
            //  scope.SetChild(CharactersScript.Root);
            var chr = new CharacterParser();

            //   chr.SetProperty("dynasty", Rand.Next(1235)+1);
            //    chr.SetProperty("culture", new ScriptReference("norse"));
            //     chr.SetProperty("religion", new ScriptReference("pagan"));
            //  chr.DeleteProperty("name");
            Characters.Add(chr);
            chr.YearOfBirth = dateOfBirth;
            chr.isFemale    = bFemale;
            chr.culture     = culture;
            chr.religion    = religion;
            if (dateOfDeath != -1)
            {
                chr.YearOfDeath = dateOfDeath;
            }
            else
            {
                chr.YearOfDeath = dateOfBirth + Rand.Next(40);
                if (Rand.Next(4) == 0)
                {
                    chr.YearOfDeath = dateOfBirth + Rand.Next(80);
                }

                if (adult)
                {
                    chr.YearOfDeath = dateOfBirth + 16 + Rand.Next(80 - 16);
                }
            }

            this.CharactersScript.Root.SetChild(chr.Scope);
            AddedSinceLastPrune.Add(chr);
            CharacterMap[chr.ID] = chr;
            chr.Dynasty          = dynasty;
            chr.SetupExistingDynasty();
            chr.UpdateCultural();
            //    CharacterManager.instance.SetAllDates(chr.YearOfBirth, chr.YearOfDeath,  chr.Scope);
            return(chr);
        }
Beispiel #6
0
        public Dynasty GetDynasty(int id, string name, string culture, string religion, ScriptScope scope)
        {
            ID   = id;
            Name = name;
            var nameScope = scope.ChildrenMap["name"] as ScriptCommand;

            script.Root.Add(scope);
            var d = new Dynasty()
            {
                ID = ID, Scope = scope, NameScope = nameScope
            };

            d.Color        = Color.FromArgb(255, Rand.Next(200) + 55, Rand.Next(200) + 55, Rand.Next(200) + 55);
            DynastyMap[ID] = d;
            return(d);
        }
Beispiel #7
0
        public Dynasty GetDynasty(CultureParser culture)
        {
            ScriptScope scope = new ScriptScope();

            scope.Name = ID.ToString();
            ID++;
            scope.Add(new ScriptCommand("name", culture.dna.GetDynastyName(), scope));
            scope.Add(new ScriptCommand("culture", culture.Name, scope));
            script.Root.Add(scope);
            var d = new Dynasty()
            {
                ID = ID - 1, Scope = scope
            };

            DynastyMap[ID - 1] = d;
            culture.Dynasties.Add(d);
            return(d);
        }
Beispiel #8
0
        public CharacterParser CreateNewHistoricCharacter(Dynasty dynasty, bool bFemale, string religion, String culture, int dateOfBirth, int dateOfDeath = -1, bool adult = true)
        {
            if (!bInit)
            {
                Init();
            }

            var chr = new CharacterParser();

            Characters.Add(chr);
            AliveCharacters.Add(chr);
            chr.YearOfBirth = dateOfBirth;
            chr.isFemale    = bFemale;
            chr.culture     = culture;
            chr.religion    = religion;
            if (dateOfDeath != -1)
            {
                chr.YearOfDeath = dateOfDeath;
            }
            else
            {
                chr.YearOfDeath = dateOfBirth + 150 + Rand.Next(40);
                if (Rand.Next(4) == 0)
                {
                    chr.YearOfDeath = dateOfBirth + 150 + Rand.Next(80);
                }

                if (adult)
                {
                    chr.YearOfDeath = dateOfBirth + 150 + 16 + Rand.Next(80 - 16);
                }
            }

            this.CharactersScript.Root.SetChild(chr.Scope);
            AddedSinceLastPrune.Add(chr);
            CharacterMap[chr.ID] = chr;
            chr.Dynasty          = dynasty;
            chr.SetupExistingDynasty();
            chr.UpdateCultural();

            return(chr);
        }
Beispiel #9
0
        public void LoadVanilla()
        {
            var files = ModManager.instance.GetFileKeys("common\\dynasties");

            foreach (var file in files)
            {
                Script s = ScriptLoader.instance.LoadKey(file);
                foreach (var rootChild in s.Root.Children)
                {
                    var scope = rootChild as ScriptScope;

                    int id = Convert.ToInt32(scope.Name);

                    String  name     = scope.GetString("name");
                    String  culture  = scope.GetString("culture");
                    String  religion = scope.GetString("religion");
                    Dynasty d        = GetDynasty(id, name, culture, religion, scope);
                }
            }
        }
Beispiel #10
0
        public CharacterParser CreateNewHistoricCharacter(Dynasty dynasty, bool bFemale, string religion, String culture, int dateOfBirth, int dateOfDeath = -1, bool adult = true)
        {
            if (!bInit)
                Init();

            //   var scope = new ScriptScope();
            //  scope.Name = CharacterParser.IDMax.ToString();
            //  scope.SetChild(CharactersScript.Root);
            var chr = new CharacterParser();
            //   chr.SetProperty("dynasty", Rand.Next(1235)+1);
            //    chr.SetProperty("culture", new ScriptReference("norse"));
            //     chr.SetProperty("religion", new ScriptReference("pagan"));
            //  chr.DeleteProperty("name");
            Characters.Add(chr);
            chr.YearOfBirth = dateOfBirth;
            chr.isFemale = bFemale;
            chr.culture = culture;
            chr.religion = religion;
            if (dateOfDeath != -1)
            {
                chr.YearOfDeath = dateOfDeath;
            }
            else
            {
                chr.YearOfDeath = dateOfBirth + Rand.Next(40);
                if(Rand.Next(4)==0)
                    chr.YearOfDeath = dateOfBirth + Rand.Next(80);
                
                if (adult)
                    chr.YearOfDeath = dateOfBirth + 16 + Rand.Next(80 - 16);
  
            }
           
            this.CharactersScript.Root.SetChild(chr.Scope);
            AddedSinceLastPrune.Add(chr);
            CharacterMap[chr.ID] = chr;
            chr.Dynasty = dynasty;
            chr.SetupExistingDynasty();
            chr.UpdateCultural();
        //    CharacterManager.instance.SetAllDates(chr.YearOfBirth, chr.YearOfDeath,  chr.Scope);
            return chr;
        }
Beispiel #11
0
        public CharacterParser CreateNewCharacter(Dynasty dynasty, bool bFemale, int dateOfBirth, string religion, String culture)
        {
            if (!bInit)
                Init();

            //   var scope = new ScriptScope();
            //  scope.Name = CharacterParser.IDMax.ToString();
            //  scope.SetChild(CharactersScript.Root);
            var chr = new CharacterParser();
            //   chr.SetProperty("dynasty", Rand.Next(1235)+1);
            //    chr.SetProperty("culture", new ScriptReference("norse"));
            //     chr.SetProperty("religion", new ScriptReference("pagan"));
            //  chr.DeleteProperty("name");
            Characters.Add(chr);
            chr.YearOfBirth = dateOfBirth;
            chr.Dynasty = dynasty;
            chr.religion = religion;
            chr.isFemale = bFemale;
            chr.culture = culture;
            chr.YearOfDeath = 769 + Rand.Next(30);
            this.CharactersScript.Root.SetChild(chr.Scope);
            AddedSinceLastPrune.Add(chr);
            CharacterMap[chr.ID] = chr;
            chr.SetupExistingDynasty();
            chr.UpdateCultural();
            return chr;
        }
Beispiel #12
0
        public void HandleTech(CharacterParser chr)
        {
            return;

            var provinces = chr.GetAllProvinces();

            foreach (var provinceParser in provinces)
            {
                if (provinceParser.economicTechPoints > holdingCost)
                {
                    bool bTribal = false;
                    if (provinceParser.government == "tribal")
                    {
                        bTribal = true;
                    }
                    if (bTribal)
                    {
                        // work toward feudalism...
                        provinceParser.economicTechPoints -= holdingCost;

                        provinceParser.baronies[0].level++;
                        if (provinceParser.baronies[0].level >= 5)
                        {
                            ScriptScope thing   = new ScriptScope();
                            String      barName = provinceParser.baronies[0].title;
                            thing.Name = SimulationManager.instance.Year + ".4.1";
                            bool done = false;
                            if (numMerchantRepublics < maxMerchantRepublics)
                            {
                                if (provinceParser.Adjacent.Where(p => !p.land && p.Range.Y - p.Range.X > 10).Any() && provinceParser.Title.Liege != null && provinceParser.Title.Liege.Rank == 2 && provinceParser.Title.Liege.CapitalProvince == provinceParser)
                                {
                                    if (Rand.Next(4) == 0)
                                    {
                                        provinceParser.republic = true;
                                        thing.Add(new ScriptCommand()
                                        {
                                            Name = barName, Value = "city"
                                        });
                                        done = true;
                                        provinceParser.government = "republic";
                                        numMerchantRepublics++;

                                        {
                                            var chosen = provinceParser.Title.Liege;
                                            chosen.Holder.GiveTitleSoft(provinceParser.Title);
                                            chosen.CapitalProvince = provinceParser;
                                            //chosen.Holder.GiveTitleSoft(provinceParser.Title);
                                            //if (provinceParser.Title.Liege != chosen)
                                            //  chosen.Holder.GiveTitleSoft(provinceParser.Title.Liege);
                                            chosen.DoSetLiegeEvent(null);
                                            chosen.government = "republic";
                                            provinceParser.Title.government = "republic";
                                            chosen.Scope.Do(@"
		                                dignity = 200 # Never want the Republic of Venice to change primary title

                                        allow = {
			                                is_republic = yes
		                                }
                                ");

                                            {
                                                ScriptScope thingTit = new ScriptScope();

                                                thingTit.Name = SimulationManager.instance.Year + ".4.1";
                                                ScriptScope thingTit3 = new ScriptScope();

                                                thingTit3.Name = SimulationManager.instance.Year + ".4.1";

                                                chosen.titleScripts.Add(thingTit);
                                                provinceParser.Title.titleScripts.Add(thingTit3);

                                                thingTit.Add(new ScriptCommand()
                                                {
                                                    Name = "law", Value = "succ_patrician_elective"
                                                });
                                                thingTit3.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  = chosen.Culture.dna.GetPlaceName();
                                                        var sname = StarNames.SafeName(name);
                                                        while (LanguageManager.instance.Get(sname) != null)
                                                        {
                                                            name  = chosen.Culture.dna.GetPlaceName();
                                                            sname = StarNames.SafeName(name);
                                                        }
                                                        chosen.republicdynasties.Add(chosen.Holder.Dynasty.ID);

                                                        for (int x = 0; x < 4; x++)
                                                        {
                                                            Dynasty d = DynastyManager.instance.GetDynasty(chosen.Culture);
                                                            if (!TitleManager.instance.dynastiesWithPalaces.Contains(d.ID))
                                                            {
                                                                var barony = TitleManager.instance.CreateBaronyScriptScope(null, chosen.Culture);
                                                                TitleManager.instance.Titles.Add(barony);
                                                                barony.government       = "republicpalace";
                                                                barony.republicdynasty  = d.ID;
                                                                barony.culture          = chosen.culture;
                                                                barony.PalaceLocation   = provinceParser;
                                                                barony.republicreligion = chosen.Holder.religion;
                                                                barony.DoSetLiegeEvent(chosen);
                                                                var cr = SimulationManager.instance.AddCharacterForTitle(barony,
                                                                                                                         true, false, d);

                                                                //chosen.Holder.GiveTitleSoft(barony);
                                                                chosen.Holder.Dynasty.palace = barony;
                                                                TitleManager.instance.dynastiesWithPalaces.Add(d.ID);
                                                                chosen.palaces.Add(barony);
                                                                if (barony.Rank == 0 && barony.government == "republicpalace")
                                                                {
                                                                    ScriptScope thingTit2 = new ScriptScope();

                                                                    thingTit2.Name = SimulationManager.instance.Year + ".4.1";
                                                                    thingTit2.Add(new ScriptCommand()
                                                                    {
                                                                        Name = "holding_dynasty", Value = barony.republicdynasty
                                                                    });
                                                                    //thing.Add(new ScriptCommand() { Name = "liege", Value = title.republicdynasty });
                                                                    if (barony.Scope.Find("culture") == null)
                                                                    {
                                                                        barony.Scope.Add(new ScriptCommand()
                                                                        {
                                                                            Name = "culture", Value = chosen.culture
                                                                        });
                                                                        barony.Scope.Add(new ScriptCommand()
                                                                        {
                                                                            Name = "religion", Value = chosen.Holder.religion
                                                                        });
                                                                    }
                                                                    barony.titleScripts.Add(thingTit2);
                                                                }
                                                            }
                                                        }
                                                        if (!TitleManager.instance.dynastiesWithPalaces.Contains(chosen.Holder.Dynasty.ID))
                                                        {
                                                            var barony = TitleManager.instance.CreateBaronyScriptScope(null, chosen.Culture);
                                                            TitleManager.instance.Titles.Add(barony);
                                                            barony.government       = "republicpalace";
                                                            barony.republicdynasty  = chosen.Holder.Dynasty.ID;
                                                            barony.culture          = chosen.culture;
                                                            barony.republicreligion = chosen.Holder.religion;
                                                            barony.DoSetLiegeEvent(chosen);
                                                            barony.PalaceLocation = provinceParser;
                                                            chosen.Holder.GiveTitleSoft(barony);
                                                            chosen.Holder.Dynasty.palace = barony;
                                                            chosen.palaces.Add(barony);
                                                            TitleManager.instance.dynastiesWithPalaces.Add(chosen.Holder.Dynasty.ID);
                                                            if (barony.Rank == 0 && barony.government == "republicpalace")
                                                            {
                                                                ScriptScope thingTit2 = new ScriptScope();

                                                                thingTit2.Name = SimulationManager.instance.Year + ".4.1";
                                                                thingTit2.Add(new ScriptCommand()
                                                                {
                                                                    Name = "holding_dynasty", Value = barony.republicdynasty
                                                                });
                                                                //thing.Add(new ScriptCommand() { Name = "liege", Value = title.republicdynasty });
                                                                if (barony.Scope.Find("culture") == null)
                                                                {
                                                                    barony.Scope.Add(new ScriptCommand()
                                                                    {
                                                                        Name = "culture", Value = chosen.culture
                                                                    });
                                                                    barony.Scope.Add(new ScriptCommand()
                                                                    {
                                                                        Name = "religion", Value = chosen.Holder.religion
                                                                    });
                                                                }
                                                                barony.titleScripts.Add(thingTit2);
                                                            }
                                                        }
                                                    }
                                                }

                                                if (chosen.Liege != null && chosen.Liege.Rank > chosen.Rank)
                                                {
                                                    thingTit.Add(new ScriptCommand()
                                                    {
                                                        Name = "liege", Value = chosen.Liege.Name
                                                    });
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            if (!done)
                            {
                                thing.Add(new ScriptCommand()
                                {
                                    Name = barName, Value = "castle"
                                });
                                provinceParser.government = "feudalism";
                            }

                            provinceParser.militaryTechPoints = 0;
                            provinceParser.dateScripts.Add(thing);
                            if (provinceParser.Title.Holder == chr)
                            {
                                chr.PrimaryTitle.government = "feudalism";
                            }
                        }
                    }
                    else if (provinceParser.militaryTechPoints > holdingCost)
                    {
                        if (provinceParser.ActiveBaronies < provinceParser.max_settlements)
                        {
                            provinceParser.militaryTechPoints -= holdingCost;
                            ProvinceParser.Barony b = provinceParser.GetLastEnabledBarony();
                            if (b.level >= 2)
                            {
                                List <String> choices = new List <string>();

                                b = provinceParser.GetNextBarony();
                                if (provinceParser.CastleCount == 0)
                                {
                                    choices.Add("castle");
                                }
                                if (provinceParser.TownCount == 0)
                                {
                                    choices.Add("city");
                                }
                                if (provinceParser.TempleCount == 0)
                                {
                                    choices.Add("temple");
                                }

                                if (choices.Count == 0)
                                {
                                    choices.Add("castle");
                                    choices.Add("city");
                                    choices.Add("temple");
                                }

                                {
                                    b.enabled = true;
                                    b.type    = choices[Rand.Next(choices.Count)];
                                    ScriptScope thing   = new ScriptScope();
                                    String      barName = b.title;
                                    thing.Name = SimulationManager.instance.Year + ".4.1";
                                    thing.Add(new ScriptCommand()
                                    {
                                        Name = barName, Value = b.type
                                    });

                                    provinceParser.dateScripts.Add(thing);
                                }
                            }
                            else
                            {
                                b.level++;
                            }
                        }
                    }
                }
            }
        }