public static void Married(Pawn firstPawn, Pawn secondPawn) { LovePartnerRelationUtility.ChangeSpouseRelationsToExSpouse(firstPawn); LovePartnerRelationUtility.ChangeSpouseRelationsToExSpouse(secondPawn); firstPawn.relations.RemoveDirectRelation(PawnRelationDefOf.Fiance, secondPawn); firstPawn.relations.TryRemoveDirectRelation(PawnRelationDefOf.ExSpouse, secondPawn); firstPawn.relations.AddDirectRelation(PawnRelationDefOf.Spouse, secondPawn); AddNewlyMarriedThoughts(firstPawn, secondPawn); AddNewlyMarriedThoughts(secondPawn, firstPawn); if (firstPawn.needs.mood != null) { firstPawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.DivorcedMe, secondPawn); } if (secondPawn.needs.mood != null) { secondPawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.DivorcedMe, firstPawn); } if (firstPawn.relations.nextMarriageNameChange != secondPawn.relations.nextMarriageNameChange) { Log.Warning("Marriage name change is different on marrying pawns. This is weird, but not harmful."); } SpouseRelationUtility.ChangeNameAfterMarriage(firstPawn, secondPawn, firstPawn.relations.nextMarriageNameChange); LovePartnerRelationUtility.TryToShareBed(firstPawn, secondPawn); TaleRecorder.RecordTale(TaleDefOf.Marriage, firstPawn, secondPawn); }
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()); } } } }
private void RandomizeCurPawn() { if (TutorSystem.AllowAction("RandomizePawn")) { int num = 0; do { SpouseRelationUtility.Notify_PawnRegenerated(curPawn); curPawn = StartingPawnUtility.RandomizeInPlace(curPawn); num++; }while (num <= 20 && !StartingPawnUtility.WorkTypeRequirementsSatisfied()); TutorSystem.Notify_Event("RandomizePawn"); } }
public override void Interacted(Pawn initiator, Pawn recipient, List <RulePackDef> extraSentencePacks, out string letterText, out string letterLabel, out LetterDef letterDef, out LookTargets lookTargets) { float num = AcceptanceChance(initiator, recipient); bool flag = Rand.Value < num; bool flag2 = false; if (flag) { initiator.relations.RemoveDirectRelation(PawnRelationDefOf.Lover, recipient); initiator.relations.AddDirectRelation(PawnRelationDefOf.Fiance, recipient); if (recipient.needs.mood != null) { recipient.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.RejectedMyProposal, initiator); recipient.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.RejectedMyProposalMood, initiator); recipient.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.IRejectedTheirProposal, initiator); } if (initiator.needs.mood != null) { initiator.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.RejectedMyProposalMood, recipient); initiator.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.IRejectedTheirProposal, recipient); initiator.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.RejectedMyProposal, recipient); } extraSentencePacks.Add(RulePackDefOf.Sentence_MarriageProposalAccepted); } else { if (initiator.needs.mood != null) { initiator.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.RejectedMyProposal, recipient); } if (recipient.needs.mood != null) { recipient.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.IRejectedTheirProposal, initiator); } extraSentencePacks.Add(RulePackDefOf.Sentence_MarriageProposalRejected); if (Rand.Value < 0.4f) { initiator.relations.RemoveDirectRelation(PawnRelationDefOf.Lover, recipient); initiator.relations.AddDirectRelation(PawnRelationDefOf.ExLover, recipient); flag2 = true; extraSentencePacks.Add(RulePackDefOf.Sentence_MarriageProposalRejectedBrokeUp); } } if (PawnUtility.ShouldSendNotificationAbout(initiator) || PawnUtility.ShouldSendNotificationAbout(recipient)) { StringBuilder stringBuilder = new StringBuilder(); if (flag) { letterLabel = "LetterLabelAcceptedProposal".Translate(); letterDef = LetterDefOf.PositiveEvent; stringBuilder.AppendLine("LetterAcceptedProposal".Translate(initiator.Named("INITIATOR"), recipient.Named("RECIPIENT"))); if (initiator.relations.nextMarriageNameChange != 0) { SpouseRelationUtility.DetermineManAndWomanSpouses(initiator, recipient, out var man, out var woman); stringBuilder.AppendLine(); if (initiator.relations.nextMarriageNameChange == MarriageNameChange.MansName) { stringBuilder.AppendLine("LetterAcceptedProposal_NameChange".Translate(woman.Named("PAWN"), (man.Name as NameTriple).Last)); } else { stringBuilder.AppendLine("LetterAcceptedProposal_NameChange".Translate(man.Named("PAWN"), (woman.Name as NameTriple).Last)); } } } else { letterLabel = "LetterLabelRejectedProposal".Translate(); letterDef = LetterDefOf.NegativeEvent; stringBuilder.AppendLine("LetterRejectedProposal".Translate(initiator.Named("INITIATOR"), recipient.Named("RECIPIENT"))); if (flag2) { stringBuilder.AppendLine(); stringBuilder.AppendLine("LetterNoLongerLovers".Translate(initiator.Named("PAWN1"), recipient.Named("PAWN2"))); } } letterText = stringBuilder.ToString().TrimEndNewlines(); lookTargets = new LookTargets(initiator, recipient); } else { letterLabel = null; letterText = null; letterDef = null; lookTargets = null; } }
public override void Interacted(Pawn initiator, Pawn recipient, List <RulePackDef> extraSentencePacks, out string letterText, out string letterLabel, out LetterDef letterDef, out LookTargets lookTargets) { Thought thought = RandomBreakupReason(initiator, recipient); bool flag = false; bool flag2 = false; if (initiator.relations.DirectRelationExists(PawnRelationDefOf.Spouse, recipient)) { initiator.relations.RemoveDirectRelation(PawnRelationDefOf.Spouse, recipient); initiator.relations.AddDirectRelation(PawnRelationDefOf.ExSpouse, recipient); if (recipient.needs.mood != null) { recipient.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.DivorcedMe, initiator); recipient.needs.mood.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.GotMarried); recipient.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.HoneymoonPhase, initiator); } if (recipient.needs.mood != null) { initiator.needs.mood.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.GotMarried); initiator.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(ThoughtDefOf.HoneymoonPhase, recipient); } flag = SpouseRelationUtility.ChangeNameAfterDivorce(initiator); flag2 = SpouseRelationUtility.ChangeNameAfterDivorce(recipient); } else { initiator.relations.TryRemoveDirectRelation(PawnRelationDefOf.Lover, recipient); initiator.relations.TryRemoveDirectRelation(PawnRelationDefOf.Fiance, recipient); initiator.relations.AddDirectRelation(PawnRelationDefOf.ExLover, recipient); if (recipient.needs.mood != null) { recipient.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.BrokeUpWithMe, initiator); } } if (initiator.ownership.OwnedBed != null && initiator.ownership.OwnedBed == recipient.ownership.OwnedBed) { ((Rand.Value < 0.5f) ? initiator : recipient).ownership.UnclaimBed(); } TaleRecorder.RecordTale(TaleDefOf.Breakup, initiator, recipient); if (PawnUtility.ShouldSendNotificationAbout(initiator) || PawnUtility.ShouldSendNotificationAbout(recipient)) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("LetterNoLongerLovers".Translate(initiator.LabelShort, recipient.LabelShort, initiator.Named("PAWN1"), recipient.Named("PAWN2"))); stringBuilder.AppendLine(); if (flag) { stringBuilder.Append("LetterNoLongerLovers_BackToBirthName".Translate(initiator.Named("PAWN"))); } if (flag2) { if (flag) { stringBuilder.Append(" "); } stringBuilder.Append("LetterNoLongerLovers_BackToBirthName".Translate(recipient.Named("PAWN"))); } if (flag | flag2) { stringBuilder.AppendLine(); } if (thought != null) { stringBuilder.AppendLine(); stringBuilder.AppendLine("FinalStraw".Translate(thought.LabelCap)); } letterLabel = "LetterLabelBreakup".Translate(); letterText = stringBuilder.ToString().TrimEndNewlines(); letterDef = LetterDefOf.NegativeEvent; lookTargets = new LookTargets(initiator, recipient); } else { letterLabel = null; letterText = null; letterDef = null; lookTargets = null; } }
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); }
public override void OnRelationCreated(Pawn firstPawn, Pawn secondPawn) { firstPawn.relations.nextMarriageNameChange = (secondPawn.relations.nextMarriageNameChange = SpouseRelationUtility.Roll_NameChangeOnMarriage()); }