private Piety_Situational TryCreatePiety(PietyDef def)
        {
            if (!def.Worker.CurrentState(this.pawn).ActiveFor(def))
            {
                return((Piety_Situational)null);
            }
            Piety_Situational piety = new Piety_Situational(pawn, def);

            piety.RecalculateState();
            return(piety);
        }
        private void CheckRecalculate()
        {
            int ticksGame = Find.TickManager.TicksGame;

            if (ticksGame - this.lastPietyRecalculationTick < 100)
            {
                return;
            }
            this.lastPietyRecalculationTick = ticksGame;
            try
            {
                this.tmpCachedPiety.Clear();
                for (int index = 0; index < this.cachedPiety.Count; ++index)
                {
                    this.cachedPiety[index].RecalculateState();
                    this.tmpCachedPiety.Add(this.cachedPiety[index].Def);
                }
                List <PietyDef> situationalPietyList = PietyUtility.situationalPietyList;
                int             index1 = 0;
                for (int count = situationalPietyList.Count; index1 < count; ++index1)
                {
                    if (!this.tmpCachedPiety.Contains(situationalPietyList[index1]))
                    {
                        //Log.Message($"{situationalPietyList[index1].defName} is active for {pawn} - {situationalPietyList[index1].Worker.CurrentState(pawn).StageIndex}");
                        if (situationalPietyList[index1].Worker.CurrentState(pawn).ActiveFor(situationalPietyList[index1]))
                        {
                            Piety_Situational piety = TryCreatePiety(situationalPietyList[index1]);
                            if (piety != null)
                            {
                                this.cachedPiety.Add(piety);
                            }
                        }
                    }
                }
            }
            finally
            {
            }
        }