## About The Pull Request This PR takes the improvements from: - #95313 And builds on it quite a bit. Slots now have: - New symbol icons based on SS13 objects instead of Font Awesome icons - Several new slot machine subtypes for every department - New slot machine random spawner that is used to replace all slot machines on all maps - ~~Greyscaled the slot machine sprite and replaced it with GAGs (to color them by department)~~ - New rare trap/hazard abilities depending on symbols (syndiebomb = flashbang, handcuffs = cuff, singulo = shock, etc.) - Syndie slot machine that comes preinstalled in all syndie outposts/nuke bases - Slot machines circuits can be configured with a screwdriver to change the type and emagging results in the syndicate version - Tweaked the pixel offset for the jackpot flashing icon so it is in the correct position - Improved the name generator with more adjectives and nouns for all subtypes (ex. clown slot machine = "Lucky Giggles") - IDs and Department budget cards can be linked as the owner of the slot machine, however NT takes a 40% cut off the profits since jackpots/bonus spins are paid out by NT ##### And yes... there is a clown and mime subtype... honk ## Why It's Good For The Game <img width="1503" height="791" alt="dreamseeker_t8lLODECva" src="https://github.com/user-attachments/assets/597355be-aee0-483a-82a4-7f8d6fa9ae90" /> Better slot machine icons and code. ## Changelog 🆑 add: To help cover budget expenses, NT has redesigned and installed new slot machines that are themed by department. Slot machines can also be linked to bank accounts via ID cards or department budget cards. NT takes a 40% cut of profit to payout major jackpots and bonus spins. Please gamble responsibly. map: Replaced all slot machines with slot machine random spawners. Added syndicate slot machines to Syndicate bases and nuke outposts. /🆑 --------- Co-authored-by: Lucy <lucy@absolucy.moe>
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.