Module:BassaridianCalendar: Difference between revisions
From MicrasWiki
Jump to navigationJump to search
NewZimiaGov (talk | contribs) (Undo revision 349521 by NewZimiaGov (talk)) Tag: Undo |
NewZimiaGov (talk | contribs) No edit summary |
||
(6 intermediate revisions by the same user not shown) | |||
Line 13: | Line 13: | ||
local dayOfYear = math.floor((yearFraction - psscYear) * daysPerYear) + 1 | local dayOfYear = math.floor((yearFraction - psscYear) * daysPerYear) + 1 | ||
-- DEBUG/LOG: if you'd like to see the dayOfYear for troubleshooting | |||
-- mw.log("DEBUG: dayOfYear = " .. tostring(dayOfYear)) | |||
---------------------------------------------------------------------------- | |||
-- 1) SAFETY CHECK: Ensure dayOfYear is between 1 and 183 (inclusive) | |||
---------------------------------------------------------------------------- | |||
if dayOfYear < 1 then | |||
-- Option A: Wrap around by adding daysPerYear until we're back in range | |||
dayOfYear = dayOfYear + daysPerYear | |||
while dayOfYear < 1 do | |||
dayOfYear = dayOfYear + daysPerYear | |||
end | |||
-- Option B (alternative) could be a modulo approach: | |||
-- dayOfYear = ((dayOfYear - 1) % daysPerYear) + 1 | |||
elseif dayOfYear > daysPerYear then | |||
-- If for some reason it exceeds 183, wrap around or clamp | |||
dayOfYear = ((dayOfYear - 1) % daysPerYear) + 1 | |||
end | |||
---------------------------------------------------------------------------- | |||
-- 2) ZODIAC PROVERBS | |||
---------------------------------------------------------------------------- | |||
local zodiacProverbs = { | local zodiacProverbs = { | ||
Atosien = "The first light reveals the sacred cycle of renewal.", | Atosien = "The first light reveals the sacred cycle of renewal.", | ||
Eosena = "The dawn whispers: every step is a rebirth.", | Eosena = "The dawn whispers: every step is a rebirth.", | ||
Micrasha = "Wisdom is the balance of shadow and flame.", | Micrasha = "Wisdom is the balance of shadow and flame.", | ||
Pyreska = "Creation ignites in the fires of transformation.", | Pyreska = "Creation ignites in the fires of transformation.", | ||
Indomin = "Two paths intertwine: strength in unity, clarity in duality.", | Indomin = "Two paths intertwine: strength in unity, clarity in duality.", | ||
Chrysen = "Gold is the soul's test: will you hoard or share?", | Chrysen = "Gold is the soul's test: will you hoard or share?", | ||
Thalassian = "The tides of Thalassiel teach patience and purpose.", | Thalassian= "The tides of Thalassiel teach patience and purpose.", | ||
Nephelia = "Dreams are stars, fleeting yet eternal in the night sky.", | Nephelia = "Dreams are stars, fleeting yet eternal in the night sky.", | ||
Glinaeus = "The frost preserves what must endure.", | Glinaeus = "The frost preserves what must endure.", | ||
Noctien = "Night guides those who seek the unseen truths.", | Noctien = "Night guides those who seek the unseen truths.", | ||
Opsithia = "The harvest feeds not just the body, but the spirit.", | Opsithia = "The harvest feeds not just the body, but the spirit.", | ||
Stygian = "Through the Styx flows the essence of transformation.", | Stygian = "Through the Styx flows the essence of transformation.", | ||
Faunian = "The forests sing of life and the balance it brings.", | Faunian = "The forests sing of life and the balance it brings.", | ||
Silenian = "Celebration is the nectar of divine abundance.", | Silenian = "Celebration is the nectar of divine abundance.", | ||
Catosien = "Order shapes greatness; the straight path ascends." | Catosien = "Order shapes greatness; the straight path ascends." | ||
} | } | ||
---------------------------------------------------------------------------- | |||
-- 3) DETERMINE MONTH, DAY-IN-MONTH, AND ZODIAC | |||
---------------------------------------------------------------------------- | |||
local month, dayInMonth, zodiac | local month, dayInMonth, zodiac | ||
-- Day ranges: 1..61 => Atosiel, 62..122 => Thalassiel, 123..183 => Opsitheiel | |||
if dayOfYear <= 61 then | if dayOfYear <= 61 then | ||
month = "Atosiel" | month = "Atosiel" | ||
dayInMonth = dayOfYear | dayInMonth = dayOfYear | ||
if dayInMonth <= 12 then zodiac = "Atosien" | |||
elseif dayInMonth <= 24 then zodiac = "Eosena" | -- ZODIAC | ||
elseif dayInMonth <= 36 then zodiac = "Micrasha" | if dayInMonth <= 12 then | ||
elseif dayInMonth <= 48 then zodiac = "Pyreska" | zodiac = "Atosien" | ||
else zodiac = "Indomin" end | elseif dayInMonth <= 24 then | ||
zodiac = "Eosena" | |||
elseif dayInMonth <= 36 then | |||
zodiac = "Micrasha" | |||
elseif dayInMonth <= 48 then | |||
zodiac = "Pyreska" | |||
else | |||
zodiac = "Indomin" | |||
end | |||
elseif dayOfYear <= 122 then | elseif dayOfYear <= 122 then | ||
month = "Thalassiel" | month = "Thalassiel" | ||
dayInMonth = dayOfYear - 61 | dayInMonth = dayOfYear - 61 | ||
if dayInMonth <= 12 then zodiac = "Chrysen" | |||
elseif dayInMonth <= 24 then zodiac = "Thalassian" | -- ZODIAC | ||
elseif dayInMonth <= 36 then zodiac = "Nephelia" | if dayInMonth <= 12 then | ||
elseif dayInMonth <= 48 then zodiac = "Glinaeus" | zodiac = "Chrysen" | ||
else zodiac = "Noctien" end | elseif dayInMonth <= 24 then | ||
zodiac = "Thalassian" | |||
elseif dayInMonth <= 36 then | |||
zodiac = "Nephelia" | |||
elseif dayInMonth <= 48 then | |||
zodiac = "Glinaeus" | |||
else | |||
zodiac = "Noctien" | |||
end | |||
else | else | ||
month = "Opsitheiel" | month = "Opsitheiel" | ||
dayInMonth = dayOfYear - 122 | dayInMonth = dayOfYear - 122 | ||
if dayInMonth <= 12 then zodiac = "Opsithia" | |||
elseif dayInMonth <= 24 then zodiac = "Stygian" | -- ZODIAC | ||
elseif dayInMonth <= 36 then zodiac = "Faunian" | if dayInMonth <= 12 then | ||
elseif dayInMonth <= 48 then zodiac = "Silenian" | zodiac = "Opsithia" | ||
else zodiac = "Catosien" end | elseif dayInMonth <= 24 then | ||
zodiac = "Stygian" | |||
elseif dayInMonth <= 36 then | |||
zodiac = "Faunian" | |||
elseif dayInMonth <= 48 then | |||
zodiac = "Silenian" | |||
else | |||
zodiac = "Catosien" | |||
end | |||
end | end | ||
---------------------------------------------------------------------------- | |||
-- 4) SAFETY NET: If somehow dayInMonth is still nil, handle gracefully | |||
---------------------------------------------------------------------------- | |||
if not dayInMonth then | |||
-- Provide a fallback, e.g., default to day 1 in Atosiel | |||
dayInMonth = 1 | |||
month = "Atosiel" | |||
zodiac = "Atosien" | |||
end | |||
---------------------------------------------------------------------------- | |||
-- 5) DEFINE EVENTS WITH CORRECTED DAY ALIGNMENT AND SHORT DESCRIPTIONS | |||
---------------------------------------------------------------------------- | |||
local events = { | local events = { | ||
["Atosiel,6"] = "Bayram al-Nur (Festival of Light) [Vaeringheim]", | ["Atosiel,6"] = "Bayram al-Nur (Festival of Light) [Vaeringheim] – Celebrates Atos’s dominion over creation.", | ||
["Atosiel,18"] = "Chag Or Hadash (Festival of New Light) [Luminaria]", | ["Atosiel,18"] = "Chag Or Hadash (Festival of New Light) [Luminaria] – Honoring the Lady Divine Eos.", | ||
["Atosiel,30"] = "Symposion Eirinis (Symposium of Harmony) [Serena]", | ["Atosiel,30"] = "Symposion Eirinis (Symposium of Harmony) [Serena] – Wisdom gatherings for Micrasha.", | ||
["Atosiel,43"] = "Alev Günü (Day of Flame) [Pyralis]", | ["Atosiel,43"] = "Alev Günü (Day of Flame) [Pyralis] – Ignis Aeternum rites for Pyros.", | ||
["Atosiel,48"] = "Day of Abandonment [Vaeringheim]", | ["Atosiel,48"] = "Day of Abandonment [Vaeringheim] – Reflects on exile by Old Gods.", | ||
["Atosiel,55"] = "Tikkun Tzel (Repair of Shadows) [Symphonara]", | ["Atosiel,55"] = "Tikkun Tzel (Repair of Shadows) [Symphonara] – Healing strife for Indigo and Momiji.", | ||
["Thalassiel, | ["Thalassiel,6"] = "Panegyris Chrysou (Golden Gathering) [Aurelia] – Trade fair for Chrysos.", | ||
["Thalassiel, | ["Thalassiel,17"] = "Constitution Day [Luminaria] – Remembers civic charters under Tarsica.", | ||
["Thalassiel, | ["Thalassiel,19"] = "Mehtap Dalgası (Moonlit Tide) [Vaeringheim] – Lunar rites of Thalassa.", | ||
["Thalassiel, | ["Thalassiel,31"] = "Oneiro Foteino (Dream of Illumination) [Somniumpolis] – Nephele’s dream festival.", | ||
["Thalassiel, | ["Thalassiel,39"] = "Anniversary of victory in the New South Jangsong Campaign [Nexa]", | ||
["Thalassiel, | ["Thalassiel,44"] = "Erev Galgal (Eve of Cycles) [Nexa] – Glinos cycle rites.", | ||
["Thalassiel, | ["Thalassiel,45"] = "Bassaridia Festival [Somniumpolis] – Celebrating Alperkin roots.", | ||
["Thalassiel, | ["Thalassiel,48"] = "Anniversary of victory in the Southern Lake Morovia Campaign [Somniumpolis]", | ||
["Thalassiel, | ["Thalassiel,54"] = "Leilat al-Kamar (Night of the Moon) [Lunalis Sancta] – Noctis vigil.", | ||
["Opsitheiel, | ["Thalassiel,61"] = "Taşrakah (Reverence of the Stone) [Luminaria] – Honors Eos & Tarsica.", | ||
["Opsitheiel, | ["Opsitheiel,6"] = "Chag Tvuah (Festival of Harvest) [Sylvapolis] – Celebrating Opsithe.", | ||
["Opsitheiel, | ["Opsitheiel,18"] = "Anagenesis Eirmos (Procession of Rebirth) [Acheron] – Styx transformations.", | ||
["Opsitheiel, | ["Opsitheiel,28"] = "Panagia Therizis (Holy Day of the Reaper) [Sylvapolis] – Double-festival for Faun/Opsithe.", | ||
["Opsitheiel, | ["Opsitheiel,37"] = "Anniversary of victory in the Morovian Frontier Campaign [Acheron]", | ||
["Opsitheiel, | ["Opsitheiel,43"] = "Karnavali Thysias (Carnival of Celebration) [Erythros] – Silenus merriment.", | ||
["Opsitheiel,53"] = "Sefar Yashar (Straight Path Celebration) [Catonis Atrium] – Devotions to Cato." | |||
} | } | ||
---------------------------------------------------------------------------- | |||
-- 6) EVENT LOOKUP | |||
---------------------------------------------------------------------------- | |||
local eventKey = month .. "," .. dayInMonth | local eventKey = month .. "," .. dayInMonth | ||
local event = events[eventKey] or "No significant events today." | local event = events[eventKey] or "No significant events today." | ||
return dayOfYear .. ", " .. month .. " (" .. zodiac .. "), " .. psscYear .. " PSSC – " .. event .. " – Proverb: " .. dailyProverb | ---------------------------------------------------------------------------- | ||
-- 7) LOOK UP PROVERB | |||
---------------------------------------------------------------------------- | |||
local dailyProverb = zodiacProverbs[zodiac] or "No proverb found." | |||
---------------------------------------------------------------------------- | |||
-- 8) RETURN THE RESULT | |||
---------------------------------------------------------------------------- | |||
return dayOfYear .. ", " .. month .. " (" .. zodiac .. "), " .. psscYear | |||
.. " PSSC – " .. event .. " – Proverb: " .. dailyProverb | |||
end | end | ||
return p | return p |
Latest revision as of 06:53, 30 December 2024
Documentation for this module may be created at Module:BassaridianCalendar/doc
local p = {} function p.getCurrentDate() local startDate = os.time({year = 1999, month = 8, day = 6}) local secondsInDay = 86400 local daysPerYear = 183 local currentDate = os.time() local totalDaysElapsed = math.floor((currentDate - startDate) / secondsInDay) local yearFraction = totalDaysElapsed / daysPerYear local psscYear = math.floor(yearFraction) local dayOfYear = math.floor((yearFraction - psscYear) * daysPerYear) + 1 -- DEBUG/LOG: if you'd like to see the dayOfYear for troubleshooting -- mw.log("DEBUG: dayOfYear = " .. tostring(dayOfYear)) ---------------------------------------------------------------------------- -- 1) SAFETY CHECK: Ensure dayOfYear is between 1 and 183 (inclusive) ---------------------------------------------------------------------------- if dayOfYear < 1 then -- Option A: Wrap around by adding daysPerYear until we're back in range dayOfYear = dayOfYear + daysPerYear while dayOfYear < 1 do dayOfYear = dayOfYear + daysPerYear end -- Option B (alternative) could be a modulo approach: -- dayOfYear = ((dayOfYear - 1) % daysPerYear) + 1 elseif dayOfYear > daysPerYear then -- If for some reason it exceeds 183, wrap around or clamp dayOfYear = ((dayOfYear - 1) % daysPerYear) + 1 end ---------------------------------------------------------------------------- -- 2) ZODIAC PROVERBS ---------------------------------------------------------------------------- local zodiacProverbs = { Atosien = "The first light reveals the sacred cycle of renewal.", Eosena = "The dawn whispers: every step is a rebirth.", Micrasha = "Wisdom is the balance of shadow and flame.", Pyreska = "Creation ignites in the fires of transformation.", Indomin = "Two paths intertwine: strength in unity, clarity in duality.", Chrysen = "Gold is the soul's test: will you hoard or share?", Thalassian= "The tides of Thalassiel teach patience and purpose.", Nephelia = "Dreams are stars, fleeting yet eternal in the night sky.", Glinaeus = "The frost preserves what must endure.", Noctien = "Night guides those who seek the unseen truths.", Opsithia = "The harvest feeds not just the body, but the spirit.", Stygian = "Through the Styx flows the essence of transformation.", Faunian = "The forests sing of life and the balance it brings.", Silenian = "Celebration is the nectar of divine abundance.", Catosien = "Order shapes greatness; the straight path ascends." } ---------------------------------------------------------------------------- -- 3) DETERMINE MONTH, DAY-IN-MONTH, AND ZODIAC ---------------------------------------------------------------------------- local month, dayInMonth, zodiac -- Day ranges: 1..61 => Atosiel, 62..122 => Thalassiel, 123..183 => Opsitheiel if dayOfYear <= 61 then month = "Atosiel" dayInMonth = dayOfYear -- ZODIAC if dayInMonth <= 12 then zodiac = "Atosien" elseif dayInMonth <= 24 then zodiac = "Eosena" elseif dayInMonth <= 36 then zodiac = "Micrasha" elseif dayInMonth <= 48 then zodiac = "Pyreska" else zodiac = "Indomin" end elseif dayOfYear <= 122 then month = "Thalassiel" dayInMonth = dayOfYear - 61 -- ZODIAC if dayInMonth <= 12 then zodiac = "Chrysen" elseif dayInMonth <= 24 then zodiac = "Thalassian" elseif dayInMonth <= 36 then zodiac = "Nephelia" elseif dayInMonth <= 48 then zodiac = "Glinaeus" else zodiac = "Noctien" end else month = "Opsitheiel" dayInMonth = dayOfYear - 122 -- ZODIAC if dayInMonth <= 12 then zodiac = "Opsithia" elseif dayInMonth <= 24 then zodiac = "Stygian" elseif dayInMonth <= 36 then zodiac = "Faunian" elseif dayInMonth <= 48 then zodiac = "Silenian" else zodiac = "Catosien" end end ---------------------------------------------------------------------------- -- 4) SAFETY NET: If somehow dayInMonth is still nil, handle gracefully ---------------------------------------------------------------------------- if not dayInMonth then -- Provide a fallback, e.g., default to day 1 in Atosiel dayInMonth = 1 month = "Atosiel" zodiac = "Atosien" end ---------------------------------------------------------------------------- -- 5) DEFINE EVENTS WITH CORRECTED DAY ALIGNMENT AND SHORT DESCRIPTIONS ---------------------------------------------------------------------------- local events = { ["Atosiel,6"] = "Bayram al-Nur (Festival of Light) [Vaeringheim] – Celebrates Atos’s dominion over creation.", ["Atosiel,18"] = "Chag Or Hadash (Festival of New Light) [Luminaria] – Honoring the Lady Divine Eos.", ["Atosiel,30"] = "Symposion Eirinis (Symposium of Harmony) [Serena] – Wisdom gatherings for Micrasha.", ["Atosiel,43"] = "Alev Günü (Day of Flame) [Pyralis] – Ignis Aeternum rites for Pyros.", ["Atosiel,48"] = "Day of Abandonment [Vaeringheim] – Reflects on exile by Old Gods.", ["Atosiel,55"] = "Tikkun Tzel (Repair of Shadows) [Symphonara] – Healing strife for Indigo and Momiji.", ["Thalassiel,6"] = "Panegyris Chrysou (Golden Gathering) [Aurelia] – Trade fair for Chrysos.", ["Thalassiel,17"] = "Constitution Day [Luminaria] – Remembers civic charters under Tarsica.", ["Thalassiel,19"] = "Mehtap Dalgası (Moonlit Tide) [Vaeringheim] – Lunar rites of Thalassa.", ["Thalassiel,31"] = "Oneiro Foteino (Dream of Illumination) [Somniumpolis] – Nephele’s dream festival.", ["Thalassiel,39"] = "Anniversary of victory in the New South Jangsong Campaign [Nexa]", ["Thalassiel,44"] = "Erev Galgal (Eve of Cycles) [Nexa] – Glinos cycle rites.", ["Thalassiel,45"] = "Bassaridia Festival [Somniumpolis] – Celebrating Alperkin roots.", ["Thalassiel,48"] = "Anniversary of victory in the Southern Lake Morovia Campaign [Somniumpolis]", ["Thalassiel,54"] = "Leilat al-Kamar (Night of the Moon) [Lunalis Sancta] – Noctis vigil.", ["Thalassiel,61"] = "Taşrakah (Reverence of the Stone) [Luminaria] – Honors Eos & Tarsica.", ["Opsitheiel,6"] = "Chag Tvuah (Festival of Harvest) [Sylvapolis] – Celebrating Opsithe.", ["Opsitheiel,18"] = "Anagenesis Eirmos (Procession of Rebirth) [Acheron] – Styx transformations.", ["Opsitheiel,28"] = "Panagia Therizis (Holy Day of the Reaper) [Sylvapolis] – Double-festival for Faun/Opsithe.", ["Opsitheiel,37"] = "Anniversary of victory in the Morovian Frontier Campaign [Acheron]", ["Opsitheiel,43"] = "Karnavali Thysias (Carnival of Celebration) [Erythros] – Silenus merriment.", ["Opsitheiel,53"] = "Sefar Yashar (Straight Path Celebration) [Catonis Atrium] – Devotions to Cato." } ---------------------------------------------------------------------------- -- 6) EVENT LOOKUP ---------------------------------------------------------------------------- local eventKey = month .. "," .. dayInMonth local event = events[eventKey] or "No significant events today." ---------------------------------------------------------------------------- -- 7) LOOK UP PROVERB ---------------------------------------------------------------------------- local dailyProverb = zodiacProverbs[zodiac] or "No proverb found." ---------------------------------------------------------------------------- -- 8) RETURN THE RESULT ---------------------------------------------------------------------------- return dayOfYear .. ", " .. month .. " (" .. zodiac .. "), " .. psscYear .. " PSSC – " .. event .. " – Proverb: " .. dailyProverb end return p