// SPDX-License-Identifier: MIT // Copyright (c) 2026 Incoprea // UTC seasonal calendar // Not compiled or tested in-world // Setup: Put in a spare calendar prim. Updates once per minute. Season labels use meteorological month groups, not astronomical equinox calculations. // Stop / restore: Owner-touch stops and restores the original text; touch again restarts. Stop before removing. // Notes: UTC date may differ from your local date. Southern-hemisphere creators should edit or swap the season labels. // License: see LICENSE in this distribution. // Original Incoprea example. MIT. Not compiled or tested in-world. integer active = TRUE; list original; show() { string stamp = llGetTimestamp(); integer month = (integer)llGetSubString(stamp, 5, 6); string season = "Winter"; if (month >= 3 && month <= 5) season = "Spring"; else if (month >= 6 && month <= 8) season = "Summer"; else if (month >= 9 && month <= 11) season = "Autumn"; llSetText(llGetSubString(stamp, 0, 9) + " UTC\n" + season + " (northern seasons)", <0.8, 0.95, 0.8>, 1.0); } default { state_entry() { original = llGetLinkPrimitiveParams(LINK_THIS, [PRIM_TEXT]); show(); llSetTimerEvent(60.0); } timer() { show(); } touch_start(integer count) { if (llDetectedKey(0) != llGetOwner()) return; active = !active; if (active) { show(); llSetTimerEvent(60.0); } else { llSetTimerEvent(0.0); llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_TEXT] + original); } } }