Module:BassaridianCalendar: Difference between revisions
From MicrasWiki
Jump to navigationJump to search
NewZimiaGov (talk | contribs) No edit summary |
NewZimiaGov (talk | contribs) No edit summary |
||
Line 2: | Line 2: | ||
function p.getCurrentDate() | function p.getCurrentDate() | ||
-- Get the current Gregorian date | -- Get the current Gregorian date | ||
local | local currentDate = os.date("*t") | ||
local | local gregorianDay = currentDate.yday -- Day of the year (1-365/366) | ||
local isLeapYear = (currentDate.year % 4 == 0 and (currentDate.year % 100 ~= 0 or currentDate.year % 400 == 0)) | |||
local isLeapYear = ( | |||
local totalDays = isLeapYear and 366 or 365 -- Total days in the Gregorian year | local totalDays = isLeapYear and 366 or 365 -- Total days in the Gregorian year | ||
-- Bassaridian calendar constants | -- PSSC and Bassaridian calendar constants | ||
local | local bassaridianStart = 237 -- August 25th is the 237th day of the Gregorian year | ||
local calendarDays = 183 -- Total days in the Bassaridian year | local calendarDays = 183 -- Total days in the Bassaridian year | ||
-- | -- Calculate PSSC year | ||
local adjustedDay = | local psscYear = currentDate.year - 1970 + (gregorianDay >= 60 and 1 or 0) -- PSSC year increments on March 1st | ||
-- Calculate Bassaridian day | |||
local adjustedDay = gregorianDay - bassaridianStart | |||
if adjustedDay < 0 then | if adjustedDay < 0 then | ||
adjustedDay = adjustedDay + totalDays -- | adjustedDay = adjustedDay + totalDays -- Wrap around for the previous year | ||
end | end | ||
local bassaridianDay = (adjustedDay % calendarDays) + 1 | local bassaridianDay = (adjustedDay % calendarDays) + 1 | ||
-- Determine month | -- Determine month and zodiac sign | ||
local | local month, zodiacSign | ||
if bassaridianDay <= 61 then | if bassaridianDay <= 61 then | ||
month = "Atosiel" | |||
if bassaridianDay <= 12 then | if bassaridianDay <= 12 then | ||
zodiacSign = "Atosien" | zodiacSign = "Atosien" | ||
Line 36: | Line 37: | ||
zodiacSign = "Indomin" | zodiacSign = "Indomin" | ||
end | end | ||
elseif bassaridianDay <= 121 then | elseif bassaridianDay <= 121 then | ||
month = "Thalassiel" | |||
if bassaridianDay <= 73 then | |||
zodiacSign = "Chrysen" | zodiacSign = "Chrysen" | ||
elseif | elseif bassaridianDay <= 85 then | ||
zodiacSign = "Thalassian" | zodiacSign = "Thalassian" | ||
elseif | elseif bassaridianDay <= 97 then | ||
zodiacSign = "Nephelia" | zodiacSign = "Nephelia" | ||
elseif | elseif bassaridianDay <= 109 then | ||
zodiacSign = "Glinaeus" | zodiacSign = "Glinaeus" | ||
else | else | ||
zodiacSign = "Noctien" | zodiacSign = "Noctien" | ||
end | end | ||
else | else | ||
month = "Opsitheiel" | |||
if bassaridianDay <= 133 then | |||
zodiacSign = "Opsithia" | zodiacSign = "Opsithia" | ||
elseif | elseif bassaridianDay <= 145 then | ||
zodiacSign = "Stygian" | zodiacSign = "Stygian" | ||
elseif | elseif bassaridianDay <= 157 then | ||
zodiacSign = "Faunian" | zodiacSign = "Faunian" | ||
elseif | elseif bassaridianDay <= 169 then | ||
zodiacSign = "Silenian" | zodiacSign = "Silenian" | ||
else | else | ||
Line 68: | Line 67: | ||
-- Event lookup table | -- Event lookup table | ||
local events = { | local events = { | ||
["6 | ["Atosiel,6"] = "Bayram al-Nur (Festival of Light) in [[Vaeringheim]]", | ||
["18 | ["Atosiel,18"] = "Chag Or Hadash (Festival of New Light) in [[Luminaria]]", | ||
["30 | ["Atosiel,30"] = "Symposion Eirinis (Symposium of Harmony) in [[Serena]]", | ||
["43 | ["Atosiel,43"] = "Alev Günü (Day of Flame) in [[Pyralis]]", | ||
["55 | ["Atosiel,55"] = "Tikkun Tzel (Repair of Shadows) in [[Symphonara]]", | ||
["67 | ["Thalassiel,67"] = "Panegyris Chrysou (Golden Gathering) in [[Aurelia]]", | ||
["80 | ["Thalassiel,80"] = "Mehtap Dalgası (Moonlit Tide) in [[Vaeringheim]]", | ||
["92 | ["Thalassiel,92"] = "Oneiro Foteino (Dream of Illumination) in [[Somniumpolis]]", | ||
["105 | ["Thalassiel,105"] = "Erev Galgal (Eve of Cycles) in [[Nexa]]", | ||
["115 | ["Thalassiel,115"] = "Leilat al-Kamar (Night of the Moon) in [[Lunalis Sancta]]", | ||
["128 | ["Opsitheiel,128"] = "Chag Tvuah (Festival of Harvest) in [[Sylvapolis]]", | ||
["140 | ["Opsitheiel,140"] = "Anagenesis Eirmos (Procession of Rebirth) in [[Acheron]]", | ||
["150 | ["Opsitheiel,150"] = "Panagia Therizis (Holy Day of the Reaper) in [[Sylvapolis]]", | ||
["165 | ["Opsitheiel,165"] = "Karnavali Thysias (Carnival of Celebration) in [[Erythros]]", | ||
["175 | ["Opsitheiel,175"] = "Sefar Yashar (Straight Path Celebration) in [[Catonis Atrium]]", | ||
} | } | ||
-- Find | -- Find event for the current date | ||
local eventKey = | local eventKey = month .. "," .. bassaridianDay | ||
local event = events[eventKey] or "No significant events today." | local event = events[eventKey] or "No significant events today." | ||
-- Return | -- Return formatted date | ||
return bassaridianDay .. ", " .. | return bassaridianDay .. ", " .. month .. " (" .. zodiacSign .. "), " .. psscYear .. " PSSC – " .. event | ||
end | end | ||
return p | return p |
Revision as of 02:11, 11 December 2024
Documentation for this module may be created at Module:BassaridianCalendar/doc
local p = {} function p.getCurrentDate() -- Get the current Gregorian date local currentDate = os.date("*t") local gregorianDay = currentDate.yday -- Day of the year (1-365/366) local isLeapYear = (currentDate.year % 4 == 0 and (currentDate.year % 100 ~= 0 or currentDate.year % 400 == 0)) local totalDays = isLeapYear and 366 or 365 -- Total days in the Gregorian year -- PSSC and Bassaridian calendar constants local bassaridianStart = 237 -- August 25th is the 237th day of the Gregorian year local calendarDays = 183 -- Total days in the Bassaridian year -- Calculate PSSC year local psscYear = currentDate.year - 1970 + (gregorianDay >= 60 and 1 or 0) -- PSSC year increments on March 1st -- Calculate Bassaridian day local adjustedDay = gregorianDay - bassaridianStart if adjustedDay < 0 then adjustedDay = adjustedDay + totalDays -- Wrap around for the previous year end local bassaridianDay = (adjustedDay % calendarDays) + 1 -- Determine month and zodiac sign local month, zodiacSign if bassaridianDay <= 61 then month = "Atosiel" if bassaridianDay <= 12 then zodiacSign = "Atosien" elseif bassaridianDay <= 24 then zodiacSign = "Eosena" elseif bassaridianDay <= 36 then zodiacSign = "Micrasha" elseif bassaridianDay <= 48 then zodiacSign = "Pyreska" else zodiacSign = "Indomin" end elseif bassaridianDay <= 121 then month = "Thalassiel" if bassaridianDay <= 73 then zodiacSign = "Chrysen" elseif bassaridianDay <= 85 then zodiacSign = "Thalassian" elseif bassaridianDay <= 97 then zodiacSign = "Nephelia" elseif bassaridianDay <= 109 then zodiacSign = "Glinaeus" else zodiacSign = "Noctien" end else month = "Opsitheiel" if bassaridianDay <= 133 then zodiacSign = "Opsithia" elseif bassaridianDay <= 145 then zodiacSign = "Stygian" elseif bassaridianDay <= 157 then zodiacSign = "Faunian" elseif bassaridianDay <= 169 then zodiacSign = "Silenian" else zodiacSign = "Catosien" end end -- Event lookup table local events = { ["Atosiel,6"] = "Bayram al-Nur (Festival of Light) in [[Vaeringheim]]", ["Atosiel,18"] = "Chag Or Hadash (Festival of New Light) in [[Luminaria]]", ["Atosiel,30"] = "Symposion Eirinis (Symposium of Harmony) in [[Serena]]", ["Atosiel,43"] = "Alev Günü (Day of Flame) in [[Pyralis]]", ["Atosiel,55"] = "Tikkun Tzel (Repair of Shadows) in [[Symphonara]]", ["Thalassiel,67"] = "Panegyris Chrysou (Golden Gathering) in [[Aurelia]]", ["Thalassiel,80"] = "Mehtap Dalgası (Moonlit Tide) in [[Vaeringheim]]", ["Thalassiel,92"] = "Oneiro Foteino (Dream of Illumination) in [[Somniumpolis]]", ["Thalassiel,105"] = "Erev Galgal (Eve of Cycles) in [[Nexa]]", ["Thalassiel,115"] = "Leilat al-Kamar (Night of the Moon) in [[Lunalis Sancta]]", ["Opsitheiel,128"] = "Chag Tvuah (Festival of Harvest) in [[Sylvapolis]]", ["Opsitheiel,140"] = "Anagenesis Eirmos (Procession of Rebirth) in [[Acheron]]", ["Opsitheiel,150"] = "Panagia Therizis (Holy Day of the Reaper) in [[Sylvapolis]]", ["Opsitheiel,165"] = "Karnavali Thysias (Carnival of Celebration) in [[Erythros]]", ["Opsitheiel,175"] = "Sefar Yashar (Straight Path Celebration) in [[Catonis Atrium]]", } -- Find event for the current date local eventKey = month .. "," .. bassaridianDay local event = events[eventKey] or "No significant events today." -- Return formatted date return bassaridianDay .. ", " .. month .. " (" .. zodiacSign .. "), " .. psscYear .. " PSSC – " .. event end return p