From 963e6826a977af7c1bcd538be2f02e725308de83 Mon Sep 17 00:00:00 2001 From: Blundir <100090741+Blundir@users.noreply.github.com> Date: Tue, 27 Aug 2024 03:44:20 +0300 Subject: [PATCH 1/2] initial --- code/__HELPERS/_time.dm | 137 ++++++ code/__HELPERS/dates.dm | 41 ++ code/controllers/subsystem/events.dm | 40 ++ code/game/objects/structures/signs.dm | 43 ++ code/modules/holidays/holidays.dm | 434 ++++++++++++++++++ colonialmarines.dme | 2 + icons/obj/structures/props/decals.dmi | Bin 16585 -> 18386 bytes maps/map_files/BigRed/BigRed.dmm | 55 ++- maps/map_files/Kutjevo/Kutjevo.dmm | 6 + .../Sorokyne_Strata/Sorokyne_Strata.dmm | 48 +- maps/map_files/USS_Almayer/USS_Almayer.dmm | 28 +- 11 files changed, 824 insertions(+), 10 deletions(-) create mode 100644 code/__HELPERS/dates.dm create mode 100644 code/modules/holidays/holidays.dm 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 d9bf8677bb56..c646d45d1737 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -599,3 +599,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..2ea5d1d117bf --- /dev/null +++ b/code/modules/holidays/holidays.dm @@ -0,0 +1,434 @@ +/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/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/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 6211687c1a63..fe7f6617da48 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" @@ -1802,6 +1803,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 e99f52a104397a4302dd329f402cd0dbd5e8ddb9..fc97dfdfcaefb428069b7d72845def296f643a7c 100644 GIT binary patch literal 18386 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

hyf=hdgQ`AJ$>+tcvqi2v}5xKQ4v8h0i zH@xdC@uFdSvX>xEX{pDRulH%e|8W%Dl`?jW^#(Kb8&~gexvWFBoE82S{X4J3JD-Q^ zfAqj#Mar#2iB&%S_m|byp&8)z>v65jnZ6Af>h}Mpv*|}}54t-BmCelS0?(Ag*D#W* zah&o3Sv%_H#r?Pq%C!q?YI3TwI6EXe4o^-Th7;E<%&lbK!LWzVS*0Egja|s&HpDG+ zyEod&gW(E-DMfX4iDE5hTQ!vPF&4e?v_Az(6WvTsH=Q0>)n$~`nYEbARgF|y=7)ENFa||gk`GX)Vm<2u8#D@b zJ}H`YCNw}T506QDv@L~Jo^%XXeaC0->1;(|B6*DH;0tpdcDqeCPKQ=@Sc=Vq344*} zMd*0oVqkO198-#x*PfBTK;SjS*Wak=4znwBbMRL*7NK_w7MK19flytU$Je}VTgZKh zs3M89nnp$}zCCD6MJ)P=%glVmWOiZlp$BR?4QzAX^QvE)c7qThEC`KkNM6%iK#7(N0A) z97?9LC5#9sL`;MQ9!!<~sQD5Z~AiN)S>ujyMioPooto;at1r={~=j&43$HKw6on2gbbuh8$i8zb-6 zW7!wBPv^a*&Libh2(Vn34ZbS9aT;yu{ zS9SW)*+S1zPB+0AmWxM+hegH3pVM1(BqgC367j@;74S+2LL#vX)_;|hzuE$*A+2t}kvg66F5qxgWjMCx}$opY5oAUumpYq=<(jWWm|a8gT)kQGsT z+;xjg|8t9D>f_m*w|dylf5iUW{N}0$$l*pGot+hzS7#eC$?Lj*xxRiA6l~A@&-3eV zlJ4%%HJ|Z=OwYkl@45dtUnc!x(LX&{|HCp?YI#7krDk)aJwX@(JF+XO=~v1+aLcVc`u9USewnYl?p}l1MjR_&WCRB#!W;*;tW#XqJw%s;Wx-q~@sWDn_R8?5BYJ z_7)@S-+q*b&{$Qv_VP^;Q1rtCYx`DJQl8*UE{2YQH(OzH#IkK+42hmmUr9?@jGB0q z0|h(Q58($wtY!L9m!3P5>XRxAj;dUH4BDd_QJ|U>>QXKIp;y?qPY^WEM&AQ3t(>6m zBWE{3N*vumZEtWG7bUtP;o)(gU0K|fBO9}Xv_dGjd`y+O)&YYrUBmTO#!xl#ZSs0$a2>ERc1*$TX<8SS-S<6H| zwswsuE+!rMPbC#op^ImAo&FCktRREarrl4NS&1c(N%!=t=X&D?*kr)UZ{Flq*-4SWtkdwM;$7lZ}e}CWLfqcuwZl|37a00ooZYUlxmNSj?A1&$ht*t`V`%{^LDa%;3A)?cj(6DawtfkIHzcEtn z0Lq6~5vxzu9)ANamI~7+ZsSoBP$1)0i069pU&<#Hz)zIil7{TZ)KubUKPYqjH)0`! z^m#kCLXLz#54S$BnNwF4d;EcN(Y>b;!a1j*e{J=xIacV?{& zz~`xj>WzOmM1zW7=B@%oZ7ib|^hsd%t-ZK!s?scZE}MW23v=KNFe5CCgGX<^c4z1+ z!6ZiB-jcM#ZK<}yR?yD}g}tCCNC196#mmoF@*acvEH@N!M%6w`GEIp>rXz9pJbbd@ zI&XYSpyQ0yR%Qs{zH!914Z?@F>yJRYu5vlwPFNHp!unQN#aXCFS&*W| zYWnb`0)j*H0Y`zr?$9H*b(wqUCOnD@_K1x*z6mf>v8bTs`?H8{8?aR=vgVEZM>h+T8!3-vw5n4WVWC8HFNSb{=LwO1rb94`8 z(4sOo&^IwvY z*U$}IJU>6&^3cV%=j41Z>4nN@2zuyrp!BV^dO@{@KDm3%!9xATdaa+Zdwk8o{XM=% zd|h4!BP)$(=y_&?gVq{S3;5DMM^<~B=2@41#JR6KURZZszC1fF&_6ARP?*^XkbzFj zYdTl+Ry-4Ke3uL|tg!l|4sIx9<;+sN3dndTsD`evn0f z7qs!g=De$@(0l|ZpobtwcoVg=TQ1mK$Z0Znj}~68yEbgS2C#?T zaIDGSnQ#tITL*+wlkx6CtKSw@Q6c<*mioJeyJ++LooTSeZ2cX2rkFQpFrNP|$?3|9 z8EaDIc2a%M@0uIleLlXPfnZ+Ae5szt*Y#`v)q1-iSj|(x8 zDe(`t)h?6c_2kbVE#$3wK{C~D-QQk~3cLz{yj)B#J^Z)b-0<_~{MP&hnd+E!Hy( zCGSbf%A%5#l!UBq{zVEns6MXB6glyE+YQ00wp#wGzt~1uUIf`c-5m_iqeC#6%f;~9 zm|B!k>xRaVSmR{x1!qKW*Q$3-C)BM29Wzn`Gq{f5xz-?C+Eg9AB8Hss0yHoN8fY^Zi=cAvyyYOqLViJ#DtsWTPjB!nSH&l-c zf!!?Hl7*(ECs(a{fuKv>~UjQjb-bSbsVSGDM`ns~(^lq_tjxLE9k89&O-@~L(hR$ih8a{SM4*|5o zAqj4}?bsh%$fxU_N$Gz@>lc?181PJO{q4xGE~=`F zLEu3}P5ntlQ;m7&bg3z|s)O@y_cIZIho@Fp_|HQ%SN2=koWoldIII{h?mSo8rr}X@ zGT|FCL$_s8DoTlkI81H7n0sq?dcu4rncj7&u# z2BOdYf-xAoud+N(vfxtDtbv;9cs|0?YAlgQ3Tf%`=@sDk181i7YTp;WXP{N^Khmn| zDumhFg+VWzR&~KcRFjuu(|JEV@M@5sQ(*^Qifn`U->pD@8go&G>E!67m=3m}eO|Kah%;{E?nlBPxbRlZ_fy zGM7Xp^o0dggJA0{);5$doln9!4B#$CQUg#_*P*&aM%v(|=)g~2cV_f?6&*W@L|BhL+m*+#w5QBL4r=qs^^Zzu-ZR;Qs8@*uQAsTX*CI6P1 z2V*U`r2$H6*T(gLhT&19mq{!=@gHb8r@vNFaBgkAS_C1BE|ViRztvGtDb#V!Q4iF0 zjw5<>&Yuwo)+kT`9`b5AABmX61T4y(daT5a$hr9+Hld*Bk&zg(&hK5Dq{O zV0&GUjLNDVX4e-c(`TH%%H?AL@1Yon^X0By7oLm;99X=|xT2^2SlEOZgcUega8A*O z@Ca>>4TF^+PY=U_V~}$B&P(jhY693*6aYzw6-Scj`P*LXa{K&La>(8udEn?P&I=}U zTVz!6W&Q%pUH9est}eI$9QG~4diUGa>%~UIC^8&rTFFsB2Dq#otp0TBO!!!)j^LOe zqm$bVal4XsGPQ7@8j};g2UA7`CgQ#Kltol5R8ctr8