Replaces typesof(path) - path with subtypesof(path) in obvious places. I was a bit conservative, there's probably a few more places that could use this.
Byond will queue all browse(), browse_rsc(), and winset() calls to the client, to ensure they load in order, and ensure any resources from a browse_rsc call (css/html/js) are already at the client by the time any html windows loads.
How ever, each file is processed separately, and byond will wait for the reply from the client before it will send the next file.
Our current system sends all of these html resource files to the client at once when they connect, this is the sole cause of the lag when a client connects. Byond will not send the client a file it already has, but it has to ask the client first, and it does so one file at a time, waiting for a reply from the client before sending the next one down the pipe.
This system fixes that.
Basically it works like this:
Client connects: nothing happens, no massive queuing of browse_rsc() calls, so no interface delay
Client opens a asset_cache controlled html based interface
Asset cache gets notified by the html based interface what assets the client needs to have.
Asset cache checks to see if it's sent that client those files.
Asset cache sends the missing ones, adding them to the list of assets the client has.
This basically spreads out the delay to when you first open a window that uses resources, where it is much more manageable.
I've kinda done a halfass port without too much thought, I see some room for improvement to better fit /tg/'s coding style and make the system more flexible. I'm PRing this because if I don't, it will never get finished.
PDAs and html_interface has been imported in to the new system lazily to test. at 100ms connection start interface lag went from 35 seconds to 16 seconds. Nanoui hasn't been imported, and once it is, that should drop down to almost nothing.
I'll work on this some more after some sleep.
Moves holodeck code to modules/holodeck. Repaths holodeck structures a little. Cleans holodeck code and prepares for additional features (multiple holodecks, etc). Should fix#4828.
Necessary map bugfixen for Asteroid, Disc, Dream, Meta, and TG.
Adds Lounge, Emergency Medical, pet center, and holdout room to the rec holodeck.
All items spawned by the holodeck will do only stamina damage, except when emagged. This allows emergency medical to be staffed with scalpels and bonesaws and such. Emergency medical has some functioning equipment but the only drugs available are in the sleeper.
Fixes a runtime with two blob reagents.
Fixes a reference not being removed when hydro tray is destroyed.
Laser pointer can no longer weaken AIs (no eyes).
Fixes healing fountain construction sprite.
Nexus are now destroyed properly.
Borged cultists will now lose antag status properly.
Round end message fixed.
Feedback messages improved to be clearer, and lots of typos fixed.
Smite no longer uses up faith if there is no valid target in the turf.
Adds an atom/attack_god() proc.
Fixes the greeting messages for prophets and followers, improves god msg.
Fixes nexus being spawned on dense turf after 2min, and general sanity.
Fixes attacking structures with abstract items.
Adds click delay and attack animation for attacking structures.
Fixes a lot more typos.
Fixes defense pylon friendly fire.
Makes defense pylon togglable on its god's click.
Cleans up gun_turret code a little in general.
Adds deconversion by loyalty implant or holy water (basically rev+cult).
Gods will now die when they have no followers left.
Adds the HoG gods to the traitor panel.