Exemplo n.º 1
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++;
                            }
                        }
                    }
                }
            }
        }