Module:BassaridianCalendar: Difference between revisions

From MicrasWiki
Jump to navigationJump to search
NewZimiaGov (talk | contribs)
No edit summary
NewZimiaGov (talk | contribs)
No edit summary
 
(12 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


     -- Define zodiac proverbs for every single day of the year
     -- DEBUG/LOG: if you'd like to see the dayOfYear for troubleshooting
     local dailyProverbs = {
     -- mw.log("DEBUG: dayOfYear = " .. tostring(dayOfYear))
        -- Atosiel Zodiacs
        "The first light reveals the sacred cycle of renewal.",
        "Every dawn carries the promise of unbroken cycles.",
        "In the stillness of beginnings lies infinite potential.",
        "The seeds of wisdom grow in the soil of patience.",
        "Through renewal, the divine breath takes form.",
        "The light of Atosiel is the key to hidden truths.",
        "Courage blooms in the first rays of the sun.",
        "Shadows of the past are illuminated by renewal.",
        "The cycle begins with trust in the unseen.",
        "Harmony emerges from chaos in every first step.",
        "To know the path, one must honor its origin.",
        "The first spark ignites the endless fire of creation.",


        -- Eosena Zodiacs
    ----------------------------------------------------------------------------
        "The dawn whispers: every step is a rebirth.",
    -- 1) SAFETY CHECK: Ensure dayOfYear is between 1 and 183 (inclusive)
        "Each morning carries echoes of divine awakening.",
    ----------------------------------------------------------------------------
        "With every sunrise, the soul remembers its purpose.",
    if dayOfYear < 1 then
         "The golden hour reflects the harmony of creation.",
         -- Option A: Wrap around by adding daysPerYear until we're back in range
        "Awaken to the wisdom woven in the light.",
         dayOfYear = dayOfYear + daysPerYear
         "Each ray of dawn is a gift of renewal.",
         while dayOfYear < 1 do
        "The heart of the cosmos beats with each sunrise.",
            dayOfYear = dayOfYear + daysPerYear
        "To greet the dawn is to embrace eternity.",
         end
         "The rising sun paints wisdom across the heavens.",
        "Begin anew, for dawn forgives the darkness.",
        "Life renews in the glow of the sacred morning.",
         "At dawn, the path of the divine becomes clear.",


         -- Micrasha Zodiacs
         -- Option B (alternative) could be a modulo approach:
         "Wisdom is the balance of shadow and flame.",
         -- dayOfYear = ((dayOfYear - 1) % daysPerYear) + 1
        "In the fire’s glow, the truth is tempered.",
    elseif dayOfYear > daysPerYear then
        "From the ashes of darkness rises luminous wisdom.",
         -- If for some reason it exceeds 183, wrap around or clamp
         "The duality of flame and shadow reveals the divine.",
         dayOfYear = ((dayOfYear - 1) % daysPerYear) + 1
         "The sacred flame ignites understanding.",
    end
        "Where fire meets shadow, creation flourishes.",
        "To honor fire is to embrace its lessons of change.",
        "The balance of shadow and flame forges strength.",
        "Wisdom flows from the hearth of the cosmos.",
        "Only in balance can the fire truly shine.",
        "The sacred fire consumes all but the eternal truth.",
        "Each spark holds the memory of divine creation.",


        -- Pyreska Zodiacs
    ----------------------------------------------------------------------------
        "Creation ignites in the fires of transformation.",
    -- 2) ZODIAC PROVERBS
        "In the furnace of change, the divine takes shape.",
    ----------------------------------------------------------------------------
        "Flames of creation burn brightest in renewal.",
    local zodiacProverbs = {
        "To transform is to walk with the sacred fire.",
         Atosien  = "The first light reveals the sacred cycle of renewal.",
         "The light of Pyreska forges paths unseen.",
         Eosena    = "The dawn whispers: every step is a rebirth.",
        "Through fire, the cosmos reshapes itself anew.",
         Micrasha  = "Wisdom is the balance of shadow and flame.",
        "Transformation is the essence of sacred creation.",
         Pyreska  = "Creation ignites in the fires of transformation.",
        "Creation arises from the crucible of divine fire.",
         Indomin   = "Two paths intertwine: strength in unity, clarity in duality.",
         "The cosmos kindles infinite sparks of renewal.",
         Chrysen   = "Gold is the soul's test: will you hoard or share?",
        "Every flame is a hymn to the divine.",
         Thalassian= "The tides of Thalassiel teach patience and purpose.",
         "In the dance of flames lies eternal harmony.",
         Nephelia  = "Dreams are stars, fleeting yet eternal in the night sky.",
         "To create is to wield the fires of the infinite.",
         Glinaeus  = "The frost preserves what must endure.",
 
         Noctien  = "Night guides those who seek the unseen truths.",
         -- Indomin Zodiacs
         Opsithia  = "The harvest feeds not just the body, but the spirit.",
        "Two paths intertwine: strength in unity, clarity in duality.",
         Stygian  = "Through the Styx flows the essence of transformation.",
         "Unity is forged where opposites meet in harmony.",
         Faunian  = "The forests sing of life and the balance it brings.",
        "The strength of duality is the wisdom of the cosmos.",
         Silenian  = "Celebration is the nectar of divine abundance.",
        "In the union of opposites, truth finds its home.",
         Catosien  = "Order shapes greatness; the straight path ascends."
        "Two roads lead to one enduring light.",
        "Duality reflects the eternal rhythm of the stars.",
        "Balance is the bridge between strength and clarity.",
        "From duality springs the power to transform worlds.",
        "Unity blooms in the harmony of opposing forces.",
        "Strength is the bond of the cosmos.",
        "The divine whispers in the harmony of the dual.",
        "The straightest path is found between two horizons.",
 
        -- Chrysen Zodiacs
        "Gold is the soul's test: will you hoard or share?",
         "The shimmer of gold reflects the heart's true nature.",
         "In the pursuit of gold, wisdom reveals itself.",
         "The weight of gold is matched only by its burden.",
         "True wealth is found in what you give, not take.",
         "The gleam of gold illuminates paths yet untaken.",
        "Greed blinds, but generosity frees the spirit.",
         "Gold is the mirror of the soul's aspirations.",
         "The wise see gold as a tool, not a master.",
         "Every golden thread weaves the fabric of destiny.",
         "Fortune smiles upon those who honor its gifts.",
        "The brightest gold lies hidden in the heart."
 
        -- Continue for other zodiac sections...
     }
     }


     -- Month and zodiac logic
     ----------------------------------------------------------------------------
    -- 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


     -- Events with corrected day alignment
     ----------------------------------------------------------------------------
     local events = {
    -- 4) SAFETY NET: If somehow dayInMonth is still nil, handle gracefully
        ["Atosiel,6"] = "Bayram al-Nur (Festival of Light) [Vaeringheim]",
    ----------------------------------------------------------------------------
        ["Thalassiel,61"] = "Taşrakah (Reverence of the Stone) [Luminaria]"
    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,1"] = "Cricket Rise Festival [[Alperkin]] – Defining the winter-to-spring shift, this festival commemorates the crickets’ re-emergence from dormancy. Celebrated during the first full moon following their initial nocturnal song, some regions extend festivities until the whip-poor-will’s call.",
    ["Atosiel,6"] = "Bayram al-Nur (Festival of Light) [Vaeringheim] – Honors Atos’s creative power with candlelit processions, tales of divine origins, and symbolic lantern releases at dusk.",
    ["Atosiel,18"] = "Chag Or Hadash (Festival of New Light) [Luminaria] – Dawn prayers, luminous lanterns, and sunrise ceremonies dedicated to the Lady Divine Eos.",
    ["Atosiel,30"] = "Symposion Eirinis (Symposium of Harmony) [Serena] – Gatherings to share Micrasha’s wisdom through poetry, debates, and a communal harmony feast.",
    ["Atosiel,34"] = "Crösakarion [Luminaria] – Street dances and mask parades celebrating Host Star Crösacío, revered as a guiding light for travelers.",
    ["Atosiel,36"] = "Liléigostros [Somniumpolis] – Banquets by starlight to honor Host Star Liléigos, with shared dreams and prophetic storytelling.",
    ["Atosiel,43"] = "Alev Günü (Day of Flame) [Pyralis] – Ritual bonfires, fire-dancer troupes, and chanting of “Ignis Aeternum” in homage to Pyros.",
    ["Atosiel,44"] = "Orebellion [Thermosalem] – Vibrant street markets and fire-breathing displays celebrating Host Star Orebele’s energetic spirit.",
    ["Atosiel,48"] = "Day of Abandonment [Vaeringheim] – Somber vigils and dimly lit marches recalling the exile of mortals by the Old Gods.",
    ["Atosiel,54"] = "Sanashalros [Keybir-Aviv] – Mystical rites at midnight to honor Sanashalo’s zenith, often including rhythmic drums and trance dances.",
    ["Atosiel,55"] = "Tikkun Tzel (Repair of Shadows) [Symphonara] – Healing ceremonies to reconcile Indigo and Momiji’s followers, culminating in a unifying communal supper.",
    ["Atosiel,58"] = "Gahtarion [Vaeringheim] – Illuminated boat parades along canals, celebrating Host Star Gaht and blessing local waters.",
    ["Atosiel,59"] = "Agavronos [Aurelia] – Tree-planting ceremonies for Host Star Agave, where ribbons bearing hopes are tied to young saplings.",
    ["Atosiel,61"] = "Bebekarion [Akróstadium] – Communal meals in honor of Host Star Bebeakaus, each feast opening with a unifying toast.",
    ["Thalassiel,1"] = "Cicada Song Festival [[Alperkin]] – Occurring near the summer solstice, it begins after the season’s first cicada chorus. Alperkin’s most raucous festival, marking annual tribal migrations with drums, dancing, and open-air feasts.",
    ["Thalassiel,2"] = "Amaäzakar [Delphica] – A glowing lantern festival dedicated to Host Star Amaäz, believed to ward off misfortune with floating lights on rivers and ponds.",
    ["Thalassiel,6"] = "Panegyris Chrysou (Golden Gathering) [Aurelia] – A bustling trade fair under Chrysos’s blessing, featuring fortune-telling and gold-themed decorations.",
    ["Thalassiel,10"] = "Dilëtazorium [Sufriya] – Reflective day honoring Host Star Dilëtaz with quiet charity, abstaining from loud festivities.",
    ["Thalassiel,11"] = "Agrypnía Kyrenaïou [Erythros] – a fellowship dedicated to the veneration of Kyrenaïs, a mortal figure celebrated as favored among the gods, called by the Thiasos Kyrenaïou in the event of civil unrest in Erythros.  Characterized by lively, wine-fueled public debates, plays, and competitions meant to foster unity among the city's population",
    ["Thalassiel,16"] = "Amazärum [Acheron] – Torchlit dances and shadow plays dramatizing the renewing power of Host Star Amazä.",
    ["Thalassiel,17"] = "Tävrosion [Thermosalem] – Contemplative meditations for Host Star Tä, often centered on sacred texts and soft chanting.",
    ["Thalassiel,18"] = "Bulhanum [Luminaria] – Ancestral rites for Host Star Bulhanu, where oral histories and offerings strengthen familial bonds.",
    ["Thalassiel,19"] = "Mehtap Dalgası (Moonlit Tide) [Vaeringheim] – Nighttime beach rituals invoking Thalassa’s lunar energy through chanted blessings and tidal sculptures.",
    ["Thalassiel,30"] = "Amáenarion [Vaeringheim] – Storytelling gatherings around bonfires, extolling the legends of Host Stars Amáenu and Pythe.",
    ["Thalassiel,31"] = "Oneiro Foteino (Dream of Illumination) [Somniumpolis] – Nephele’s dream festival, featuring guided dream-interpretation and surreal art displays.",
    ["Thalassiel,39"] = "Anniversary of victory in the New South Jangsong Campaign [Nexa] – Military parades and victory feasts celebrating the nation’s past heroes.",
    ["Thalassiel,44"] = "Erev Galgal (Eve of Cycles) [Nexa] – Glinos cycle rites with rotating chants, circle dances, and patterned floor art symbolizing renewal.",
    ["Thalassiel,45"] = "Bassaridia Festival [Somniumpolis] – A vibrant salute to Alperkin roots, featuring folk dances, drums, and ancestral legend reenactments.",
    ["Thalassiel,46"] = "Osirionos [Diamandis] – A spirited festival venerating Host Star Osiríos, concluding with pyrotechnics amid flower-draped streets.",
    ["Thalassiel,48"] = "Anniversary of victory in the Southern Lake Morovia Campaign [Somniumpolis] – Ceremonial marches, speeches, and wreaths honoring strategic triumphs.",
    ["Thalassiel,50"] = "Amaprion [Serena] – Citywide processions for Host Star Amap, adorned with floral wreaths and uplifting hymns.",
    ["Thalassiel,52"] = "Atämiorium [Catonis Atrium] – Ascension rites glorifying Host Star Atämios’s wisdom, completed by the release of floating lanterns.",
    ["Thalassiel,54"] = "Leilat al-Kamar (Night of the Moon) [Lunalis Sancta] – A moonlit vigil devoted to Noctis, marked by silent gatherings and midnight prayer.",
    ["Thalassiel,56"] = "Dranamorium [Lykopolis] – A contemplative day for Host Star Dranamos, including journaling, spiritual reading, and communal silence.",
    ["Thalassiel,58"] = "Aprobellium [Thermosalem] – Streets aglow with red lanterns honoring Host Star Aprobelle, featuring acrobats and spicy festival drinks.",
    ["Thalassiel,59"] = "Azorion [Pyralis] – A high-energy carnival lauding Host Star Azos’s fiery strength, with costumed parades and a midnight fireworks display.",
    ["Thalassiel,60"] = "Ocanarion [Tel-Amin] – Water-purification ceremonies for Host Star Ocananus, culminating in floating candles on rivers and lakes.",
    ["Thalassiel,61"] = "Taşrakah (Reverence of the Stone) [Luminaria] – Devotions to Eos and Tarsica, including stone-carving rites and anointing with fragrant oils.",
    ["Opsitheiel,1"] = "Cricket Fall Festival [[Alperkin]] – First full moon after crickets’ final song, a dark celebration honoring the dead and the Harpy Goddess of the Whip-Poor-Will. Some rituals involve necromancy, gambling, and taboo feasts as the Noctic-Rabred plant reaches peak toxicity.",
    ["Opsitheiel,6"] = "Chag Tvuah (Festival of Harvest) [Sylvapolis] – Joyous festivities praising Opsithe’s bounty with communal feasts, harvest dances, and bonfire-lit storytelling.",
    ["Opsitheiel,7"] = "Nyarion [Delphica] – Guided meditations and midnight music for Host Star Nyama, with scribes recording personal visions onto communal scrolls.",
    ["Opsitheiel,13"] = "Danassion [Diamandis] – Cemetery-side vigils and modest feasts to honor Host Star Danaß, bridging the living and the departed.",
    ["Opsitheiel,18"] = "Anagenesis Eirmos (Procession of Rebirth) [Acheron] – Dramatic Styx-themed parades symbolizing transformation, crossing bridges to echo mythic underworld journeys.",
    ["Opsitheiel,23"] = "Hazamorium [Sufriya] – Devotees ascend hills to watch the stars under Host Star Hazaméos, interpreting cloud movements as portents of fate.",
    ["Opsitheiel,28"] = "Panagia Therizis (Holy Day of the Reaper) [Sylvapolis] – Dual homage to Faun and Opsithe with seed-scattering and scythe dances that affirm life’s cyclical nature.",
    ["Opsitheiel,30"] = "The Silence [[Alperkin]] – A mid-winter festival coinciding with the solstice, observed through hushed reflections, minimal light, and introspective drumbeats—an austere contrast to the lively Cicada Song Festival.",
    ["Opsitheiel,35"] = "Häparion [[Vaeringheim]] – An art-centric celebration of Host Star Häpi, featuring live sculpting, painting contests, and open-air exhibitions.",
    ["Opsitheiel,37"] = "Anniversary of victory in the Morovian Frontier Campaign [Acheron] – Honored with night marches, wreath-laying, and recitations of epic battle poetry.",
     ["Opsitheiel,43"] = "Karnavali Thysias (Carnival of Celebration) [Erythros] – Wine-fueled revelries paying tribute to Silenus, with vivid satyr-like costumes, flutes, and dance. Karnavali Thysias also celebrates the role of the Host Spirit in Bassaridian society, the introduction of Dionysus to Micras by the Host Spirit, and the establishment of the Stripping Path in the 34th Era PSSC.",
    ["Opsitheiel,53"] = "Sefar Yashar (Straight Path Celebration) [Catonis Atrium] – Pilgrims walk a symbolic Path of Virtue and attend sermons on moral clarity in Cato’s name."
}
 
 


     -- Check for today's event
     ----------------------------------------------------------------------------
    -- 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."
    local dailyProverb = dailyProverbs[dayOfYear]


     -- Return the date, event, and proverb
     ----------------------------------------------------------------------------
     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
 
function p.getCurrentDateNoProverb()
    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
 
    if dayOfYear < 1 then
        dayOfYear = dayOfYear + daysPerYear
        while dayOfYear < 1 do
            dayOfYear = dayOfYear + daysPerYear
        end
    elseif dayOfYear > daysPerYear then
        dayOfYear = ((dayOfYear - 1) % daysPerYear) + 1
    end
 
    local month, dayInMonth, zodiac
 
    if dayOfYear <= 61 then
        month = "Atosiel"
        dayInMonth = dayOfYear
        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
        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
        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
 
    return dayOfYear .. ", " .. month .. " (" .. zodiac .. "), " .. psscYear .. " PSSC"
end
end


return p
return p

Latest revision as of 18:32, 1 June 2026

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,1"] = "Cricket Rise Festival [[Alperkin]] – Defining the winter-to-spring shift, this festival commemorates the crickets’ re-emergence from dormancy. Celebrated during the first full moon following their initial nocturnal song, some regions extend festivities until the whip-poor-will’s call.",
    ["Atosiel,6"] = "Bayram al-Nur (Festival of Light) [Vaeringheim] – Honors Atos’s creative power with candlelit processions, tales of divine origins, and symbolic lantern releases at dusk.",
    ["Atosiel,18"] = "Chag Or Hadash (Festival of New Light) [Luminaria] – Dawn prayers, luminous lanterns, and sunrise ceremonies dedicated to the Lady Divine Eos.",
    ["Atosiel,30"] = "Symposion Eirinis (Symposium of Harmony) [Serena] – Gatherings to share Micrasha’s wisdom through poetry, debates, and a communal harmony feast.",
    ["Atosiel,34"] = "Crösakarion [Luminaria] – Street dances and mask parades celebrating Host Star Crösacío, revered as a guiding light for travelers.",
    ["Atosiel,36"] = "Liléigostros [Somniumpolis] – Banquets by starlight to honor Host Star Liléigos, with shared dreams and prophetic storytelling.",
    ["Atosiel,43"] = "Alev Günü (Day of Flame) [Pyralis] – Ritual bonfires, fire-dancer troupes, and chanting of “Ignis Aeternum” in homage to Pyros.",
    ["Atosiel,44"] = "Orebellion [Thermosalem] – Vibrant street markets and fire-breathing displays celebrating Host Star Orebele’s energetic spirit.",
    ["Atosiel,48"] = "Day of Abandonment [Vaeringheim] – Somber vigils and dimly lit marches recalling the exile of mortals by the Old Gods.",
    ["Atosiel,54"] = "Sanashalros [Keybir-Aviv] – Mystical rites at midnight to honor Sanashalo’s zenith, often including rhythmic drums and trance dances.",
    ["Atosiel,55"] = "Tikkun Tzel (Repair of Shadows) [Symphonara] – Healing ceremonies to reconcile Indigo and Momiji’s followers, culminating in a unifying communal supper.",
    ["Atosiel,58"] = "Gahtarion [Vaeringheim] – Illuminated boat parades along canals, celebrating Host Star Gaht and blessing local waters.",
    ["Atosiel,59"] = "Agavronos [Aurelia] – Tree-planting ceremonies for Host Star Agave, where ribbons bearing hopes are tied to young saplings.",
    ["Atosiel,61"] = "Bebekarion [Akróstadium] – Communal meals in honor of Host Star Bebeakaus, each feast opening with a unifying toast.",
    ["Thalassiel,1"] = "Cicada Song Festival [[Alperkin]] – Occurring near the summer solstice, it begins after the season’s first cicada chorus. Alperkin’s most raucous festival, marking annual tribal migrations with drums, dancing, and open-air feasts.",
    ["Thalassiel,2"] = "Amaäzakar [Delphica] – A glowing lantern festival dedicated to Host Star Amaäz, believed to ward off misfortune with floating lights on rivers and ponds.",
    ["Thalassiel,6"] = "Panegyris Chrysou (Golden Gathering) [Aurelia] – A bustling trade fair under Chrysos’s blessing, featuring fortune-telling and gold-themed decorations.",
    ["Thalassiel,10"] = "Dilëtazorium [Sufriya] – Reflective day honoring Host Star Dilëtaz with quiet charity, abstaining from loud festivities.",
    ["Thalassiel,11"] = "Agrypnía Kyrenaïou [Erythros] – a fellowship dedicated to the veneration of Kyrenaïs, a mortal figure celebrated as favored among the gods, called by the Thiasos Kyrenaïou in the event of civil unrest in Erythros.  Characterized by lively, wine-fueled public debates, plays, and competitions meant to foster unity among the city's population",
    ["Thalassiel,16"] = "Amazärum [Acheron] – Torchlit dances and shadow plays dramatizing the renewing power of Host Star Amazä.",
    ["Thalassiel,17"] = "Tävrosion [Thermosalem] – Contemplative meditations for Host Star Tä, often centered on sacred texts and soft chanting.",
    ["Thalassiel,18"] = "Bulhanum [Luminaria] – Ancestral rites for Host Star Bulhanu, where oral histories and offerings strengthen familial bonds.",
    ["Thalassiel,19"] = "Mehtap Dalgası (Moonlit Tide) [Vaeringheim] – Nighttime beach rituals invoking Thalassa’s lunar energy through chanted blessings and tidal sculptures.",
    ["Thalassiel,30"] = "Amáenarion [Vaeringheim] – Storytelling gatherings around bonfires, extolling the legends of Host Stars Amáenu and Pythe.",
    ["Thalassiel,31"] = "Oneiro Foteino (Dream of Illumination) [Somniumpolis] – Nephele’s dream festival, featuring guided dream-interpretation and surreal art displays.",
    ["Thalassiel,39"] = "Anniversary of victory in the New South Jangsong Campaign [Nexa] – Military parades and victory feasts celebrating the nation’s past heroes.",
    ["Thalassiel,44"] = "Erev Galgal (Eve of Cycles) [Nexa] – Glinos cycle rites with rotating chants, circle dances, and patterned floor art symbolizing renewal.",
    ["Thalassiel,45"] = "Bassaridia Festival [Somniumpolis] – A vibrant salute to Alperkin roots, featuring folk dances, drums, and ancestral legend reenactments.",
    ["Thalassiel,46"] = "Osirionos [Diamandis] – A spirited festival venerating Host Star Osiríos, concluding with pyrotechnics amid flower-draped streets.",
    ["Thalassiel,48"] = "Anniversary of victory in the Southern Lake Morovia Campaign [Somniumpolis] – Ceremonial marches, speeches, and wreaths honoring strategic triumphs.",
    ["Thalassiel,50"] = "Amaprion [Serena] – Citywide processions for Host Star Amap, adorned with floral wreaths and uplifting hymns.",
    ["Thalassiel,52"] = "Atämiorium [Catonis Atrium] – Ascension rites glorifying Host Star Atämios’s wisdom, completed by the release of floating lanterns.",
    ["Thalassiel,54"] = "Leilat al-Kamar (Night of the Moon) [Lunalis Sancta] – A moonlit vigil devoted to Noctis, marked by silent gatherings and midnight prayer.",
    ["Thalassiel,56"] = "Dranamorium [Lykopolis] – A contemplative day for Host Star Dranamos, including journaling, spiritual reading, and communal silence.",
    ["Thalassiel,58"] = "Aprobellium [Thermosalem] – Streets aglow with red lanterns honoring Host Star Aprobelle, featuring acrobats and spicy festival drinks.",
    ["Thalassiel,59"] = "Azorion [Pyralis] – A high-energy carnival lauding Host Star Azos’s fiery strength, with costumed parades and a midnight fireworks display.",
    ["Thalassiel,60"] = "Ocanarion [Tel-Amin] – Water-purification ceremonies for Host Star Ocananus, culminating in floating candles on rivers and lakes.",
    ["Thalassiel,61"] = "Taşrakah (Reverence of the Stone) [Luminaria] – Devotions to Eos and Tarsica, including stone-carving rites and anointing with fragrant oils.",
    ["Opsitheiel,1"] = "Cricket Fall Festival [[Alperkin]] – First full moon after crickets’ final song, a dark celebration honoring the dead and the Harpy Goddess of the Whip-Poor-Will. Some rituals involve necromancy, gambling, and taboo feasts as the Noctic-Rabred plant reaches peak toxicity.",
    ["Opsitheiel,6"] = "Chag Tvuah (Festival of Harvest) [Sylvapolis] – Joyous festivities praising Opsithe’s bounty with communal feasts, harvest dances, and bonfire-lit storytelling.",
    ["Opsitheiel,7"] = "Nyarion [Delphica] – Guided meditations and midnight music for Host Star Nyama, with scribes recording personal visions onto communal scrolls.",
    ["Opsitheiel,13"] = "Danassion [Diamandis] – Cemetery-side vigils and modest feasts to honor Host Star Danaß, bridging the living and the departed.",
    ["Opsitheiel,18"] = "Anagenesis Eirmos (Procession of Rebirth) [Acheron] – Dramatic Styx-themed parades symbolizing transformation, crossing bridges to echo mythic underworld journeys.",
    ["Opsitheiel,23"] = "Hazamorium [Sufriya] – Devotees ascend hills to watch the stars under Host Star Hazaméos, interpreting cloud movements as portents of fate.",
    ["Opsitheiel,28"] = "Panagia Therizis (Holy Day of the Reaper) [Sylvapolis] – Dual homage to Faun and Opsithe with seed-scattering and scythe dances that affirm life’s cyclical nature.",
    ["Opsitheiel,30"] = "The Silence [[Alperkin]] – A mid-winter festival coinciding with the solstice, observed through hushed reflections, minimal light, and introspective drumbeats—an austere contrast to the lively Cicada Song Festival.",
    ["Opsitheiel,35"] = "Häparion [[Vaeringheim]] – An art-centric celebration of Host Star Häpi, featuring live sculpting, painting contests, and open-air exhibitions.",
    ["Opsitheiel,37"] = "Anniversary of victory in the Morovian Frontier Campaign [Acheron] – Honored with night marches, wreath-laying, and recitations of epic battle poetry.",
    ["Opsitheiel,43"] = "Karnavali Thysias (Carnival of Celebration) [Erythros] – Wine-fueled revelries paying tribute to Silenus, with vivid satyr-like costumes, flutes, and dance. Karnavali Thysias also celebrates the role of the Host Spirit in Bassaridian society, the introduction of Dionysus to Micras by the Host Spirit, and the establishment of the Stripping Path in the 34th Era PSSC.",
    ["Opsitheiel,53"] = "Sefar Yashar (Straight Path Celebration) [Catonis Atrium] – Pilgrims walk a symbolic Path of Virtue and attend sermons on moral clarity in Cato’s name."
}



    ----------------------------------------------------------------------------
    -- 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

function p.getCurrentDateNoProverb()
    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

    if dayOfYear < 1 then
        dayOfYear = dayOfYear + daysPerYear
        while dayOfYear < 1 do
            dayOfYear = dayOfYear + daysPerYear
        end
    elseif dayOfYear > daysPerYear then
        dayOfYear = ((dayOfYear - 1) % daysPerYear) + 1
    end

    local month, dayInMonth, zodiac

    if dayOfYear <= 61 then
        month = "Atosiel"
        dayInMonth = dayOfYear
        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
        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
        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

    return dayOfYear .. ", " .. month .. " (" .. zodiac .. "), " .. psscYear .. " PSSC"
end

return p