From 31e3bd29cc0198fef581968448aa951f3f800184 Mon Sep 17 00:00:00 2001 From: Neerti Date: Mon, 23 Nov 2015 09:28:34 -0500 Subject: [PATCH] Refactors holiday system slightly. It's now a list based system, so you can have multiple holidays on the same day, in case you wanted to do that. Removes the dumb Holidays. Adds more real life and fictional holidays, and adds a blurb for all of them. --- .../gamemodes/events/holidays/Holidays.dm | 198 +++++++++++++----- 1 file changed, 142 insertions(+), 56 deletions(-) diff --git a/code/game/gamemodes/events/holidays/Holidays.dm b/code/game/gamemodes/events/holidays/Holidays.dm index c7851b9af1..a407b39307 100644 --- a/code/game/gamemodes/events/holidays/Holidays.dm +++ b/code/game/gamemodes/events/holidays/Holidays.dm @@ -1,5 +1,5 @@ //Uncommenting ALLOW_HOLIDAYS in config.txt will enable Holidays -var/global/Holiday = null +var/global/list/Holiday = list() //Holidays are lists now, so we can have more than one holiday at the same time (hey, you never know). //Just thinking ahead! Here's the foundations to a more robust Holiday event system. //It's easy as hell to add stuff. Just set Holiday to something using the switch (or something else) @@ -20,115 +20,192 @@ var/global/Holiday = null /proc/Get_Holiday() if(!Holiday) return // Holiday stuff was not enabled in the config! - Holiday = null // reset our switch now so we can recycle it as our Holiday name + Holiday = list() // reset our switch now so we can recycle it as our Holiday name var/YY = text2num(time2text(world.timeofday, "YY")) // get the current year var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day //Main switch. If any of these are too dumb/inappropriate, or you have better ones, feel free to change whatever + //Holidays are now associate lists. You should write holidays like this. + //Holiday["Holiday Name Here"] = "Blurb about the holiday here." switch(MM) if(1) //Jan switch(DD) - if(1) Holiday = "New Year's Day" + if(1) + Holiday["New Years's Day"] = "The day of the new solar year on Sol." + if(10) + Holiday["Messa's Day"] = "A Tajaran holiday. It takes place on the shortest day of the year on \ + Ahdomai, and is named after Messa, the Tajaran deity of Change." + if(12) + Holiday["Vertalliq-Qerr"] = "Vertalliq-Qerr, translated to mean 'Festival of the Royals', is a \ + Skrell holiday that celebrates the Qerr-Katish and all they have provided for the rest of Skrell society, \ + it often features colourful displays and skilled performers take this time to show off some of their more \ + fancy displays." if(2) //Feb switch(DD) - if(2) Holiday = "Groundhog Day" - if(14) Holiday = "Valentine's Day" - if(17) Holiday = "Random Acts of Kindness Day" + if(2) + Holiday["Groundhog Day"] = "An unoffical holiday based on ancient folklore that originated on Earth, \ + that involves the worship of an almighty groundhog, that could control the weather based on if it casted a shadow." + if(14) + Holiday["Valentine's Day"] = "An old holiday that revolves around romance and love." + if(17) + Holiday["Random Acts of Kindness Day"] = "An unoffical holiday that challenges everyone to perform \ + acts of kindness to their friends, co-workers, and strangers, for no reason." if(3) //Mar switch(DD) - if(14) Holiday = "Pi Day" - if(17) Holiday = "St. Patrick's Day" + if(3) + Holiday["Qixm-tes"] = "Qixm-tes, or 'Day of mourning', is a Skrell holiday where Skrell gather at places \ + of worship and sing a song of mourning for all those who have died in service to their empire." + if(14) + Holiday["Pi Day"] = "An unoffical holiday celebrating the mathematical constant Pi. It is celebrated on \ + March 14th, as the digits form 3 14, the first three significant digits of Pi. Observance of Pi Day generally \ + imvolve eating (or throwing) pie, due to a pun. Pies also tend to be round, and thus relatable to Pi." + if(17) + Holiday["St. Patrick's Day"] = "An old holiday originating from Earth, Sol, celebrating the color green, \ + shamrocks, attending parades, and drinking alcohol." if(27) if(YY == 16) - Holiday = "Easter" + Holiday["Easter"] if(31) if(YY == 13) - Holiday = "Easter" + Holiday["Easter"] if(4) //Apr switch(DD) if(1) - Holiday = "April Fool's Day" - if(YY == 18 && prob(50)) Holiday = "Easter" - if(5) - if(YY == 15) Holiday = "Easter" + Holiday["April Fool's Day"] = "An old holiday that endevours one to pull pranks and spread hoaxes on their friends." + if(YY == 18) + Holiday["Easter"] + if(7) + Holiday["Tajaran Independence Day"] = "A Tajaran holiday celebrating their independence by winning the \ + war against the Slavemasters, the former ruling elite that went known as 'The Overseers'." + if(8) + if(YY == 15) + Holiday["Easter"] if(16) - if(YY == 17) Holiday = "Easter" + if(YY == 17) //Easter can go die for all of this copypasta. + Holiday["Easter"] + if(20) - Holiday = "Four-Twenty" - if(YY == 14 && prob(50)) Holiday = "Easter" - if(22) Holiday = "Earth Day" + if(YY == 14) + Holiday["Easter"] + if(22) + Holiday["Earth Day"] = "A holiday of enviromentalism, that originated on it's namesake, Earth." if(5) //May switch(DD) - if(1) Holiday = "Labour Day" - if(4) Holiday = "FireFighter's Day" - if(12) Holiday = "Owl and Pussycat Day" //what a dumb day of observence...but we -do- have costumes already :3 + if(1) + Holiday["Interstellar Workers' Day"] = "This holiday celebrates the work of laborers and the working class." + if(28) + Holiday["Jiql-tes"] = "A Skrellian holiday that translates to 'Day of Celebration', Skrell communities \ + gather for a grand feast and give gifts to friends and close relatives." if(6) //Jun + switch(DD) + if(6) + Holiday["Sapient Rights Day"] = "This holiday celebrates the passing of the Declaration of Sapient Rights by SolGov, which guarantees the \ + same protections humans are granted to all sapient, living species." + if(14) + Holiday["Blood Donor Day"] = "This holiday was created to raise awareness of the need for safe blood and blood products, \ + and to thank blood donors for their voluntary, life-saving gifts of blood." if(7) //Jul switch(DD) - if(1) Holiday = "Doctor's Day" - if(2) Holiday = "UFO Day" - if(8) Holiday = "Writer's Day" - if(30) Holiday = "Friendship Day" + if(1) + Holiday["Doctors' Day"] = "A holiday that recognizes the services of physicians, commonly celebrated \ + in healthcare organizations and facilities." + if(30) + Holiday["Friendship Day"] = "An unoffical holiday that recognizes the value of friends and companionship. Indeed, not having someone watch \ + your back while in space can be dangerous, and the cold, isolating nature of space makes friends all the more important." if(8) //Aug switch(DD) - if(5) Holiday = "Beer Day" + if(10) + Holiday["S'randarr's Day"] = "A Tajaran holiday that occurs on the longest day of the year in summer, \ + on Ahdomai. It is named after the Tajaran deity of Light, and huge celebrations are common." if(9) //Sep switch(DD) - if(19) Holiday = "Talk-Like-a-Pirate Day" - if(28) Holiday = "Stupid-Questions Day" + if(17) + Holiday["Qill-xamr"] = "Translated to 'Night of the dead', it is a Skrell holiday where Skrell \ + communities hold parties in order to remember loved ones who passed, unlike Qixm-tes, this applies to everyone \ + and is a joyful celebration." + if(19) + Holiday["Talk-Like-a-Pirate Day"] = "Ahoy, matey! Tis unoffical holiday be celebratin' the jolly \ + good humor of speakin' like the pirates of old." + if(28) + Holiday["Stupid-Questions Day"] = "Known as Ask A Stupid Question Day, it is an unoffical holiday \ + created by teachers in Sol, very long ago, to encourage students to ask more questions in the classroom." if(10) //Oct switch(DD) - if(4) Holiday = "Animal's Day" - if(7) Holiday = "Smiling Day" - if(16) Holiday = "Boss' Day" - if(31) Holiday = "Halloween" + if(16) + Holiday["Boss' Day"] = "Boss' Day has traditionally been a day for employees to thank their bosses for the difficult work that they do \ + throughout the year. This day was created for the purpose of strengthening the bond between employer and employee." + if(31) + Holiday["Halloween"] = "Originating from Earth, Halloween is also known as All Saints' Eve, and \ + is celebrated by some by attending costume parties, trick-or-treating, carving faces in pumpkins, or visiting \ + 'haunted' locations. Some people make it a goal to scare other people." if(11) //Nov switch(DD) - if(1) Holiday = "Vegan Day" - if(13) Holiday = "Kindness Day" - if(19) Holiday = "Flowers Day" - if(21) Holiday = "Saying-'Hello' Day" + if(13) + Holiday["Kindness Day"] = "Kindness Day is an unofficial holiday to highlight good deeds in the \ + community, focusing on the positive power and the common thread of kindness which binds humanity and \ + friends together." + if(28) //Space thanksgiving. + Holiday["Appreciation Day"] = "Originally an old holiday from Earth, Appreciation Day follows many of the \ + traditions that its predecessor did, such as having a large feast (turkey often included), gathering with family, and being thankful \ + for what one has in life." if(12) //Dec switch(DD) - if(10) Holiday = "Human-Rights Day" - if(14) Holiday = "Monkey Day" - if(21) if(YY==12) Holiday = "End of the World" - if(22) Holiday = "Orgasming Day" //lol. These all actually exist - if(24) Holiday = "Christmas Eve" - if(25) Holiday = "Christmas" - if(26) Holiday = "Boxing Day" - if(31) Holiday = "New Year's Eve" + if(10) + Holiday["Human-Rights Day"] = "An old holiday created by an intergovernmental organization known back than as the United Nations, \ + human rights were not recognized globally at the time, and the holiday was made in honor of the Universal Declaration of Human Rights. \ + These days, SolGov ensures that past efforts were not in vein, and continues to honor this holiday across the galaxy." + if(22) + Holiday["Vertalliq-qixim"] = "A Skrellian holiday that celebrates the Skrell's first landing on one of \ + their moons. It's often celebrated with grand festivals." + if(24) + Holiday["Christmas Eve"] = "The eve of Christmas, an old holiday from Earth that mainly involves gift \ + giving, decorating, family reunions, and a fat red human breaking into people's homes to steal milk and cookies." + if(25) + Holiday["Christmas"] = "Christmas is a very old holiday that originated in Earth, Sol. It was a \ + religious holiday for the Christian religion, which would later form Unitarianism. Nowdays, the holiday is celebrated \ + generally by giving gifts, symbolic decoration, and reuniting with one's family. It also features a mythical fat \ + red human, known as Santa, who broke into people's homes to loot cookies and milk." + if(31) + Holiday["New Year's Eve"] = "The eve of the New Year for Sol. It is traditionally celebrated by counting down to midnight, as that is \ + when the new year begins. Other activities include planning for self-improvement over the new year, attending New Year's parties, or \ + watching a timer count to zero, a large object descending, and fireworks exploding in the sky, in person or on broadcast." if(!Holiday) //Friday the 13th if(DD == 13) if(time2text(world.timeofday, "DDD") == "Fri") - Holiday = "Friday the 13th" + Holiday["Friday the 13th"] = "Friday the 13th is a superstitious day, associated with bad luck and misfortune." + spawn(100) + world << Holiday.len //Allows GA and GM to set the Holiday variable -/client/proc/Set_Holiday(T as text|null) +/client/proc/Set_Holiday() set name = ".Set Holiday" set category = "Fun" set desc = "Force-set the Holiday variable to make the game think it's a certain day." if(!check_rights(R_SERVER)) return - Holiday = T - //get a new station name - station_name = null - station_name() + Holiday = list() + + var/H = input(src,"What holiday is it today?","Set Holiday") as text + var/B = input(src,"Now explain what the holiday is about","Set Holiday") as message + + + Holiday[H] = B + //update our hub status world.update_status() Holiday_Game_Start() @@ -139,9 +216,20 @@ var/global/Holiday = null //Run at the start of a round /proc/Holiday_Game_Start() - if(Holiday) + world << Holiday + if(Holiday.len != 0) + var/list/holidays = list() + var/list/holiday_blurbs = list() + for(var/p in Holiday) + holidays.Add(p) + holiday_blurbs.Add("[Holiday[p]]") + world << "[p] = [Holiday[p]]" + var/holidays_string = english_list(holidays, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" ) world << "and..." - world << "

Happy [Holiday] Everybody!

" + world << "

Happy [holidays_string] Everybody!

" + if(holiday_blurbs.len != 0) + for(var/blurb in holiday_blurbs) + world << "
[blurb]
" switch(Holiday) //special holidays if("Easter") //do easter stuff @@ -152,11 +240,9 @@ var/global/Holiday = null //Nested in the random events loop. Will be triggered every 2 minutes /proc/Holiday_Random_Event() + if(isemptylist(Holiday)) + return 0 switch(Holiday) //special holidays - - if("",null) //no Holiday today! Back to work! - return - if("Easter") //I'll make this into some helper procs at some point /* var/list/turf/simulated/floor/Floorlist = list() for(var/turf/simulated/floor/T)