public bool yearlyUpdate(List<personSim> chars, causeOfDeath[] causes, int currentYear) { if(currentYear <= lastYearRun) { return false; } lastYearRun = currentYear; if(charManager == null) { charManager = GameObject.FindGameObjectWithTag("trackerManager").GetComponent<charTrackerManager>(); } int age = getAge(currentYear); if(isAlive){ if(partner != null && partner.isAlive) { partner.diedThisYear (causes, currentYear); } //make sure parents get updated! if(guard1 != null && guard1.isAlive) { guard1.yearlyUpdate(chars, causes, currentYear); } if(guard2 != null && guard2.isAlive) { guard2.yearlyUpdate(chars, causes, currentYear); } if(partner != null && partner.isAlive && age >= 20 && age <= 53 && children.Count < 2 && charManager.getNumChars() < 8) { //chance of gaining child if((UnityEngine.Random.value >= 0.95f) || (charManager.getNumChars() < 3 && (UnityEngine.Random.value >= 0.85f))) { personSim child = new personSim(currentYear, 0, this, partner); chars.Add(child); children.Add(child); partner.children.Add(child); if(partner.isMale != isMale) evManager.addEvent(getName() + " and " + partner.getName() + " gave birth to " + child.getName() + " in " + currentYear.ToString()); else evManager.addEvent(getName() + " and " + partner.getName() + " adopted " + child.getName() + " in " + currentYear.ToString()); GameObject.FindGameObjectWithTag("trackerManager").GetComponent<charTrackerManager>().addTracker(child); } } //check if should marry if(partner != null && partner.isAlive && isMarried == false && UnityEngine.Random.value >= 0.9f) { partner.isMarried = true; isMarried = true; marriedSince = currentYear; evManager.addEvent(getName() + " married " + partner.getName() + " in " + currentYear + "!"); if(partner.isMale) { string message = getName() + " is now "; surname = partner.surname; Debug.Log(message + getName()); foreach(personSim child in children) { child.surname = surname; } } else { partner.surname = surname; } } //check if find a partner else if(partner == null && age >= 18 && UnityEngine.Random.value >= 0.88f) { //create partner with adjusted gender odds if(isMale)partner = new personSim( yearBorn + UnityEngine.Random.Range(-5, 5), -0.3f); else partner = new personSim(currentYear + UnityEngine.Random.Range(-5, 5), 0.3f); evManager.addEvent(getName() + " started going out with " + partner.getName() + " in " + currentYear); coupledSince = currentYear; } updateThoughts(currentYear); return diedThisYear (causes, currentYear); } return false; }