User:Tirerim/sandbox/Module:Next Rat-Season Weekend

From Fallen London Wiki

local p = {}

local function season_offset(current_season, future_season)

 local seasons = {'Freeze-and-Fall' = 0, 'Lying-Longing' = 1, 'Candle-Canker' = 2, 'Wink-and-Wane' = 3, 'Vial-Vane' = 4, 'Take-and-Toil' = 5, 'Wine-Whisper' = 6, 'Rise-and-Rake' = 7, 'Nitre-Knife' = 8, 'Kifer-Caitiff' = 9, 'Skitter-Scatter' = 10, 'Dimmest-Dark' = 11}
 local offset = ( seasons[future_season] - seasons[current_season] ) % 12
 return offset

end

-- since we only care about whole days, we can just add/subtract days worth of seconds to/from epoch time local function rat_start_for_time(time)

 local weekday = os.date("%w", time)
 local friday = (5 - weekday) * 86400 + time
 if (weekday == 1 and os.date("%H%M", time) < 1100) or weekday == 0 then
   friday = friday - (7 * 86400)
 end
 return friday

end

local function date_for_offset(offset)

 local current_time = os.time()
 local start_day = rat_start_for_time(current_time) + (offset * 7 * 86400)
 local end_day = start_day + (3 * 86400)
 return os.date("%b %d", start_day) .. ' - ' .. os.date("%b %d", end_day)

end

function p.weekend(frame)

 local current_season = frame[1]
 local future_season = frame[2]
 local offset = season_offset(current_season, future_season)
 return date_for_offset(offset)

end

return p