public override void Execute() { _pawn.gender = _pawn.gender == Gender.Female ? Gender.Male : Gender.Female; _pawn.story.hairColor = PawnHairColors.RandomHairColor(_pawn.story.SkinColor, _pawn.ageTracker.AgeBiologicalYears); if (_pawn.style.HasUnwantedBeard) { _pawn.style.beardDef = BeardDefOf.NoBeard; _pawn.style.Notify_StyleItemChanged(); } _pawn.story.hairDef = PawnStyleItemChooser.RandomHairFor(_pawn); _pawn.story.bodyType = _pawn.story.adulthood == null?RandomBodyType(_pawn) : _pawn.story.adulthood.BodyTypeFor(_pawn.gender); Viewer.Charge(storeIncident); MessageHelper.SendConfirmation(Viewer.username, "TKUtils.GenderSwap.Complete".LocalizeKeyed(_pawn.gender.ToString())); Find.LetterStack.ReceiveLetter( "TKUtils.GenderSwapLetter.Title".Localize(), "TKUtils.GenderSwapLetter.Description".LocalizeKeyed(Viewer.username, _pawn.gender.ToString()), LetterDefOf.NeutralEvent, _pawn ); }
public static bool Prefix(Pawn pawn, TattooType tattooType, ref StyleItemDef __result) { IEnumerable <StyleItemDef> source = from item in DefDatabase <StyleItemDef> .AllDefs where PawnStyleItemChooser.WantsToUseStyle(pawn, item, tattooType) select item; if (!source.Any <StyleItemDef>()) { Log.Error("Error finding style item for " + pawn.LabelShort + " of " + pawn.Faction); __result = default(StyleItemDef); return(false); } __result = source.RandomElementByWeight((StyleItemDef s) => PawnStyleItemChooser.TotalStyleItemLikelihood(s, pawn)); return(false); }
public static void GeneratePawnStyle(Pawn pawn) { if (pawn.RaceProps.Humanlike) { pawn.story.hairDef = PawnStyleItemChooser.RandomHairFor(pawn); if (pawn.style != null) { pawn.style.beardDef = pawn.gender == Gender.Male? PawnStyleItemChooser.ChooseStyleItem <BeardDef>(pawn) : BeardDefOf.NoBeard; if (ModsConfig.IdeologyActive) { pawn.style.FaceTattoo = PawnStyleItemChooser.ChooseStyleItem <TattooDef>(pawn, new TattooType? (TattooType.Face)); pawn.style.BodyTattoo = PawnStyleItemChooser.ChooseStyleItem <TattooDef>(pawn, new TattooType? (TattooType.Body)); } else { pawn.style.SetupTattoos_NoIdeology(); } } } }