public static void TakeToBed_Postfix(JobDriver_TakeToBed __instance) { var prisoner = (Pawn)prisonerProp.GetValue(__instance, null); if (prisoner.health.hediffSet.HasHediff(SS_HediffDefOf.Enslaved)) { // Caught the slave ((Hediff_Enslaved)prisoner.health.hediffSet.GetFirstHediffOfDef(SS_HediffDefOf.Enslaved)).CaughtSlave(); } }
public static bool Prefix(JobDriver_TakeToBed __instance, ref bool __result) { var tv = Traverse.Create(__instance); var job = tv.Field("job").GetValue <Job>(); var pawn = (Pawn)job.GetTarget(TargetIndex.A).Thing; if (!pawn.kindDef.defName.StartsWith("Warframe_")) { return(true); } Messages.Message("CanBeCarryMsg".Translate(), MessageTypeDefOf.RejectInput, false); __result = false; return(false); }
static IEnumerable <Toil> Postfix(IEnumerable <Toil> values, JobDriver_TakeToBed __instance) { foreach (var toil in values) { yield return(toil); } var undraftToil = new Toil() { initAction = () => { var pawn = __instance.pawn; if (pawn.Drafted) { pawn.drafter.Drafted = false; } } }; yield return(undraftToil); }