public virtual void SetDuration(QuestDuration duration) { questDuration.Value = duration; WorldDate date = new WorldDate(); switch (duration) { case QuestDuration.Week: date = new WorldDate(Game1.year, Game1.currentSeason, (Game1.dayOfMonth - 1) / 7 * 7); date.TotalDays++; date.TotalDays += 7; break; case QuestDuration.TwoWeeks: date = new WorldDate(Game1.year, Game1.currentSeason, (Game1.dayOfMonth - 1) / 7 * 7); date.TotalDays++; date.TotalDays += 14; break; case QuestDuration.Month: date = new WorldDate(Game1.year, Game1.currentSeason, 0); date.TotalDays++; date.TotalDays += 28; break; case QuestDuration.TwoDays: date = new WorldDate(Game1.year, Game1.currentSeason, Game1.dayOfMonth); date.TotalDays += 2; break; case QuestDuration.ThreeDays: date = new WorldDate(Game1.year, Game1.currentSeason, Game1.dayOfMonth); date.TotalDays += 3; break; } dueDate.Value = date.TotalDays; }
/// <summary> /// Harmony Postifx function to change the remaining duration of the special order to not start on monday. /// </summary> /// <param name="__instance"></param> /// <param name="duration"></param> public static void SpecialOrder_SetDuration_PostFix(ref SpecialOrder __instance, QuestDuration duration) { if (__instance == null) { return; } WorldDate date = new WorldDate(Game1.year, Game1.currentSeason, Game1.dayOfMonth); switch (duration) { case QuestDuration.Week: date.TotalDays += 7; break; case QuestDuration.TwoWeeks: date.TotalDays += 14; break; case QuestDuration.Month: date.TotalDays += 28; break; case QuestDuration.TwoDays: date.TotalDays += 2; break; case QuestDuration.ThreeDays: date.TotalDays += 3; break; } __instance.dueDate.Value = date.TotalDays; }