Any (non-silicon) job can now be set to be an unlimited slot job from Manage Job Slots
People will be allowed to join as assistant if no other jobs are availible
Removes a redundant sanity check from AssignRole()
Misc:
+Fixes unreported issue with initializing lighting on a specific zlevel
+Fixes two similar issues with moveElement and moveRange. Where fromIndex or toIndex could be adjusted incorrectly in certain conditions. Potentially causing bad-sorts, or out of bound errors.
+Rewrites listclearnulls(list/L) to no longer iterate through L.len elements for every null in the list (plus 1). i.e. went from L.len*(number_of_nulls+1) list-element reads (best-case), to L.len list-element reads (worst-case)
+New proc/getElementByVar(list/L, varname, value) which finds the first datum in a list, with a variable named varname, which equals value. You can also feed it atoms instead of lists due to the way the in operator functions.
+Fixes an unreported issue with Yota's list2text rewrite. Under certain conditions, the first element would not be converted into a string. Causing type-mismatch runtimes.
+New global map_ready variable. This is not fully implemented yet, but will be used to avoid duplicate calls to initialize() for map objects.
+All turfs now maintain references to all lights currently illuminating them. This will mean higher memory use unfortunately, due to the huge number of turfs. However, it will speed up updateAffectingLights significantly. I've used list husbandry to reduce baseline memory usage, so it shouldn't be any worse than some past atmos modifications memory-wise.
-Removed 'quadratic lighting', can add this back at some point. Sorry.
+modified the way lum() works slightly, to allow turfs to have overridden delta-lumen. i.e. space cannot be illuminated more than its default ambiance. This allowed removal of some iffy special-snowflake lighting areas implemented by somebody else.
+Lighting images in the dmi can now use arbitrary naming schemes. It is reliant on order now. This allows the dmi to be replaced by simply dropping in a new dmi.
-Removed all subtypes of /area/shuttle. Shuttles now create duplicate 'rooms' of /area/shuttle. (More on this later). This will conflict with most maps. Guide on how to fix to follow.
+All verbs/tools relating to world.tick_lag were refactored to use world.fps. However old config text for setting tick_lag will still work (it converts the value to fps for you)
+MC stats improved using smoothing. They now have their own tab so they dont get in the way when you're playing as an admin.
-removed the push_mob_back stuff due to conflicting changes. Sorry Giacom.
_OK, NOW THE ACTUAL INTERESTING STUFF_
Following systems moved over to subsystem datums:
air_master
garbage_manager
lighting_controller
process_mobs (aka Life())
nanomanager
power
sun
pipenets
AFK kick loops
shuttle_controller (aka emergency shuttle/pods), supply_shuttle and other shuttles
voting
bots
radio
diseases
events
jobs
objects
ticker
Subsystems hooks and variables should be commented fairly in-depth. If anything isn't particularly clear, please make an issue.
Many system-specific global variables have been refactored into
All tickers which previously used world.timeofday now use world.time
some subsystems can iterate before round start. this resolves the issue with votes not working pregame
Every other admin window that deals with singular things (vv, traitorpanel, etc) lets you have more then one open (as long as its not about the same thing), But not pp, the central point of all of them.
This fixes that and allows you have a window open for each mob.
Converts the nearly useless List Free Slots command to Manage Free Slots
From here you can painlessly add and remove job slots to your hearts content because the HoP is Dead/Shit/AFK/In Hiding
It can't be used before round start to make rounds with only clowns because of jobs.txt being applied at round start. Alas.
Mostly as a way to reverse the consequence of an badmin's lapse of good judgement (There's no easy way to reverse the Halloween event button.). This can also be used for an assortment of badminning.
Additionally,
-Create virus re-added to secrets menu, as it had options to specify a specific virus to create
-Blob added to One-Click-Antag with the option to set the strength of the blob (1=Weak, 2= Strong, 3=Full)
Lets admins set temporary notices that will last until the end of the round.
* All players that join the server will see this notice.
* Anyone can check it using the Adminnotice verb
* Also adds the motd verb that can be used to check the server's message of the day
The intention of this is to make it easier for admins and server hosts to run special events.
Adds anomalies, special effects which tie into the event system.
Ports bholes into an anomaly, cleans up their code.
Adds new gravitational anomalies. Imagine a trampoline.
Flux event is now an anomaly.
Adds a new pyro anomaly.
Using the dropdown menu / changing health / names of people in view variables now actually requires +VAREDIT.
Shuttle moving moved from +FUN to +ADMIN for convenience sake.
+ADMIN now required to view antagonists / law changes, before it was only required to check antags via verbs, which you could get around through the secrets menu.
+ADMIN Also now required to view all of the special information given about players in who menu (like antagonist status), but all admins can still see stealth keyed admins.
- The admins now have the ability to kick all or just afk clients from the lobby
- When admins use this action, a list of kicked clients is sent to admins and into the log.
- Added a confirmation message to the admin command.
Blob Gamemode Revamp
Blob gamemode is back and better than ever.
The blob is selected from be_alien candidates and is controled like a real time strategy game.