public static bool OnTest(Sim actor, Sim target, ActiveTopic topic, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { try { //bool isAutonomous = Common.IsAutonomous(actor); VaccinationSessionSituation situation = VaccinationSessionSituation.GetVaccinationSessionSituation(actor); if (situation != null) { if (situation.IsInIgnoreList(target)) { return(false); } else if (!situation.IsInSeekersList(target) && !situation.IsInInterruptedList(target)) { return(false); } else if (isAutonomous && (actor.GetDistanceToObject(target) > AutographSessionSituation.MaxDistanceForAutonomousSign)) { return(false); } return(true); } else { FreeClinicSessionSituation freeClinicSessionSituation = FreeClinicSessionSituation.GetFreeClinicSessionSituation(actor); if (freeClinicSessionSituation != null) { if (freeClinicSessionSituation.IsInIgnoreList(target)) { return(false); } else if (!freeClinicSessionSituation.IsInSeekersList(target) && !freeClinicSessionSituation.IsInInterruptedList(target)) { return(false); } else if (isAutonomous && (actor.GetDistanceToObject(target) > AutographSessionSituation.MaxDistanceForAutonomousSign)) { return(false); } } else if (isAutonomous) { return(false); } } Medical medical = actor.Occupation as Medical; return((medical != null) && (medical.Level >= 3)); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(actor, target, e); return(false); } }