public override void CreateRelation(Pawn generated, Pawn other, ref PawnGenerationRequest request) { generated.relations.AddDirectRelation(PawnRelationDefOf.Spouse, other); LovePartnerRelationUtility.TryToShareChildrenForGeneratedLovePartner(generated, other, request, 1f); SpouseRelationUtility.ResolveNameForSpouseOnGeneration(ref request, generated); ResolveMySkinColor(ref request, generated, other); }
public override void CreateRelation(Pawn generated, Pawn other, ref PawnGenerationRequest request) { if (generated.gender == Gender.Male) { other.SetFather(generated); ResolveMyName(ref request, other, other.GetMother()); ResolveMySkinColor(ref request, other, other.GetMother()); if (other.GetMother() != null) { if (other.GetMother().story.traits.HasTrait(TraitDefOf.Gay)) { generated.relations.AddDirectRelation(PawnRelationDefOf.ExLover, other.GetMother()); } else if (Rand.Value < 0.85f && !LovePartnerRelationUtility.HasAnyLovePartner(other.GetMother())) { generated.relations.AddDirectRelation(PawnRelationDefOf.Spouse, other.GetMother()); SpouseRelationUtility.ResolveNameForSpouseOnGeneration(ref request, generated); } else { LovePartnerRelationUtility.GiveRandomExLoverOrExSpouseRelation(generated, other.GetMother()); } } } else { if (generated.gender != Gender.Female) { return; } other.SetMother(generated); ResolveMyName(ref request, other, other.GetFather()); ResolveMySkinColor(ref request, other, other.GetFather()); if (other.GetFather() != null) { if (other.GetFather().story.traits.HasTrait(TraitDefOf.Gay)) { generated.relations.AddDirectRelation(PawnRelationDefOf.ExLover, other.GetFather()); } else if (Rand.Value < 0.85f && !LovePartnerRelationUtility.HasAnyLovePartner(other.GetFather())) { generated.relations.AddDirectRelation(PawnRelationDefOf.Spouse, other.GetFather()); SpouseRelationUtility.ResolveNameForSpouseOnGeneration(ref request, generated); } else { LovePartnerRelationUtility.GiveRandomExLoverOrExSpouseRelation(generated, other.GetFather()); } } } }
public override void CreateRelation(Pawn generated, Pawn other, ref PawnGenerationRequest request) { bool num = other.GetMother() != null; bool flag = other.GetFather() != null; bool flag2 = Rand.Value < 0.85f; if (num && LovePartnerRelationUtility.HasAnyLovePartner(other.GetMother())) { flag2 = false; } if (flag && LovePartnerRelationUtility.HasAnyLovePartner(other.GetFather())) { flag2 = false; } if (!num) { Pawn newMother = GenerateParent(generated, other, Gender.Female, request, flag2); other.SetMother(newMother); } generated.SetMother(other.GetMother()); if (!flag) { Pawn newFather = GenerateParent(generated, other, Gender.Male, request, flag2); other.SetFather(newFather); } generated.SetFather(other.GetFather()); if (!num || !flag) { if (other.GetMother().story.traits.HasTrait(TraitDefOf.Gay) || other.GetFather().story.traits.HasTrait(TraitDefOf.Gay)) { other.GetFather().relations.AddDirectRelation(PawnRelationDefOf.ExLover, other.GetMother()); } else if (flag2) { Pawn mother = other.GetMother(); Pawn father = other.GetFather(); NameTriple nameTriple = mother.Name as NameTriple; father.relations.AddDirectRelation(PawnRelationDefOf.Spouse, mother); if (nameTriple != null) { PawnGenerationRequest request2 = default(PawnGenerationRequest); SpouseRelationUtility.ResolveNameForSpouseOnGeneration(ref request2, mother); string b = nameTriple.Last; string text = null; if (request2.FixedLastName != null) { b = request2.FixedLastName; } if (request2.FixedBirthName != null) { text = request2.FixedBirthName; } if (mother.story != null && (nameTriple.Last != b || mother.story.birthLastName != text)) { mother.story.birthLastName = text; } } } else { LovePartnerRelationUtility.GiveRandomExLoverOrExSpouseRelation(other.GetFather(), other.GetMother()); } } ResolveMyName(ref request, generated); ResolveMySkinColor(ref request, generated); }