protected override ThoughtState CurrentStateInternal(Pawn p) { if (p.health.hediffSet.HasHediff(HediffDef.Named("Enslaved"))) { Hediff_Enslaved enslaved_def = SlaveUtility.GetEnslavedHediff(p); if (enslaved_def.ageTicks < 2500 * 3.5f && enslaved_def.SlaveWillpower > 0) // Gets some flavour text just after being enslaved { return(ThoughtState.ActiveAtStage(0)); } if (enslaved_def.SlaveWillpower > 75) { return(ThoughtState.ActiveAtStage(1)); } else if (enslaved_def.SlaveWillpower > 50) { return(ThoughtState.ActiveAtStage(2)); } else if (enslaved_def.SlaveWillpower > 25 || (enslaved_def.SlaveWillpower <= 50 && IsSteadfast(p))) { return(ThoughtState.ActiveAtStage(3)); } else if (Math.Round(enslaved_def.SlaveWillpower) <= 1) { return(ThoughtState.ActiveAtStage(4)); } } return(ThoughtState.Inactive); }
public static void Beaten(Pawn __instance, ref DamageInfo dinfo) { // Check if the pawn is enslaved if (SlaveUtility.IsPawnColonySlave(__instance)) { Hediff_Enslaved enslaved_def = (Hediff_Enslaved)__instance.health.hediffSet.GetFirstHediffOfDef(SS_HediffDefOf.Enslaved); // Is the beating coming from the faction owning the slave? if (dinfo.Instigator != null) { if (dinfo.Instigator.Faction == enslaved_def.slaverFaction) { enslaved_def.TakeWillpowerHit(dinfo.Amount / 100f); } } } }