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++; } } } } } }