🆑 ninjanomnom
add: You can now select a nearby area to expand when using a blueprint instead of making a new area.
add: New shuttle areas can be created using blueprints. This is currently not useful but will be used later for shuttle construction.
tweak: Blueprints can modify existing areas on station.
admin: Blueprint functionality has been added to the debug tab as a verb.
/🆑
Additionally the code for getting all turfs in a contained space has been refactored for some pretty good performance improvements.
Old proc: Self CPU 8.816, Total CPU: 10.009, Real Time: 10.009, Calls: 5000
New proc: Self CPU 4.174, Total CPU: 9.000, Real Time: 9.001, Calls: 5000
They've been moved into a area helpers file.
How does this work:
Station receives a communication extorting current cargo point, if they answer yes the points are just gone and nothing of interest happens.
If station refuses to pay or is silent for 3 minutes, pirate shuttle spawns somewhere in space.
There's an internal GPS onboard so crew will always be able to follow the shuttle.
Crew of 3, moderately armed. (Balance pending)
Shuttle engines have 3 minute cooldown between jumps.
Special shuttle equipment will block cargo and emergency shuttles from leaving and slowly steal the points.
* Overlay per-type cost logging.
Overlays will now log how long each type took to process.
Changed up how overlays was done to account for the fact its a queue and not a processor. (it was using almost none of the processing subsystem framework)
Made the overlay loop faster by making it not cut the list until the end.
Added a simple generic benchmark stat tracking system.
I don't know how much overhead this adds to overlays. i may put it behind testing or something, but i do want to test this on the serbers to get some stats.
* Removes flush() as it was creating race conditions
* Use ref
* text2file
* Atoms added as an overlay will have their pending overlays compiled before being converted to an appearance
When I ran the Colosseum of Fools event a while ago, I used sounds I had locally to spice up the event and make it unique, but I ran into the issue of there being no easy way to play sounds in flexible ways while preventing people who don't want to hear them from being included.
Adds sound emitter objects, editable by admins through a handy UI, that allows them to play sounds in a variety of flexible ways. The following things can be manipulated by any admin by clicking on the sound emitter:
Label (maptext)
Sound File is chosen by navigating to the file like normal sound playing
Sound Volume is a percentage between 1 and 100
Mode dictates how the sound is played and can either be local (played at that location like a normal in-game sound) or direct (played directly to players like admin sounds)
Range dictates how far players need to be to hear the sound; this includes Radius (all players within a specified amount of tiles), Z-Level (all players on the same z-level), and Global (all players.)
Sound emitters can be examined by any ghosts (they're invisible to normal players) to see the info about them, but only admins can edit their properties and play sounds with them.
This lets admins make very flexible sound emitters that can fulfill a variety of different purposes, like music that only people within 7 tiles can hear or a distant screech of metal that an entire search party on the derelict hears.
In addition to the Play Sound button, alt-clicking the emitter activates it.
* Disentangles blob from blob mode
* Observer examine
* Fixes runtimes
* Blob now has infinite points in critical mass and will consume the entire station visually
* Different icon
* Blob event more common
* All overminds get to pick their core location
* Blobs block the shuttle
* Not sure when controller would be different from overmind
* Datum rev & related upgrades to base datum antag
* Actually starts objective tracking
* Grammer & clumsy removal things
* unifies file names
* Fixes heads displaying in every mode
* This is why i ask for reviews
* KILL ME
* proper antag detection
* Fixes admin de-revving
* Sanity
* Fix conflicts
* Fixes instant roundend
* Fixes flashes
* Waits until setup is done to declare roundend.