protected override void DisabledCheck()
        {
            base.DisabledCheck();

            if (ability.CooldownTicksRemaining > 0)
            {
                disabledReason = "AbilityPrayerServiceCooldown".Translate() + ": " + ability.CooldownTicksRemaining.ToStringTicksToPeriod();
                disabled       = true;
            }

            LordJob_PrayerService lordJob_PrayerService = ability.pawn.GetLord()?.LordJob as LordJob_PrayerService;

            if (lordJob_PrayerService != null)
            {
                disabledReason = "AbilityPrayerServiceDisabledAlreadyGivingPrayerService".Translate();
                disabled       = true;
            }

            if (ability.pawn.Drafted)
            {
                disabledReason = "AbilityPrayerServiceDisabledDrafted".Translate();
                disabled       = true;
            }

            var pulpits = ability.pawn.Map.listerBuildings.AllBuildingsColonistOfDef(RatkinBuildingDefOf.RK_Pulpit).Where(x => IsPrayerServiceAvailableSpot(ability.pawn, x));

            if (pulpits.Count() == 0)
            {
                disabledReason = "AbilityPrayerServiceDisabledNoPulpit".Translate();
                disabled       = true;
            }
        }
        public override void ProcessInput(Event ev)
        {
            var organizer = ability.pawn;

            if (organizer.Drafted)
            {
                return;
            }

            LordJob_PrayerService lordJob_PrayerService = ability.pawn.GetLord()?.LordJob as LordJob_PrayerService;

            if (lordJob_PrayerService != null)
            {
                return;
            }

            if (ability.CooldownTicksRemaining > 0)
            {
                return;
            }

            if (!TryFindGatherSpot(organizer, out var pulpit, out var spot))
            {
                return;
            }

            int cooldownTicks = ability.def.cooldownTicksRange.RandomInRange;

            ability.StartCooldown(cooldownTicks);

            // gives global cooldown
            foreach (var pawn in PawnsFinder.AllMaps_FreeColonistsAndPrisoners)
            {
                pawn.abilities?.GetAbility(RatkinAbilityDefOf.RK_PrayerService)?.StartCooldown(cooldownTicks);
            }

            LordJob lordJob = new LordJob_PrayerService(pulpit, spot, organizer);

            LordMaker.MakeNewLord(organizer.Faction, lordJob, organizer.Map, (!lordJob.OrganizerIsStartingPawn) ? null : new Pawn[]
            {
                organizer
            });
        }