public static void ResolveNameForSpouseOnGeneration(ref PawnGenerationRequest request, Pawn generated) { if (request.FixedLastName != null) { return; } MarriageNameChange marriageNameChange = Roll_NameChangeOnMarriage(); if (marriageNameChange == MarriageNameChange.NoChange) { return; } Pawn spouse = generated.GetSpouse(); DetermineManAndWomanSpouses(generated, spouse, out var man, out var woman); NameTriple nameTriple = man.Name as NameTriple; NameTriple nameTriple2 = woman.Name as NameTriple; if (generated == woman && marriageNameChange == MarriageNameChange.WomansName) { man.Name = new NameTriple(nameTriple.First, nameTriple.Nick, nameTriple.Last); if (man.story != null) { man.story.birthLastName = GetRandomBirthName(man); } request.SetFixedLastName(nameTriple.Last); } else if (generated == man && marriageNameChange == MarriageNameChange.WomansName) { request.SetFixedLastName(nameTriple2.Last); request.SetFixedBirthName(GetRandomBirthName(man)); } else if (generated == woman && marriageNameChange == MarriageNameChange.MansName) { request.SetFixedLastName(nameTriple.Last); request.SetFixedBirthName(GetRandomBirthName(woman)); } else if (generated == man && marriageNameChange == MarriageNameChange.MansName) { woman.Name = new NameTriple(nameTriple2.First, nameTriple2.Nick, nameTriple2.Last); if (woman.story != null) { woman.story.birthLastName = GetRandomBirthName(man); } request.SetFixedLastName(nameTriple2.Last); } }
public static bool ChangeNameAfterMarriage(Pawn firstPawn, Pawn secondPawn, MarriageNameChange changeName) { if (changeName != 0) { Pawn man = null; Pawn woman = null; DetermineManAndWomanSpouses(firstPawn, secondPawn, out man, out woman); NameTriple nameTriple = man.Name as NameTriple; NameTriple nameTriple2 = woman.Name as NameTriple; if (nameTriple == null || nameTriple2 == null) { return(false); } string last = ((changeName == MarriageNameChange.MansName) ? nameTriple.Last : nameTriple2.Last); man.Name = new NameTriple(nameTriple.First, nameTriple.Nick, last); woman.Name = new NameTriple(nameTriple2.First, nameTriple2.Nick, last); return(true); } return(false); }