Exemple #1
0
 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());
                 if (request.FixedLastName == null && Rand.Value < 0.8f)
                 {
                     request.SetFixedLastName(((NameTriple)other.GetMother().Name).Last);
                 }
             }
             else
             {
                 LovePartnerRelationUtility.GiveRandomExLoverOrExSpouseRelation(generated, other.GetMother());
             }
         }
     }
     else if (generated.gender == Gender.Female)
     {
         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());
                 if (request.FixedLastName == null && Rand.Value < 0.8f)
                 {
                     request.SetFixedLastName(((NameTriple)other.GetFather().Name).Last);
                 }
             }
             else
             {
                 LovePartnerRelationUtility.GiveRandomExLoverOrExSpouseRelation(generated, other.GetFather());
             }
         }
     }
 }
        public override void CreateRelation(Pawn generated, Pawn other, ref PawnGenerationRequest request)
        {
            bool flag  = other.GetMother() != null;
            bool flag2 = other.GetFather() != null;
            bool flag3 = Rand.Value < 0.85f;

            if (flag && LovePartnerRelationUtility.HasAnyLovePartner(other.GetMother()))
            {
                flag3 = false;
            }
            if (flag2 && LovePartnerRelationUtility.HasAnyLovePartner(other.GetFather()))
            {
                flag3 = false;
            }
            if (!flag)
            {
                Pawn newMother = PawnRelationWorker_Sibling.GenerateParent(generated, other, Gender.Female, request, flag3);
                other.SetMother(newMother);
            }
            generated.SetMother(other.GetMother());
            if (!flag2)
            {
                Pawn newFather = PawnRelationWorker_Sibling.GenerateParent(generated, other, Gender.Male, request, flag3);
                other.SetFather(newFather);
            }
            generated.SetFather(other.GetFather());
            if (!flag || !flag2)
            {
                bool flag4 = other.GetMother().story.traits.HasTrait(TraitDefOf.Gay) || other.GetFather().story.traits.HasTrait(TraitDefOf.Gay);
                if (flag4)
                {
                    other.GetFather().relations.AddDirectRelation(PawnRelationDefOf.ExLover, other.GetMother());
                }
                else if (flag3)
                {
                    other.GetFather().relations.AddDirectRelation(PawnRelationDefOf.Spouse, other.GetMother());
                }
                else
                {
                    LovePartnerRelationUtility.GiveRandomExLoverOrExSpouseRelation(other.GetFather(), other.GetMother());
                }
            }
            PawnRelationWorker_Sibling.ResolveMyName(ref request, generated);
            PawnRelationWorker_Sibling.ResolveMySkinColor(ref request, generated);
        }
        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);
        }