Ports vorestation's implementation of /vg/'s holomaps.
Holomaps are an in-game object that shows a map of (most) of the station with departments highlighted, to aid in navigation around the station. Maintenance, high-security, and asteroid areas are excluded from the maps.
Adds approximately 1.5 seconds to server boot to generate maps.
Holomaps were added at:
Arrivals shuttle dock, north of checkpoint.
Surface level lift.
By entrance to security on main level.
North of the kitchen.
South of Engineering, near tech storage.
Beside the IA office.
Near the lift on each sub-level department.
Experimental tweaks to how parallax's movement hooks work; the current ones appear to be fairly expensive for all movable movement, doing locate(/mob) in src on every forceMove(). This PR creates a new lazylist (contained_mobs) containing a list of every mob directly contained by an object. contained_mobs is updated on mob/forceMove().
Not sure how to handle mobs located deeper than directly inside an object.
Only alternative to this I see is to make SSparallax tick.
changes:
Queued icon updates now update the atom's associated openspace overlay or openturf.
update_oo() renamed to update_above(), and moved up to /atom. Only meaningful on /turf (updates above openturf if present) and /atom/movable (updates associated OO if present).
Demoted SSfalling to a regular subsystem (1ds tickrate).
Increased SSlighting's tickrate from 2 ds to 1 ds.
changes:
Fixed various GC failures.
Converted integrated radios (used in PDA cartridges) to Initialize.
Added a missing Destroy to the QM PDA cartridge's integrated radio.
Fixed a runtime when mineturfs with no ore were destroyed by explosions.
Fixed a runtime when explosions attempted to Z-travel.
Minor radio performance improvements.
Converted radio globals to defines.
Changed the Security-I and Medical-I frequencies to use the same colors as their respective departments.
Fixes#2646.
Adds a dock at arrivals for the mercenary shuttle to dock, also places the admin shuttle to a dock in the bridge.
Also, fixes the belt at robotics at last and adds a hull shield to engineering. And adds a hacked candy vending to the wizard base and ninja spawn, together with a suit cooling unit for ipc ninjas.
changes:
Fixed an issue where time-delta calculations in SSeffects were completely broken.
Doubled the tick-rate of SSeffects, which fixes some issues with space bike ion trails & makes sparks disappear a bit faster.
The announcement system just got an upgrade.
Also made the delta siren more concerning.
And made a custom slightly annoying sound for the night mode announcement.
Updates the DMM Suite from /tg/ upstream, adding the ability to load tgm format maps, tick-checks, and better compatibility with SSatoms / Initialize().
Also adds some framework for random ruin generation, though it is not functional yet.
Halves the max duration of screen shaking and adjusts the bottom line a bit. Previously, pretty much any explosion would have max intensity screen shaking because the minimum threshold was so high, and likewise for duration.
Standing right next to the epicenter of a sufficiently large explosion (I tested with size 16 bombs, the standard) will still cause some hefty screenshaking, as well as blindness and flash. However, standing at the very edge of an explosion, or standing next to a very small explosion's epicenter (such as an exploding durand or a frag grenade) will have only minor - but still notable (as all screenshaking is) screenshake.
Features:
Removal of BOREALIS (python module) as it's not used.
Removes ToR ban feature in lieu of IPIntel.
New BOREALIS config to alert staff if server starts as hidden.
Adminhelps now inform admins on discord if dibsed (when they were sent to discord anyways).
Adds hub visibility to the server access control panel.
Adds mirror ban spotting via ban panel. It now redirects to the linked ban if one is found.
CCIAA now get alerted as to how many of them are online and active when receiving faxes and emergency messages via Discord.
Removed unused C/C++ libraries. The socket_talk module is a generic UDP shipper, of which Arrow implemented a better version. lib nudge is not even compiled for use. lib_nudge module is uncompiled and no longer used, as we use cURL for the bot.
Removed depracted APIs and config settings related to the previous point.
Whitelisted jobs now appear properly in the job selection window as [WHITELISTED].
Job ban reasons can now be viewed from player preferences window.
Await admin approval for final CCIAA requests and implement. RIP CCIAA.
Fix age bans for jobs and antags (dynamic ones, ofc).
Implement https://forums.aurorastation.org/viewtopic.php?f=18&t=8283
changes:
Machinery now uses machinery_process() instead of process(), allowing machines to be put into SSprocessing-style lists in addition to the machinery list.
Automatic power calculations now involve less proc-calls.
This PR unifies the various manual implementations of custom loadout equip into three procs located inside the job subsystem, as well as updates all custom loadout code to use the new procs.
Fixes custom loadout items not overriding job items in character setup.
changes:
Machines can now be in processing-type subsystems while also being in the machines list. Yes this means you can get two different subsystems to call process(). No you should not do that.
The machines list will prevent duplicate entries from being added.
Printing now uses timers instead of spawn.
SSassets now actually sends the NT logo image to clients.
Ports the bay's character preview system, which is far better to observe aesthetic changes in the character creation, also solves the issues such as markings don't showing up at the character selection menu.
changes:
Reduced power usage of oven and fryer.
Reduced warm up time of oven and fryer.
Oven now heats up to exactly 200C instead of to 198.85C.
Fixed some issues with cooking appliances' sanity checks.
Recipe datums are now initialized once instead of per-appliance.
Moved some cooking verbs to the Objects tab instead of a null category.
It's harder to mess with the shuttle and after failing to return so many times it boots people off. It also connects the airlocks to distro and gives it a backup canister.
Adds a SOFTREF macro because it's an actual PITA to write out. Refactors all applicable usecases of it to use it. I've left out some NanoUI stuff because you know my preference at being explicit when needed.
Implements a configurable sun for a sunlight effect using the lighting engine.
Abuses Z-lights to illuminate Zs in a semi-realistic way.
Kinda slow at setting state, but state changes shouldn't lag & are rare.
Also adds the ability to create lights that ignore visibility when calculating range, causing them to shine through objects/walls.
changes:
Blood overlays are now cached and do not involve world iteration.
Moved every global icon cache I could find into a new SS for organization & easier debugging. SS does not fire or init.
changes:
- NanoUIs and objects are now cleaned out of open_uis when their UIs are closed instead of leaving their entries in the list forever.
- Cleaned up a bunch of open_uis code.
- Common NanoUI files (css, js) are now loaded into the rsc instead of loaded at runtime.
NanoUI no longer sends coder resources that the client doesn't actually need.
This PR adds a system to display round statistics at the end of the round, with the option of logging said statistics to the feedback database.
Tracked stats:
Most deaths by ckey.
Number of people cloned.
Number of times humans have fallen into openturfs.
Number of times humans have died from falling into openturfs.
Number of times humans have been gibbed.
Fixes#2499Fixes#2495Fixes#2493Fixes#2480Fixes#2487Fixes#2491Fixes#2492
Gives the head of security Lieutenant Columbo, an attack dog with a special sprite that deals slightly less damage compared to other attack dogs.
Replaces Poly with floor B.O.B.
Gives Lamarr's cage a little more breathing room.
Intent: implement all of the features from #2442 while also unfucking the multiz movement files to be more readable and not recurse.
To that end, this PR does the following:
All multiz travel is now arbitrated by SSfalling. This will eliminate the need for recursion without relying on timers. Timers would be a bit scary.
The call chain for multiz movement now looks like this (in terms of overwritable procs):
can_fall() (Can lead into fall_impact() & fall_collateral() if returns FALSE)
fall_through() IF current block is open space ELSE fall_impact() & fall_collateral()
Removed almost every istype(src, A) check in the movement.dm file by exercising proper parenting and call chains.
Documented and standardized the contents of multiz/movement.dm. Because this is an API we're going to be relying on very heavily, I'd like to get this right before we move on.
A lot of minor tweaks, like swapping usr over to the applicable mob, and so on.
-allow voting for most mixed gamemodes, with exception of bughunt and infection
-adds crossfire(merc and heister), also adds a raider frequency to don't mix them with mercs
-adds siege(rev and merc)
-adds visitors(ninja and wizard)
changes:
SSopenturf no longer abuses list Cut() (performance improvement)
Openspace overlay objects are now cleaned up after a delay, allowing for smooth animations when an object moves out of an openspace area.
Openspace multipliers are now properly copied by SSopenturf, leading to openturfs properly darkening more the deeper they are.
Openspace updates now cascade up turfs even if one of the turfs in the chain is already queued for update.
Objects entering openspace turfs that already have overlays or do not need an overlay no longer trigger openturf updates.
What it says on the tin.
IPIntel and BYOND account age relating panic bunker settings from TG. Also implements methods for potentially tagging VM users. Ontop of all of this, creates a spiffy UI for admins with R_SERVER to adjust the settings of the entire suite at runtime.
Merges the NanoUI subsystem with Nanomanager, as well as cleans up some nanomanager code.
Most of the files in this commit are changed as a result of removing the nanomanager global in favor of the SSnanoui global.
Converts the job controller into a subsystem, including absolute paths. Also cleans up some mob despawn code.
changes:
The job master is now a subsystem. Job init moved out of EMI.
Custom loadout now properly overrides job equipment on spawn.
Odin despawn timers are now deleted on arrival shuttle launch.
Cryogenic storage despawn is now handled by the job controller.
Backpack equipping has been fully moved to equip_backpack().
equip_backpack() will now equip departmental backpacks.
Job backpack selection is now set via. vars instead of overriding a proc.
Fixes#2180.
changes:
Openturfs no longer copy the below turf's name.
Openturfs' desc now lists the name of the below turf instead of copying the below turf's desc.
SSmob now detects sleeping Life() procs.
This PR converts ZAS' c_airblock procs into a single macro for performance reasons, as well as allows CanPass to be bypassed for atoms that do not require special air blocking behavior.
Appears to have a significant effect on performance, needs more detailed testing.
Some objects are likely missing canpass flags, I only set the obvious ones. Please comment if you find one I missed.
Might fix#2152.
This PR edits the lighting engine's turf selection algorithm to also include turfs below openturf tiles, allowing for cross-Z lighting.
changes:
Lights now will now shine down Z-levels when they light up an open turf.
Commented-out openturf starlight pending making it not pummel SSlighting.
Openspace overlays are now only queued if they are not already in the queue.
Lighting overlays will now also update their associated openturf overlay on update if they have one.
Removed an old unused message from the asteroid generation subsystem.
Port of tgstation/tgstation#26975.
Changes the lighting engine to apply lighting changes in one step using stored lum value differences instead of two steps (remove_lum, add_lum).
Seems to show a speedup in lighting updates as well as a reduction in server memory usage due to aggressive freeing of unneeded lists.
Lighting overlays also default to fullbright instead of fulldark so movable area transitions look less strange.
changes:
Tables now use queue_icon_update() to trigger icon updates.
SSicon_update has been promoted to SS_TICKER to reduce delay in icon updates.
SSicon_update now only has one queue.
This should prevent excessive table icon updates & mitigate table-lag from nar'sie.
changes:
Merged the voting controller into the voting subsystem.
Changed the voting UI to use /datum/browser.
Converted /datum/browser to use HTML5 & attempt to use edge if available. All users of the browser datum have been confirmed functional with Edge.
Changed the ChemMaster to use SSassets for resource download.
changes:
Airlocks no longer tick (exceptions: firedoors, uranium airlocks)
Airlock commands run before round-start are queued to run at round-start.
Airlock commands that failed to run are scheduled to try again in 2 seconds with timers.
Callbacks can now be registered with SSticker to run at round-start in a non-blocking way.
Added a new subsystem (SSpower) for handling power-related functions. Currently doesn't do a whole lot, but this will likely eventually change.
RCON functionality has been moved from SSmachinery to SSpower.
The global cable list has been moved into SSpower.
Powernet sensors no longer process purely to keep themselves in the global machines list, instead they are added to a list in SSpower.
Power terminals no longer pointlessly tick.
Removed some variables from SSticker that weren't used by anything.
Holographic overlays such as those used by consoles are now cached.
Xenoarcheology setup is now tick-checked.
ZAS now uses post-fire timing.
The req_access and req_one_access lists are no longer initialized by default on all /obj types.
Openturfs will only emit starlight if they are bordering a non-openturf dynamically lit turf.
Powernets are now stored in SSpower instead of being a global.
The global mouse list is now stored in SSmob instead of being a global.
Fixed some weirdness in APCs' Destroy() caused by a merge.
SSwireless now pre-bakes to reduce round-start processing.
SSwireless no longer uses processing queues.
changes:
The cameranet is now actually sorted like it's supposed to be. Whoops.
The obfuscations list on turfs is now only created when it is actually needed, instead of every turf in the game having the list created from the start.
Visualnet update buffers now use timers instead of spawn.
Fixes#2186.
changes:
Fixed subsystems priorities file that somehow got fucked up by git merge.
Tweaked some subsystem priorities so ZAS doesn't starve other subsystems of CPU time.
Promoted SSeffects to a non-background subsystem to reduce effect lag during explosions.
Removed double-processing of cascade rift caused by it adding itself to processing_objects in addition to already being processed in SScalamity.
Rewrites the area movement code used by shuttles & elevators in an effort to make it faster, more extensible, and generally easier to read. Also fixes some bugs relating to lighting & moving areas, such as lighting overlays suddenly being teleported into space for absolutely no reason.
Fixes#2161.
Fixes#2166.
changes:
Reduced Asteroid setup time by ~4 seconds on average.
Fixed a bug where jump-to-turf may have not worked on mine turfs.
Possible minor startup time improvements for SSair and Xenoarch.