protected override ThoughtState CurrentStateInternal(Pawn p) { NeedDef compNeedDef = DefDatabase <NeedDef> .GetNamed("DCompulsionNeed", errorOnFail : true); Need_Compulsion compNeed = p.needs.TryGetNeed(compNeedDef) as Need_Compulsion; if (compNeed == null) { return(ThoughtState.Inactive); } int moodBuffForCurrentLevel = (int)compNeed.MoodBuffForCurrentLevel; if (moodBuffForCurrentLevel == (int)Need_Compulsion.MoodBuff.Neutral) { return(ThoughtState.Inactive); } return(ThoughtState.ActiveAtStage(2 - moodBuffForCurrentLevel)); }
public override void HandleLearn(ref float xp, SkillRecord sk, Pawn pawn, ref bool direct) { if (!pawn.IsColonist) { return; } if (xp < 0 || direct) { return; } NeedDef compNeedDef = DefDatabase <NeedDef> .GetNamed("DCompulsionNeed", errorOnFail : true); Need_Compulsion compNeed = pawn.needs.TryGetNeed(compNeedDef) as Need_Compulsion; if (compNeed == null) { Log.Error("Failed to find need associated with DCompulsionNeed"); } compNeed.Notify_Worked(xp); }