Site News
Warning: This wiki contains spoilers. Read at your own risk!

Social media: If you would like, please join our Discord server, and/or follow us on Twitter (X) or Tumblr!

Module:GhbRotation

From Fire Emblem Wiki, your source on Fire Emblem information. By fans, for fans.

For use on Grand Hero Battle and possibly other locations later on. This module can be used to output Grand Hero Battle data, including the first rerun date, the next rerun date, total number of reruns, and the current active Grand Hero Battle.

The only function, main, takes three parameters, each of them corresponding to a year, a month number, and a day of a month, where the full date represents the first rerun date of a Grand Hero Battle.

{{#invoke:GhbRotation|main|2018|02|10}}

This outputs:

In rotation since February 10, 2018
Rerun in rotation 325 times to date
Next rerun: May 4, 2024


local p = {}

function p.main(frame)
	args = frame.args
	date_begin = os.time({year=args[1], month=args[2], day=args[3], hour=7})
    next_rerun_days_away = 7 - math.floor(os.difftime( os.time(), date_begin ) / (24*60*60)) % 7

	-- Subtracting seven hours to calibrate daily reset time (07:00 UTC)
    next_rerun = os.date("%B %e, %Y", math.max(os.time()-7*60*60+(24*60*60*next_rerun_days_away), date_begin))
    
    rotation_since = os.date("%B %e, %Y", date_begin)

	-- Using ceiling function to account currently running GHB
    total_reruns = math.max(0, math.ceil(os.difftime( os.time(), date_begin ) / (24*60*60)/7))

    if ( next_rerun_days_away == 7 and os.time() >= date_begin ) then
        is_active = "<b>Currently available</b><br/>"
    else
        is_active = ""
    end

    return string.format("In rotation since %s<br/>Rerun in rotation %s times to date<br/>%sNext rerun: %s",
    	rotation_since, total_reruns, is_active, next_rerun)
end

return p