* Reworks & TGUIs mecha equipment (#65375) TLDR Mech UI now TGUI: https://streamable.com/ahjydy Mechs now use "slots" for equipment They can only mount 2 guns(left and right arm, left and right click to use) Tesla & Concealed bay is removed Removed mech damage deflection Full list of changes Note: weapons in this section refer to all click-using equipment such as guns/hydraulic clamp/etc Hackmd: https://hackmd.io/lgr-LetfSKyHzPP0zQUXPA Tesla has been removed (Tesla gives you effectively infinite power on station and off station(where the design direction for mechs is intended) they are useless) Concealed mech bay has been removed (Concealed mecha bay relied on selection for visibility so it doent make sense to exist when all equips are "selected", the code was bad (instead of flag or something you just used locate() everywhere) Honker no longer has snowflake UI (I'm sorry but if I have to make a third UI for this im going to go insane) Mechs now mount 2 arm weapons, and certain amount of "utility", "armor" and "power" module types The two arm weapons do not share a cooldown anymore UNLESS they are identical weapons left click to shoot left weapon right click for right weapon, this will shoot the weapon unless you click next to you with a ranged weapon it will then try to melee (This also applies to attaching the weapon to the mech) It is no longer possible to deflect or have multipliers for damage from innate or armor sources, armor will now just apply a direct armor change Since plasma generator needed to be selected to use you now need to click on the power generator with a stack of plasma to refill it Internal damage: The mech no longer needs to be low health to take internal damage Internal damage now no longer has several convoluted ways to fix each different type and is now a timed action performed in the UI Weapons no longer have an RNG chance to be damaged or immediately deleted by damage Weapons will now take damage aimed at the right and left arms respectively, this can be repaired using the new UI. NOTE: this is intended to be implemented as weapon/module disabling but I left it out of this PR to try resemble some shortness Both internal and equipment damage have minimum thresholds of damage required in a hit before they attempt to check whether the mech should take internal or equipment damage, teh threshold is lower for equipment damage You can no longer reload weapons using energy Demo Video https://streamable.com/ahjydy * Reworks & TGUIs mecha equipment * Update firefighter.dm Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com> Co-authored-by: SkyratBot <skyratcommunity@gmail.com>
Asset cache system
Framework for managing browser assets (javascript,css,images,etc)
This manages getting the asset to the client without doing unneeded re-sends, as well as utilizing any configured cdns.
There are two frameworks for using this system:
Asset datum:
Make a datum in asset_list_items.dm with your browser assets for your thing.
Checkout asset_list.dm for the helper subclasses
The simple subclass will most likely be of use for most cases.
Call get_asset_datum() with the type of the datum you created to get your asset cache datum
Call .send(client|usr) on that datum to send the asset to the client. Depending on the asset transport this may or may not block.
Call .get_url_mappings() to get an associated list with the urls your assets can be found at.
Manual backend:
See the documentation for /datum/asset_transport for the backend api the asset datums utilize.
The global variable SSassets.transport contains the currently configured transport.
Notes:
Because byond browse() calls use non-blocking queues, if your code uses output() (which bypasses all of these queues) to invoke javascript functions you will need to first have the javascript announce to the server it has loaded before trying to invoke js functions.
To make your code work with any CDNs configured by the server, you must make sure assets are referenced from the url returned by get_url_mappings() or by asset_transport's get_asset_url(). (TGUI also has helpers for this.) If this can not be easily done, you can bypass the cdn using legacy assets, see the simple asset datum for details.
CSS files that use url() can be made to use the CDN without needing to rewrite all url() calls in code by using the namespaced helper datum. See the documentation for /datum/asset/simple/namespaced for details.