changes:
Engineering now actually gets engineering-type alert consoles instead of the non-functional base type.
Lighting is no longer broken by shuttles.
The ERT shuttle autoannouncer should no longer cause lighting runtimes.
Fixed some bad newlines in some character setup help texts.
Custom loadout tweaks now properly write to SQL.
Custom loadout is now saved as JSON.
Players are now shown a notice when the server was unable to load their custom loadout.
Drowsyness is now clamped to zero.
Added some new tips to the example.
Tweaked some tips' grammar.
Removed some tips that do not apply to our code base.
Probably fixes embraced vampire thralls not getting vampire verbs.
Fixes#1844.
Fixes#1835.
Probably fixes#1687.
Probably fixes#1824.
Fixes#1839
changes:
Rewrote scheduler to use a sorted linked-list to store scheduled tasks so that only one element needs to be checked if none of the tasks are ready to fire.
Scheduler now checks tasks every 2 ds.
Adding tasks to an empty scheduler or tasks that are triggered after any existing tasks is fast, but adding tasks that trigger between two existing tasks requires iterating through some of the task list.
It's no addtimer(), but it's something.
changes:
Machines' process() has been separated from auto_use_power().
Lights no longer process() and instead use auto_use_power() for power calculations.
Computers that didn't really need to process() no longer process().
Airlocks now use the scheduler to auto-close instead of process()ing.
Fixed a bug where clicking on an AI Status display to set its status did not work.
changes:
Removed shim for old spark system.
Converted all calls to old spark system with calls to new one.
Processor-based effects are no longer pooled, as it had minimal performance impact and was breaking things.
Tweaked some visible_messages for rogue drones.
PB effects' handling of location is now done at the /datum/effect_system level.
Latejoiners will spawn at the Odin, in an elevator shaft in a segregated section of the station away from round-end.
Latejoiners will spawn in civilian clothes equated to their paygrade. (List currently is extremely rudimentary.)
Latejoiners will get their implants activated, their departmental memories inserted, and their equipment delivered by the auto-locker machines. It is at this point that they will be announced to the crew.
Latejoiners will then proceed to the arrivals shuttle. As soon as any living being steps on the shuttle, it will begin counting down to launch in 30 seconds. If there is no living being on it when it is about to launch, it will cancel.
The shuttle will be in transit for one minute. When it arrives it will wait a minute, and then attempt to launch back to the Odin. If there are any living beings on it, it will cancel, announce this to the crew, and then try again in another minute.
Anyone who remains in the spawn area for longer than 15 minutes will be despawned if they're SSD. If they are not SSD they will be teleported to Aurora's cryo. If Aurora's cryo is somehow destroyed they'll be despawned.
Spawning area itself also has its own cryo, if for whatever reason that is needed.
Adds a new process-based effects system with the goal of reducing insane lag from sparks.
Currently only supports sparks, but should be easily extendable to other types of effects.
Also fixes a bug with airlocks where the light from bolts wasn't updating.
Refactors bears slightly to reduce duplicated code & pointless spark object creation and destruction.
Lighting profiler will now log /turf locations & names correctly.
Doors will no longer trigger way more visibility checks than they need to.
Paper shredders can now be detached from the floor with a wrench and moved about.
Refactored the law process to not be a process - it didn't tick anyways.
This PR reduces the tick rate of the lighting process from 1 ds interval to 10 ds interval, and removes some pointless updates from Destroy().
Also removes some left over defines from update_type and darkness overlays that I forgot to remove earlier.
Fixes#1683.
This PR simplifies the lighting update system (removes update_type) and instead makes the lighting system decide which update method to use based on server load.
Instant updates are used during low-load, scheduled during high.
Also removes: update_lights_now() (redundant), diff_light() (unused).
All files deleted and disabled were either:
Not touched for 2+ years
Replaced with native DM functions (JSON specifically)
Generally replaced with newer iterations
This is it. The big one.
Risk: Very large. This modifies or rewrites several important systems.
Some things still need balancing, but that's probably better done if/when this hits dev.
changes:
New smooth lighting system.
Machinery split into three processes: machinery, powernet, pipenet Removed due to breakage. Refactored into multi-step process.
Mob process rewritten.
NanoUI process rewritten.
Objects process rewritten.
Tweaked color output of station lights.
Slime core lights now emit colored light.
Fixed light update frequency issue with fire alarms, hydroponics trays, and airlocks.
Increased light emission from bolted airlocks.
Miscellaneous performance improvements.
New datum pool implementation.
New lighting usage profiler.
Lighting system now tracks UV light, which is not visible to players.
Space now has a parallax effect.
Disabled Spin View verbs due to incompatibility with the new lighting system.
Disabled hallucination view spin due to incompatibility with the new lighting system.
Lighting system now initializes in the lobby before the round starts to reduce BoR deadtime.
Added UV light tracking to lighting engine; dionae now gain energy exclusively from UV light.
Added colored lighting to a few consoles that used default (white) light.
Okay. You can read the entire theory over in this issue: #1365
But basically. All objects to be initialized are now added to a list in their New() proc on world/New(). This is substantially smaller than the entire world. This allows game_controller/setup_objects() to crawl a much larger list, and speeds it up by 6 seconds (from 9.5 to 3.5 seconds). The impact on world/New() is, on average, under 1 second.
Also fixes#1365 and #1363 as a result of reworking the initialization call logic in atoms_movable.dm. initialize() is now more secure, and can handle recursive calls at any point in time.
Re-adds IPC APC feeding
Removes more of the horror that is type paths in text strings when they don't have to be there :ree:
Fix a bunch of lore blurbs
SQL saving is fixededed
Mark-up REGEX now requires whitespace or line ending/starts between tokens. It doesn't grab tokens surrounded by non-whitespace characters.
Updated the server greeting to only updated saved hashes if a user actively clicks on a tab.
C4 now forces old system for itself, due to raisins.
Admin verb to toggle between global default explosion type. One round only. Requires R_DEBUG or R_SERVER, is hideable.
In short, baymerge changed beekeeping. Generally for the better, i love some of the new things they did. But they also removed some things (like the actual bee mobs) and some of their new stuff wasn't properly implemented.
So this PR fixes up both the bay beekeeping content and ours, to work in harmony together, remove redundant stuff, and fix lots of bugs.
Moved explosion calculations into a process that processes a queue of explosions with SCHECKs in areas with significant processing.
Significantly reduces server freezes during large explosions, and almost completely nullifies them for small ones.
Likely subtly changes how explosions behave.
bugfix: "Global nightmode toggle no longer affects security as was originally intended."
tweak: "Manually turning on nightmode will prevent the automatic system from turning it off."
rscadd: "Added a night-mode control program for the Chief Engineer."
tweak: "Changed how night-mode works internally."
tweak: "Red alert now disables night-mode."
spellcheck: "Slightly changed alert messages."
Fixes#1200
Redefine span() to be a macro. Because we don't need it to be a proc ever again.
Rebuild the .all_changelog.yml file to have Bayport stuff at the bottom (onto which we'll add our own shit from this cycle).
Rebuilt the .html file for changelogs to correspond to the above change.
Modified download programs to actually use seconds.
Ports Apollo's infraction's system, creating a permanent criminal record for every character. Every minor or medium infraction accrued over the course of a round is added to the character's permanent security record which is available at vanilla records councils. Antagonists are automatically exempt from this process, and players can exercise control over what charges they consider canon or not.
Brigging a person is now dependent on the criminal sentencing computer, which reads a person's ID and applies a brig timer automatically for the charges selected. Personnel without ID's will have to be brigged manually.
Fixes the tools/indentation.awk script to not demand a comma at the end of perfectly valid comments.
Makes it report unnecessary commas in lists.
Readds it to the Travis build list.
Fixes the mousebeam for more gibbings and ensures that nowhere is safe.
Fixes the multipliers because fuck.
Makes the night lighting process not runtime if night lighting is disabled. Note to Bed: del()-ing processes is bad, they should be disabled instead.
changes:
rscadd: "Added a button on APCs to set the area lights to a 'night-mode' which is dimmer and saves energy."
rscadd: "Added an automated system to turn 'night-mode' on in hallways between 6pm and 7am in station time."
This PR is intended to make working in cargo more interesting, and more like a real warehouse experience. IE, the place is an aladdin's cave full of wierd knicknaks and useful oddifies.