Holidays are now actual datums with procs and vars and everything.
Holidays run a proc called celebrate() when it's time to celebrate them.
Currently none of them do anything but that should change, wink wink.
Holidays can now run for more than a day. The important ones, april fools,
christmas, halloween, new years, and easter, all last at least a week.
The idea is so people can celebrate christmas in game without having to,
you know, actually play on fucking christmas. And also to put a time limit
on how long stuff like the annoying spookoween closet skeletons will stick
around so it doesn't overstay its welcome and become annoying as shit like
last year.
The event SS now allows more than 1 holiday to run at a time.
This matters for new years + christmas, easter + april fools, easter + 4/20,
and any holiday that can happen on friday the 13th.
The events get stored in a list that's only initialized if there's an active
holiday so testing for potential holidays is still pretty easy.
Added more easter dates so we won't have to add more until 2040.
The current batch run out in 2017.
:-------------PARACODE NOTES------------:
Tied to event process
Extra procs for holidays to be able to run special events alone
Admin manual-override functionality maintained and ported to new system
A new mind attached list, restricted_roles, will keep incompatible jobsout of rotation.
Players who would otherwise qualify to play as a protected role will spawn
as the most wanted not protected role they qualify for if they are an
onstation antagonist. If they don't qualify for any job in this way
depending on preferences they will either spawn as an assistant or a random
job (which also makes sure they don't end up in an incompatible job).
Note this doesn't impact late join antagonists or mulligan antagonists.
Roundstart only.
Moves all ferry shuttle processing into one place: the new shuttle
controller.
Also cleans up the emergency shuttle controller a bit more and fixes
multi-shuttle cooldown.
Conflicts:
code/controllers/master_controller.dm
code/controllers/verbs.dm
code/game/supplyshuttle.dm
code/modules/shuttles/shuttle.dm
fixes two bugs in gameticker.dm :
1.) the default value for hide_mode MUST be 0, otherwise all modes even outside Secret rounds will show up as a Secret round with no possible modes. the proper way of hiding the actual mode in Secret is letting /datum/controller/gameticker/proc/setup() deal with it.
if you want to reproduce this, switch your server to any other mode before roundstart, it will still say Secret with no possible modes.
2.) if there are no /obj/effect/landmark/spacepod/random placed on the map, pick(L) triggered a runtime error because the list was emtpy. a simple len check takes care of that.
also whats with the supercautious type-checks in for loops ? nothing will change the contents of the temporary L list.