internal static void OnDbInit() { IS_ALLOWED = new Chore.Precondition { id = "IsProfileAllowed", description = WorkshopProfilesStrings.DUPLICANTS.CHORES.PRECONDITIONS. ALLOWED_BY_PROFILE, fn = IsAllowed }; }
/// <summary> /// Applied after AddPrecondition runs. /// </summary> internal static void Postfix(Chore __instance, Chore.Precondition precondition, object data) { // If the chore is of type Work if (precondition.id == ChorePreconditions.instance.IsScheduledTime.id && data == Db.Get().ScheduleBlockTypes.Work) { AddProfilePrecondition(__instance); } }
/// <summary> /// Applied after AddPrecondition runs. /// </summary> internal static void Postfix(Chore __instance, Chore.Precondition precondition, object data) { if (precondition.id == ChorePreconditions.instance.IsScheduledTime.id && (data is ScheduleBlockType type) && type == Work) { // Any task classified as Work gets our finish time precondition __instance.AddPrecondition(CAN_START_NEW, __instance); } }
protected static void ModifyChore(Workable instance, Chore chore, Func <Workable, bool> isEndlessWorking) { var precondition = new Chore.Precondition() { id = "RequireAttributeRange", fn = delegate(ref Chore.Precondition.Context context, object data) { return(!isEndlessWorking(instance) || ShouldChoreBeWorked(context)); }, description = DUPLICANTS.CHORES.PRECONDITIONS.REQUIRES_ATTRIBUTE_RANGE.DESCRIPTION }; chore.AddPrecondition(precondition, null); }