public static void GeneratePawn_Patch(ref PawnGenerationRequest request, ref Pawn pawn) { //Z- Uses defName.Contains for Alien Race compatibilty if (request.KindDef.defName.Contains("Slave") && pawn.apparel.WornApparel.Find(SlaveUtility.IsSlaveCollar) == null) { SlaveUtility.GiveSlaveCollar(pawn); } }
public override void PostMake() { base.PostMake(); actualFaction = pawn.Faction; slaverFaction = (Faction.OfPlayer); if (pawn.Faction == slaverFaction) { pawn.guest.SetGuestStatus(null); } else { pawn.SetFaction(Faction.OfPlayer); } // If the hediff was added without equipping a slave collar, ensure they get one if (pawn.apparel.WornApparel.Find(SlaveUtility.IsSlaveCollar) == null) { SlaveUtility.GiveSlaveCollar(pawn); } // Certain backstories begin with no willpower if (pawn.story.childhood.title == "Vatgrown slavegirl") //Z- Title -> title { willpower = 0; } if (pawn.story.adulthood != null) { if (pawn.story.adulthood.title == "Urbworld sex slave") //Z- Title - title { willpower = 0; } } // We were freed, but then enslaved AGAIN if (pawn.health.hediffSet.HasHediff(SS_HediffDefOf.SlaveMemory)) { SlaveAgain(); // Take a willpower hit, but only if we were free for a while if (pawn.health.hediffSet.GetFirstHediffOfDef(SS_HediffDefOf.SlaveMemory).ageTicks > 10000) { TakeWillpowerHit(0.5f); } } SaveMemory(); }
public static void EnslavePawn(Pawn pawn, Apparel collar = null) { if (pawn == null) { Log.Error("[SimpleSlavery] Error: Tried to enslave null pawn."); return; } if (!pawn.RaceProps.Humanlike) { Log.Error("[SimpleSlavery] Error: Tried to enslave a non-humanlike pawn."); return; } if (!SlaveUtility.IsPawnColonySlave(pawn)) { SlaveUtility.GiveSlaveCollar(pawn, collar); pawn.health.AddHediff(SS_HediffDefOf.Enslaved); } }