static void Prefix(Pawn_JobTracker __instance)
        {
            Pawn_JobTracker tracker = __instance;
            Pawn            p       = (Pawn)typeof(Pawn_JobTracker).InvokeMember("pawn",
                                                                                 BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic,
                                                                                 null, tracker, null);

            if (p == null)
            {
                throw new Exception("Pawn_JobTracker.pawn is null");
            }
            if (tracker.IsCurrentJobPlayerInterruptible() &&
                tracker.jobQueue.Count == 0 &&
                (tracker.curJob == null ||
                 JobTypeWhitelist.hashset.Contains(tracker.curJob.def) ||
                 TacticsMode.LastActionExpired(p)))
            {
                TacticsMode.TryDoTacticalAction(p);
            }
        }
        public static bool TryAttachFire(Thing t, float fireSize)
        {
            if (!t.CanEverAttachFire() || t.HasAttachment(ThingDefOf.Fire))
            {
                return(false);
            }
            Fire fire = (Fire)ThingMaker.MakeThing(ThingDefOf.Fire);

            fire.fireSize = fireSize;
            fire.AttachTo(t);
            GenSpawn.Spawn(fire, t.Position, t.Map, Rot4.North);
            if (!(t is Pawn pawn))
            {
                return(false);
            }
            Verse.AI.Pawn_JobTracker jobs = pawn.jobs;
            if (jobs != null)
            {
                jobs.StopAll();
            }
            pawn.records.Increment(RecordDefOf.TimesOnFire);
            return(false);
        }