public CharacterParser CreateNewCharacter(String culture, String religion, bool bFemale) { 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 = 769 - Rand.Next(60); chr.Dynasty = DynastyManager.instance.GetDynasty(CultureManager.instance.CultureMap[culture]); 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; }
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; }
public void CreateFamily(int depth = 0, int maxdepth = 4, int minYearForHeirs = -1) { if (depth > maxdepth) return; int deathdate = -1; if (depth == 0) { deathdate = 768 - 1; } if (deathdate <= YearOfBirth) deathdate = YearOfBirth + 1; Father = CharacterManager.instance.CreateNewHistoricCharacter(Dynasty, false, religion, culture, this.YearOfBirth - (16 + Rand.Next(30)), deathdate); int max = YearOfBirth - 19; int min = Father.YearOfBirth - 5; Mother = GetSuitableMotherForChild(religion, culture, min, max, YearOfBirth); if (Mother.ID == 1002182) { } Father.Spouses.Add(Mother); Mother.Spouses.Add(Father); if (Age > 16 && Spouses.Count < Religion.max_wives && !isFemale) { int numWives = 1; if (Age > 30) { numWives++; } if (Age > 40) { numWives++; } numWives = 1; min = YearOfBirth - 3; max = YearOfBirth + 16; max = DateFunctions.MakeDOBAtLeastAdult(max); numWives = Math.Min(numWives, Religion.max_wives - Spouses.Count); int dateWhenSixteen = YearOfBirth + 16; int startAdulthood = dateWhenSixteen; if (minYearForHeirs > startAdulthood) startAdulthood = minYearForHeirs; } if (Father.YearOfDeath < YearOfBirth) Father.YearOfDeath = YearOfBirth + 1; if (Mother.YearOfDeath < YearOfBirth) Mother.YearOfDeath = YearOfBirth + 1; Father.CreateFamily(depth + 1, maxdepth); Father.Kids.Add(this); Mother.Kids.Add(this); if (depth < 4) Mother.CreateFamily(depth + 1, maxdepth); Father.UpdateCultural(); Mother.UpdateCultural(); // Father.SetupExistingDynasty(); // Mother.SetupExistingDynasty(); }