diff --git a/code/__HELPERS/_time.dm b/code/__HELPERS/_time.dm index 5ed4fbcb7d84..5cc33fa397ce 100644 --- a/code/__HELPERS/_time.dm +++ b/code/__HELPERS/_time.dm @@ -111,3 +111,140 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) if(hour) hourT = " and [hour] hour[(hour != 1)? "s":""]" return "[day] day[(day != 1)? "s":""][hourT][minuteT][secondT]" + +/* + +Days of the week to make it easier to reference them. + +When using time2text(), please use "DDD" to find the weekday. Refrain from using "Day" + +*/ +#define MONDAY "Mon" +#define TUESDAY "Tue" +#define WEDNESDAY "Wed" +#define THURSDAY "Thu" +#define FRIDAY "Fri" +#define SATURDAY "Sat" +#define SUNDAY "Sun" + +//Months + +#define JANUARY 1 +#define FEBRUARY 2 +#define MARCH 3 +#define APRIL 4 +#define MAY 5 +#define JUNE 6 +#define JULY 7 +#define AUGUST 8 +#define SEPTEMBER 9 +#define OCTOBER 10 +#define NOVEMBER 11 +#define DECEMBER 12 + +//Select holiday names -- If you test for a holiday in the code, make the holiday's name a define and test for that instead +#define NEW_YEAR "New Year" +#define VALENTINES "Valentine's Day" +#define APRIL_FOOLS "April Fool's Day" +#define ST_PATRICK "Saint Patrick's Day" + +#define EASTER "Easter" +#define HALLOWEEN "Halloween" +#define CHRISTMAS "Christmas" +#define FESTIVE_SEASON "Festive Season" +#define HOTDOG_DAY "National Hot Dog Day" + +/*Timezones*/ + +/// Line Islands Time +#define TIMEZONE_LINT 14 + +// Chatham Daylight Time +#define TIMEZONE_CHADT 13.75 + +/// Tokelau Time +#define TIMEZONE_TKT 13 + +/// Tonga Time +#define TIMEZONE_TOT 13 + +/// New Zealand Daylight Time +#define TIMEZONE_NZDT 13 + +/// New Zealand Standard Time +#define TIMEZONE_NZST 12 + +/// Norfolk Time +#define TIMEZONE_NFT 11 + +/// Lord Howe Standard Time +#define TIMEZONE_LHST 10.5 + +/// Australian Eastern Standard Time +#define TIMEZONE_AEST 10 + +/// Australian Central Standard Time +#define TIMEZONE_ACST 9.5 + +/// Australian Central Western Standard Time +#define TIMEZONE_ACWST 8.75 + +/// Australian Western Standard Time +#define TIMEZONE_AWST 8 + +/// Christmas Island Time +#define TIMEZONE_CXT 7 + +/// Cocos Islands Time +#define TIMEZONE_CCT 6.5 + +/// Central European Summer Time +#define TIMEZONE_CEST 2 + +/// Coordinated Universal Time +#define TIMEZONE_UTC 0 + +/// Eastern Daylight Time +#define TIMEZONE_EDT -4 + +/// Eastern Standard Time +#define TIMEZONE_EST -5 + +/// Central Daylight Time +#define TIMEZONE_CDT -5 + +/// Central Standard Time +#define TIMEZONE_CST -6 + +/// Mountain Daylight Time +#define TIMEZONE_MDT -6 + +/// Mountain Standard Time +#define TIMEZONE_MST -7 + +/// Pacific Daylight Time +#define TIMEZONE_PDT -7 + +/// Pacific Standard Time +#define TIMEZONE_PST -8 + +/// Alaska Daylight Time +#define TIMEZONE_AKDT -8 + +/// Alaska Standard Time +#define TIMEZONE_AKST -9 + +/// Hawaii-Aleutian Daylight Time +#define TIMEZONE_HDT -9 + +/// Hawaii Standard Time +#define TIMEZONE_HST -10 + +/// Cook Island Time +#define TIMEZONE_CKT -10 + +/// Niue Time +#define TIMEZONE_NUT -11 + +/// Anywhere on Earth +#define TIMEZONE_ANYWHERE_ON_EARTH -12 diff --git a/code/__HELPERS/dates.dm b/code/__HELPERS/dates.dm new file mode 100644 index 000000000000..c2cfe617a0b2 --- /dev/null +++ b/code/__HELPERS/dates.dm @@ -0,0 +1,41 @@ +//Adapted from a free algorithm written in BASIC (https://www.assa.org.au/edm#Computer) +/proc/EasterDate(y) + var/FirstDig, Remain19, temp //Intermediate Results + var/tA, tB, tC, tD, tE //Table A-E results + var/d, m //Day and Month returned + + FirstDig = round((y / 100)) + Remain19 = y % 19 + + temp = (round((FirstDig - 15) / 2)) + 202 - 11 * Remain19 + + switch(FirstDig) + if(21,24,25,27,28,29,30,31,32,34,35,38) + temp -= 1 + if(33,36,37,39,40) + temp -= 2 + temp %= 30 + + tA = temp + 21 + if(temp == 29) + tA -= 1 + if(temp == 28 && (Remain19 > 10)) + tA -= 1 + tB = (tA - 19) % 7 + + tC = (40 - FirstDig) % 4 + if(tC == 3) + tC += 1 + if(tC > 1) + tC += 1 + temp = y % 100 + tD = (temp + round((temp / 4))) % 7 + + tE = ((20 - tB - tC - tD) % 7) + 1 + d = tA + tE + if(d > 31) + d -= 31 + m = 4 + else + m = 3 + return list("day" = d, "month" = m) diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index db1b07475489..d7215afd08ce 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -24,6 +24,8 @@ SUBSYSTEM_DEF(events) if(!E.typepath) continue //don't want this one! leave it for the garbage collector control += E //add it to the list of all events (controls) + if(isnull(GLOB.holidays)) + fill_holidays() reschedule() return SS_INIT_SUCCESS @@ -128,3 +130,41 @@ SUBSYSTEM_DEF(events) SSevents.can_fire = !SSevents.can_fire message_admins("[usr.client] has toggled the events subsystem [SSevents.can_fire == 1 ? "on" : "off"]") log_admin("[usr.client] has toggled the events subsystem [SSevents.can_fire == 1 ? "on" : "off"]") + +GLOBAL_LIST(holidays) + +/** + * Checks that the passed holiday is located in the global holidays list. + * + * Returns a holiday datum, or null if it's not that holiday. + */ +/proc/check_holidays(holiday_to_find) + if(isnull(GLOB.holidays) && !fill_holidays()) + return // Failed to generate holidays, for some reason + + return GLOB.holidays[holiday_to_find] + +/** + * Fills the holidays list if applicable, or leaves it an empty list. + */ +/proc/fill_holidays() + GLOB.holidays = list() + for(var/holiday_type in subtypesof(/datum/holiday)) + var/datum/holiday/holiday = new holiday_type() + var/delete_holiday = TRUE + for(var/timezone in holiday.timezones) + var/time_in_timezone = world.realtime + timezone HOURS + + var/YYYY = text2num(time2text(time_in_timezone, "YYYY")) // get the current year + var/MM = text2num(time2text(time_in_timezone, "MM")) // get the current month + var/DD = text2num(time2text(time_in_timezone, "DD")) // get the current day + var/DDD = time2text(time_in_timezone, "DDD") // get the current weekday + + if(holiday.shouldCelebrate(DD, MM, YYYY, DDD)) + GLOB.holidays[holiday.name] = holiday + delete_holiday = FALSE + break + if(delete_holiday) + qdel(holiday) + + return TRUE diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index a69ad56ac95f..49a917ac4773 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -664,3 +664,46 @@ desc = "An unbelievably creepy cat clock that surveys the room with every tick and every tock." icon = 'icons/obj/structures/props/catclock.dmi' icon_state = "cat_clock_motion" + +//===================// +// Calendar // +//=================// + +/obj/structure/sign/calendar + name = "wall calendar" + desc = "Classic office decoration and a place to stare at maniacally." + icon_state = "calendar_civ" + var/calendar_faction + +/obj/structure/sign/calendar/get_examine_text(mob/user) + . = ..() + . += SPAN_INFO("The current date is: [time2text(world.realtime, "DDD, MMM DD")], [GLOB.game_year].") + if(length(GLOB.holidays)) + . += SPAN_INFO("Events:") + for(var/holidayname in GLOB.holidays) + var/datum/holiday/holiday = GLOB.holidays[holidayname] + if(holiday.holiday_faction) + if(holiday.holiday_faction != calendar_faction) + continue + . += SPAN_INFO("[holiday.name]") + . += SPAN_BOLDNOTICE("[holiday.greet_text]") + +/obj/structure/sign/calendar/upp + icon_state = "calendar_upp" + desc = "Classic office decoration and a place to stare at maniacally, has a UPP logo on it, also all text is in Russian." + calendar_faction = FACTION_UPP + +/obj/structure/sign/calendar/wy + icon_state = "calendar_wy" + desc = "Classic office decoration and a place to stare at maniacally, produced by Weyland-Yutani." + calendar_faction = FACTION_WY + +/obj/structure/sign/calendar/twe + icon_state = "calendar_twe" + desc = "Classic office decoration and a place to stare at maniacally, has a pattern resembling a Union Jack on it." + calendar_faction = FACTION_TWE + +/obj/structure/sign/calendar/ua + icon_state = "calendar_ua" + desc = "Classic office decoration and a place to stare at maniacally, has a vertically placed UA flag and some army symbolics." + calendar_faction = FACTION_MARINE diff --git a/code/modules/holidays/holidays.dm b/code/modules/holidays/holidays.dm new file mode 100644 index 000000000000..6150e1f54507 --- /dev/null +++ b/code/modules/holidays/holidays.dm @@ -0,0 +1,427 @@ +/datum/holiday + ///Name of the holiday itself. Visible to players. + var/name = "If you see this the holiday calendar code is broken" + + ///What day of begin_month does the holiday begin on? + var/begin_day = 1 + ///What month does the holiday begin on? + var/begin_month = 0 + /// What day of end_month does the holiday end? Default of 0 means the holiday lasts a single. + var/end_day = 0 + /// What month does the holiday end on? + var/end_month = 0 + /// for christmas neverending, or testing. Forces a holiday to be celebrated. + var/always_celebrate = FALSE + /// Held variable to better calculate when certain holidays may fall on, like easter. + var/current_year = 0 + /// How many years are you offsetting your calculations for begin_day and end_day on. Used for holidays like easter. + var/year_offset = 0 + ///Timezones this holiday is celebrated in (defaults to three timezones spanning a 50 hour window covering all timezones) + var/list/timezones = list(TIMEZONE_LINT, TIMEZONE_UTC, TIMEZONE_ANYWHERE_ON_EARTH) + ///Custom text of greet message + var/greet_text + ///Faction specific holidays + var/holiday_faction + +// When the round starts, this proc is ran to get a text message to display to everyone to wish them a happy holiday +/datum/holiday/proc/greet() + if(!greet_text) + return "Have a happy [name]!" + else + return greet_text + +// Return 1 if this holidy should be celebrated today +/datum/holiday/proc/shouldCelebrate(dd, mm, yyyy, ddd) + if(always_celebrate) + return TRUE + + if(!end_day) + end_day = begin_day + if(!end_month) + end_month = begin_month + if(end_month > begin_month) //holiday spans multiple months in one year + if(mm == end_month) //in final month + if(dd <= end_day) + return TRUE + + else if(mm == begin_month)//in first month + if(dd >= begin_day) + return TRUE + + else if(mm in begin_month to end_month) //holiday spans 3+ months and we're in the middle, day doesn't matter at all + return TRUE + + else if(end_month == begin_month) // starts and stops in same month, simplest case + if(mm == begin_month && (dd in begin_day to end_day)) + return TRUE + + else // starts in one year, ends in the next + if(mm >= begin_month && dd >= begin_day) // Holiday ends next year + return TRUE + if(mm <= end_month && dd <= end_day) // Holiday started last year + return TRUE + + return FALSE + + +// The actual holidays + +// JANUARY + +/datum/holiday/eastern_xmas + name = "Orthodox Christmas" + begin_day = 5 + begin_month = JANUARY + greet_text = "Have a merry Christmas!" + end_day = 9 + holiday_faction = FACTION_UPP + +/datum/holiday/pharma + name = "Pharmacist Day" + begin_day = 12 + begin_month = JANUARY + holiday_faction = FACTION_WY + greet_text = "Celebrate a medicine producer who saves lives with their work!" + +/datum/holiday/cleandesk + name = "Clean Your Desk Day" + begin_day = 13 + begin_month = JANUARY + holiday_faction = FACTION_WY + greet_text = "On this day, we must remember the importance of a clean working environment!" + +/datum/holiday/australia + name = "Australia Day" + begin_day = 26 + begin_month = JANUARY + holiday_faction = FACTION_TWE + greet_text = "On this day, in the year of 1788, the First Fleet of the Royal Navy landed on the Australian soil and planted the Union flag, thus marking the establishment of Australian colony." + +// FEBRUARY + +/datum/holiday/legal + name = "Employee Legal Awareness Day" + begin_day = 16 + begin_month = FEBRUARY + holiday_faction = FACTION_WY + greet_text = "On this day, we must remember the importance of clear labor laws and transparent bureaucracy!" + +/datum/holiday/innovation + name = "Innovation Day" + begin_day = 16 + begin_month = FEBRUARY + holiday_faction = FACTION_WY + greet_text = "On this day, we celebrate the importance of numerous innovations that we've made and will make in the future!" + +/datum/holiday/japan + name = "National Science Day" + begin_day = 28 + begin_month = FEBRUARY + holiday_faction = FACTION_WY + greet_text = "Celebrated in Japanese parts of the TWE, marking the day of foundation of Japanese nation." + +/datum/holiday/valentines + name = VALENTINES + begin_day = 13 + end_day = 15 + begin_month = FEBRUARY + +/datum/holiday/armyday + name = "Defender of the Fatherland Day" + begin_day = 23 + greet_text = "Was originally the day celebrating Soviet Army in USSR, but later morphed into more generalized Men's Day in Russia, and later all across UPP." + begin_month = FEBRUARY + holiday_faction = FACTION_UPP + +// MARCH + +/datum/holiday/employee + name = "Employee Appreciation Day" + begin_day = 7 + begin_month = MARCH + greet_text = "On this day, we must remember to respect and value our dear employees and workers!" + holiday_faction = FACTION_WY + +/datum/holiday/commonwealthday + name = "Day of the Empire" + begin_day = 10 + begin_month = MARCH + greet_text = "Was originally celebrated as the Commonwealth Day, but was later reformed after foundation of the Three World Empire" + holiday_faction = FACTION_TWE + +/datum/holiday/holi + name = "Holi" + begin_day = 14 + begin_month = MARCH + greet_text = "Holiday celebrated in Hindu parts of the TWE. Holi also known as Festival of Colours, the holiday celebrates the eternal and divine love of the deities Radha and Krishna." + holiday_faction = FACTION_TWE + +/datum/holiday/no_this_is_patrick + name = "St. Patrick's Day" + begin_day = 17 + begin_month = MARCH + +// APRIL + +/datum/holiday/april_fools + name = APRIL_FOOLS + begin_month = APRIL + begin_day = 1 + end_day = 2 + + +/datum/holiday/spess + name = "Cosmonautics Day" + begin_day = 12 + begin_month = APRIL + greet_text = "On this day over 600 years ago, Comrade Yuri Gagarin first ventured into space!" + +//Information itself is from the combat manual but the date was never stated, i chose the date of when the first CM server was established - 2013, Jun 29 +/datum/holiday/uscm_day + name = "Day of the Colonial Marines" + begin_day = 20 + begin_month = APRIL + greet_text = "On this day in the year of 2101 the National Security Act was signed, and the United States Colonial Marine Corps were established." + holiday_faction = FACTION_MARINE + +/datum/holiday/tea + name = "National Tea Day" + begin_day = 21 + begin_month = APRIL + holiday_faction = FACTION_TWE + +/datum/holiday/earth + name = "Earth Day" + begin_day = 22 + begin_month = APRIL + +/datum/holiday/anzac + name = "Anzac Day" + begin_day = 25 + begin_month = APRIL + begin_month = "TWE holiday celebrated by people from british part of Oceania. Holiday is dedicated to remembrance of the Anzacs at Gallipoli" + holiday_faction = FACTION_TWE + +/datum/holiday/showa + name = "Showa Day" + begin_day = 29 + begin_month = APRIL + greet_text = "Public holiday in the ethnically Japanese parts of the TWE, honoring the birthday of emperor Hirohito, and historical period associated with him." + holiday_faction = FACTION_TWE + +// MAY + +/datum/holiday/labor + name = "Labor Day" + begin_day = 1 + begin_month = MAY + +/datum/holiday/firefighter + name = "Firefighter's Day" + begin_day = 4 + begin_month = MAY + +// JUNE + +/datum/holiday/summersolstice + name = "Summer Solstice" + begin_day = 21 + begin_month = JUNE + +// JULY + +/datum/holiday/doctor + name = "Doctor's Day" + begin_day = 1 + begin_month = JULY + +/datum/holiday/ufo + name = "UFO Day" + begin_day = 2 + begin_month = JULY + +/datum/holiday/usa + name = "US Independence Day" + timezones = list(TIMEZONE_EDT, TIMEZONE_CDT, TIMEZONE_MDT, TIMEZONE_MST, TIMEZONE_PDT, TIMEZONE_AKDT, TIMEZONE_HDT, TIMEZONE_HST) + begin_day = 4 + begin_month = JULY + greet_text = "On this day in the year of 1776, the USA declared independance from the Great Britain, the holiday is celebrated across UA." + holiday_faction = FACTION_MARINE + +/datum/holiday/writer + name = "Writer's Day" + begin_day = 8 + begin_month = JULY + +/datum/holiday/hotdogday + name = HOTDOG_DAY + begin_day = 17 + begin_month = JULY + greet_text = "Happy National Hot Dog Day!" + +/datum/holiday/friendship + name = "Friendship Day" + begin_day = 30 + begin_month = JULY + +/datum/holiday/friendship/greet() + return "Have a magical [name]!" + +// AUGUST + +/datum/holiday/vdvday + name = "Paratrooper's Day" + begin_day = 2 + begin_month = AUGUST + greet_text = "Originally celebrating USSR and post Soviet VDV forces, this holiday celebrates UPP KVD paratroopers in their heroic and hazardous job." + holiday_faction = FACTION_UPP + + +/datum/holiday/monarchday + name = "Empress Birthday" + begin_day = 7 + begin_month = AUGUST + greet_text = "Today is 39th birthday of the Three World Empire monarch, her majesty empress Fiona II Kōshitsu-Windsor." + holiday_faction = FACTION_TWE + +// SEPTEMBER + +/datum/holiday/equinox + name = "Autumnal Equinox Day" + begin_day = 23 + begin_month = SEPTEMBER + greet_text = "TWE holiday associated with Shinto, on this day people reconnect with their families and ancestors." + holiday_faction = FACTION_TWE + +// OCTOBER + +/datum/holiday/animal + name = "Animal's Day" + begin_day = 4 + begin_month = OCTOBER + +/datum/holiday/smile + name = "Smiling Day" + begin_day = 7 + begin_month = OCTOBER + +/datum/holiday/halloween + name = HALLOWEEN + begin_day = 29 + begin_month = OCTOBER + end_day = 2 + end_month = NOVEMBER + greet_text = "Have a spooky Halloween!" + +// NOVEMBER + +/datum/holiday/jculture + name = "Culture Day" + begin_day = 3 + begin_month = NOVEMBER + greet_text = "TWE holiday founded in Japan, the day dedicated to promoting arts, culture and other forms of artistic expression." + holiday_faction = FACTION_TWE + +/datum/holiday/remembrance_day + name = "Remembrance Day" + begin_month = NOVEMBER + begin_day = 11 + greet_text = "Lest we forget." + +/datum/holiday/lifeday + name = "Life Day" + begin_day = 17 + begin_month = NOVEMBER + +// DECEMBER + +/datum/holiday/festive_season + name = FESTIVE_SEASON + begin_day = 1 + begin_month = DECEMBER + end_day = 31 + +/datum/holiday/festive_season/greet() + return "Have a nice festive season!" + +/datum/holiday/human_rights + name = "Human-Rights Day" + begin_day = 10 + begin_month = DECEMBER + +/datum/holiday/doomsday + name = "Mayan Doomsday Anniversary" + begin_day = 21 + begin_month = DECEMBER + +/datum/holiday/xmas + name = CHRISTMAS + begin_day = 23 + begin_month = DECEMBER + end_day = 27 + +/datum/holiday/xmas/greet() + return "Have a merry Christmas!" + +/datum/holiday/boxing + name = "Boxing Day" + begin_day = 26 + begin_month = DECEMBER + +/datum/holiday/new_year + name = NEW_YEAR + begin_day = 31 + begin_month = DECEMBER + end_day = 2 + end_month = JANUARY + +/datum/holiday/new_year/greet() + return "Have a happy New Year!" + +// MOVING DATES + +/datum/holiday/friday_thirteenth + name = "Friday the 13th" + +/datum/holiday/friday_thirteenth/shouldCelebrate(dd, mm, yyyy, ddd) + if(dd == 13 && ddd == FRIDAY) + return TRUE + return FALSE + + +// EASTER (this having it's own spot should be understandable) + +/datum/holiday/easter + name = EASTER + var/const/days_early = 1 //to make editing the holiday easier + var/const/days_extra = 1 + +/datum/holiday/easter/shouldCelebrate(dd, mm, yyyy, ddd) + if(!begin_month) + current_year = text2num(time2text(world.timeofday, "YYYY")) + var/list/easterResults = EasterDate(current_year+year_offset) + + begin_day = easterResults["day"] + begin_month = easterResults["month"] + + end_day = begin_day + days_extra + end_month = begin_month + if(end_day >= 32 && end_month == MARCH) //begins in march, ends in april + end_day -= 31 + end_month++ + if(end_day >= 31 && end_month == APRIL) //begins in april, ends in june + end_day -= 30 + end_month++ + + begin_day -= days_early + if(begin_day <= 0) + if(begin_month == APRIL) + begin_day += 31 + begin_month-- //begins in march, ends in april + + return ..() + +/datum/holiday/easter/greet() + return "Greetings! Have a Happy Easter and keep an eye out for Easter Bunnies!" + + diff --git a/colonialmarines.dme b/colonialmarines.dme index 48996a93ec30..e2cc33a44792 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -167,6 +167,7 @@ #include "code\__HELPERS\animations.dm" #include "code\__HELPERS\chat.dm" #include "code\__HELPERS\cmp.dm" +#include "code\__HELPERS\dates.dm" #include "code\__HELPERS\datums.dm" #include "code\__HELPERS\files.dm" #include "code\__HELPERS\filters.dm" @@ -1805,6 +1806,7 @@ #include "code\modules\gear_presets\survivors\sorokyne_strata\preset_sorokyne_strata.dm" #include "code\modules\gear_presets\survivors\trijent\crashlanding_upp_bar_insert_trijent.dm" #include "code\modules\gear_presets\survivors\trijent\preset_trijent.dm" +#include "code\modules\holidays\holidays.dm" #include "code\modules\holidays\halloween\decorators.dm" #include "code\modules\holidays\halloween\pumpkins\patches.dm" #include "code\modules\holidays\halloween\pumpkins\wearable.dm" diff --git a/icons/obj/structures/props/decals.dmi b/icons/obj/structures/props/decals.dmi index 5b641ceaba89..a50207da3cc2 100644 Binary files a/icons/obj/structures/props/decals.dmi and b/icons/obj/structures/props/decals.dmi differ diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index 5142f571a4a9..255252358897 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -519,6 +519,10 @@ "acl" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/medium, +/obj/structure/sign/calendar/ua{ + pixel_y = 30; + pixel_x = -4 + }, /turf/open/floor/wood, /area/bigredv2/outside/marshal_office) "acm" = ( @@ -2342,6 +2346,9 @@ /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, /obj/effect/landmark/objective_landmark/medium, +/obj/structure/sign/calendar/wy{ + pixel_y = 29 + }, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "ajn" = ( @@ -12243,6 +12250,9 @@ dir = 8 }, /obj/structure/surface/table, +/obj/structure/sign/calendar/wy{ + pixel_y = 30 + }, /turf/open/floor/darkblue2/northeast, /area/bigredv2/outside/admin_building) "aVY" = ( @@ -18175,6 +18185,9 @@ "bzG" = ( /obj/structure/surface/table, /obj/item/storage/fancy/vials/random, +/obj/structure/sign/calendar{ + pixel_y = 29 + }, /turf/open/floor/darkblue2/north, /area/bigredv2/caves/eta/research) "bzH" = ( @@ -20443,6 +20456,12 @@ /obj/item/clothing/head/helmet/marine/veteran/ua_riot, /turf/open/floor/plating/platingdmg3/west, /area/bigredv2/caves/mining) +"dCh" = ( +/obj/structure/sign/calendar/wy{ + pixel_y = 29 + }, +/turf/open/floor/carpet, +/area/bigredv2/outside/admin_building) "dCA" = ( /obj/effect/decal/cleanable/dirt, /obj/item/weapon/twohanded/folded_metal_chair, @@ -20926,6 +20945,15 @@ /obj/structure/window, /turf/open/floor/wood, /area/bigredv2/outside/library) +"etV" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/structure/sign/calendar{ + pixel_y = 29 + }, +/turf/open/floor/grimy, +/area/bigredv2/outside/office_complex) "eup" = ( /obj/structure/bed/chair, /obj/item/trash/cigbutt, @@ -21310,6 +21338,9 @@ /obj/structure/bed/chair/comfy/blue{ dir = 8 }, +/obj/structure/sign/calendar/wy{ + pixel_y = 29 + }, /turf/open/floor/carpet15_15/west, /area/bigredv2/outside/admin_building) "fhI" = ( @@ -24640,6 +24671,13 @@ /obj/structure/largecrate/random/case, /turf/open/floor/plating/platingdmg3/west, /area/bigredv2/caves/mining) +"lMl" = ( +/obj/structure/sign/calendar/wy{ + pixel_y = 28; + pixel_x = 9 + }, +/turf/open/floor/carpet, +/area/bigredv2/caves/lambda/breakroom) "lMw" = ( /obj/structure/machinery/sensortower{ pixel_x = -9 @@ -28152,6 +28190,15 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating/platingdmg3/west, /area/bigredv2/caves/mining) +"soN" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/sign/calendar{ + pixel_y = 29 + }, +/turf/open/floor/dark, +/area/bigredv2/caves/eta/storage) "sqc" = ( /obj/effect/decal/cleanable/blood{ base_icon = 'icons/obj/items/weapons/grenade.dmi'; @@ -48627,7 +48674,7 @@ aXg aOM aUb aof -aZC +dCh aZU aZC aZU @@ -53477,7 +53524,7 @@ aBy bzp bzA aBE -byM +soN ycP rTq aBE @@ -58621,7 +58668,7 @@ aZF beL bfo asv -bgh +etV bgu bgh bgf @@ -70068,7 +70115,7 @@ anS apv adZ adZ -auY +lMl asr aqc amX diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index 9f3e2719353a..e96785a404d3 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -2998,6 +2998,9 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/sign/calendar/wy{ + pixel_y = 29 + }, /turf/open/floor/kutjevo/colors/purple/inner_corner, /area/kutjevo/interior/construction) "eiX" = ( @@ -5026,6 +5029,9 @@ pixel_x = 4; pixel_y = 8 }, +/obj/structure/sign/calendar/wy{ + pixel_y = 29 + }, /turf/open/floor/kutjevo/tan/alt_inner_edge, /area/kutjevo/interior/complex/Northwest_Flight_Control) "hbY" = ( diff --git a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm index c2622e78ba80..f0123634825f 100644 --- a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm +++ b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm @@ -14446,6 +14446,10 @@ /area/strata/ag/interior/administration) "beT" = ( /obj/structure/machinery/photocopier, +/obj/structure/sign/calendar/upp{ + pixel_y = 30; + pixel_x = 3 + }, /turf/open/floor/strata/blue1, /area/strata/ag/interior/administration) "beU" = ( @@ -24661,6 +24665,13 @@ /obj/structure/flora/grass/tallgrass/jungle, /turf/open/auto_turf/strata_grass/layer1, /area/strata/ug/interior/jungle/deep/hotsprings) +"dQI" = ( +/obj/structure/sign/calendar/upp{ + pixel_y = 30; + pixel_x = 3 + }, +/turf/open/floor/strata/floor2, +/area/strata/ag/interior/outpost/med) "dSA" = ( /obj/structure/bed{ icon_state = "abed" @@ -25102,6 +25113,10 @@ "eNz" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/guestpass, +/obj/structure/sign/calendar/upp{ + pixel_y = 30; + pixel_x = 3 + }, /turf/open/floor/strata/red1, /area/strata/ag/interior/landingzone_checkpoint) "eNF" = ( @@ -25521,6 +25536,13 @@ /obj/structure/machinery/iv_drip, /turf/open/floor/strata/cyan2/east, /area/strata/ag/interior/outpost/med) +"fCg" = ( +/obj/structure/sign/calendar/upp{ + pixel_y = 30; + pixel_x = 3 + }, +/turf/open/floor/strata/red1, +/area/strata/ag/interior/dorms/flight_control) "fCo" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 @@ -28020,6 +28042,16 @@ /obj/effect/landmark/monkey_spawn, /turf/open/auto_turf/strata_grass/layer0, /area/strata/ug/interior/jungle/deep/east_dorms) +"kHz" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/obj/structure/sign/calendar/upp{ + pixel_y = 30; + pixel_x = 3 + }, +/turf/open/floor/strata/red1, +/area/strata/ag/interior/outpost/security) "kHV" = ( /obj/effect/blocker/sorokyne_cold_water, /obj/effect/blocker/sorokyne_cold_water, @@ -28307,6 +28339,14 @@ /obj/structure/surface/rack, /turf/open/floor/strata/floor3/east, /area/strata/ag/interior/outpost/engi/drome) +"lhT" = ( +/obj/structure/machinery/space_heater, +/obj/structure/sign/calendar/upp{ + pixel_y = 30; + pixel_x = 3 + }, +/turf/open/floor/strata/red1, +/area/strata/ug/interior/jungle/deep/structures/res) "lij" = ( /obj/structure/window/reinforced/tinted{ dir = 4 @@ -37937,7 +37977,7 @@ aac aac kSU kSU -coO +fCg cjb cjb coP @@ -55337,7 +55377,7 @@ blb blb boV blb -bTF +dQI byF bBX ryK @@ -59599,7 +59639,7 @@ bXv gAm bWM ijo -isj +kHz gAm gAm gAm @@ -77318,7 +77358,7 @@ aad aad aad uux -adT +lhT aei aeB adz diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index b5181e0f77f6..b81191b4810e 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -5501,6 +5501,9 @@ icon_state = "pottedplant_22"; pixel_y = 8 }, +/obj/structure/sign/calendar/ua{ + pixel_y = 30 + }, /turf/open/floor/almayer/blue/southeast, /area/almayer/command/cichallway) "aJq" = ( @@ -15464,6 +15467,10 @@ /area/almayer/shipboard/brig/cryo) "cuq" = ( /obj/structure/machinery/computer/arcade, +/obj/structure/machinery/alarm/almayer{ + pixel_x = 32; + pixel_y = -6 + }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) "cus" = ( @@ -26946,6 +26953,9 @@ icon_state = "E"; pixel_x = 1 }, +/obj/structure/sign/calendar{ + pixel_y = 30 + }, /turf/open/floor/almayer/sterile_green, /area/almayer/medical/hydroponics) "hnt" = ( @@ -27724,8 +27734,9 @@ /turf/open/floor/almayer/greencorner/east, /area/almayer/hallways/lower/port_fore_hallway) "hEl" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 +/obj/structure/sign/calendar/wy{ + pixel_y = 30; + pixel_x = -9 }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliaison) @@ -29129,6 +29140,10 @@ pixel_x = -6; pixel_y = -3 }, +/obj/structure/sign/calendar/ua{ + pixel_y = 31; + pixel_x = 1 + }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) "ikT" = ( @@ -62466,6 +62481,9 @@ /turf/open/floor/plating/almayer/no_build, /area/almayer/stair_clone/upper) "vQf" = ( +/obj/structure/sign/calendar/ua{ + pixel_y = 29 + }, /turf/open/floor/almayer/silvercorner/north, /area/almayer/command/securestorage) "vQq" = ( @@ -63409,6 +63427,9 @@ /obj/item/storage/donut_box{ pixel_y = 8 }, +/obj/structure/sign/calendar/ua{ + pixel_y = 26 + }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/warden_office) "wid" = ( @@ -68173,6 +68194,9 @@ /obj/item/pizzabox/margherita{ pixel_y = 8 }, +/obj/structure/sign/calendar/ua{ + pixel_y = 29 + }, /turf/open/floor/almayer/green/north, /area/almayer/squads/req) "ycM" = (