This is so clients can actually connect from world.reboot before the mc starts hogging the cpu, and mainly so i can actually see how long the minimap subsystem is taking to initialize without having to play "race against the mc"
Clients now cache their jobbans to save on DB queries.
Legacy jobbans and "new" (savefile) jobbans have been removed.
These are old cruft that has been unused for years, and since we require
a DB for notes anyway we might as well just get rid of the legacy stuff.
I considered removing legacy bans as well, but I was unsure if that
would go way beyond the scope of this PR (my main goal here is making
jobban_isbanned not awful).
Also note that this was basically untested, as I do not have a test
database. Any help testing this would be much appreciated.
This should enable more murder death kill at round end before the next round starts.
New servers will default to 90 seconds while old servers will default to the old 25 seconds until they import the config option to their server.
Fixes mutiple rotate operations from breaking the server, map rotation will properly detect rotation operations as well as update operations and abort.
Fixes max pop being treated as minpop
Adds more feedback to admin verbs.
Adds a config option for the map rotation chance.
Ups default rotation chance from 50% of round length to 75% of round length.
Moves the procs around.
Adds two new admin verbs:
Force map rotation.
Change map.
Using the server->reboot option in client side debugging tools will sleep the current proc and call world.Reboot(1).
These cases should immediately reboot with no code to clog it up so that admins with client side debugging tools can restart the world even if its hung. (this being the reason i gave all admins client side debugging tools)
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
This means away missions don't have space transitions
* The setup_map_transition proc is protected from excessive tiles proceeding (the proc is set to the background if too much tiles are processed)
* Added a comment explaining the Space Cube, by Incoming
* Fixes#4903 : "mobs don't maintain momentum on z-level transition"
* Serendipitiously fixes#2614
Thanks @Giacom for the info!
PR announcer is now able to authenticate with Nickserv.
Communications key moved out of config controller.
Even better Regex validation.
Reading now has even more exception handling.
Makes the announcer better in every aspect (less bugs, less fun, more
merging announcement capability)! Also makes it require *just* .Net 4.0
instead of 4.5.
Adds the option for players to disable the PR announcements.
Adds a C# program that allows you to parse GitHub Pull request opening
notifications sent to an IRC and display them in-game.
Adds authentication to the world/Topic() procs, allowing you to easily
and securely input data into the game (EXPORT DOES NOT REQUIRE IT!)
Moved all main .dmm maps to _maps/map_files
Each main map gets a .dm file in _maps, this is what's ticked, -NOT- the .dmm file.
This allows use of a MAP_NAME define for various purposes, and lays the groundwork for map customization in the future.
Also included a hacky dm.sh script which supports swapping maps.
For example, "./dm.sh tgstation.dme -Mmetastation" would compile with metastation.
Signed-off-by: Mloc-Argent <colmohici@gmail.com>
Testing has revealed that it reduces the sluggishness of the game, though it will spike from lag when the singularity is loose. Thanks to ChuckTheSheep for suggesting it.
Server owners who want to keep set background enabled can do so by changing the define.