Removes the ability for tesla coils to generate power with more then 85% efficiency.
Cleans up the remainder of my zap_act refactor, making the proc better fit its usecase and removing some unneeded code.
Adds a check in the tesla coil zap() proc that makes sure we're not trying to use power that's not there.
Removes some seemingly complex math from said proc, replaces it with a static 20% draw * the efficiency.
bitflag list construct added: an associative list of bitflags for cheap and quick element comparison between two lists using the same system.
canSmoothWith list turned into a bitflag list.
smoothing_groups list added to substitute the type path list.
smoothing procs turned into atom procs, refactored and optimized a bit.
smooth directions redefined in order to fit in 8 bits for a future smoothing system
some variable names changed, foreseeing a second smoothing system
SMOOTH_OBJ flag added, for things that need to scan turfs for smoothing. The old locate() optimization has the risk of returning false negatives by finding a child and returning null while there might be one of the wanted type as well, as it doesn't match the type exactly.
SMOOTH_TRUE and SMOOTH_MORE condensed into SMOOTH_CORNERS. The old behavior can be replicated using smoothing groups without loss.
Does very minor code cleanup.
Processing-wise didn't find a noticeable difference. The system loses on init a bit by setting the bitflag_lists, and by scanning whole turf contents for object smoothing (increasing accuracy), and gains by making less checks per target to smooth, through the same bitflag_lists.
Memory-wise there should be a small improvement, given that on the old system we had 63512 canSmoothWith lists (a few typelists, most unique), and on this new system canSmoothWith + smoothing_groups are both bitflag_lists from the same pool, totaling 46 in number.
Could be tested a bit to see if I missed any icons not properly smoothing.
This adds the Account Registration Machine to the game, it's obtained at the computerized recordkeeping tech (Rather far in to the tech tree) and only obtained from the security lathe to prevent access from being too widespread, because I don't trust players have access to this until at LEAST half the shift has gone by. What this enables you to do is to create new accounts for blank IDs. The accounts won't have a parent payment account until actually assigned a job by a card console, but for all intents and purposes they'll act and interact like a standard, station bank account.
Rewrites the asset_cache system to handle sending assets to a CDN via a webroot.
see https://github.com/MrStonedOne/tgstation/blob/asset-cdn/code/modules/asset_cache/readme.md
Fixed a lot of bugs with assets, removed some dead code.
Changes:
Moved asset cache code to transport datums, the currently loaded one is located at SSassets.transport, asset cache calls made before the config is loaded use the simple browse_rsc transport.
Added subsystem call for when the config loads or reloads.
Added a webroot CDN asset transport. assets are saved to a file in a format based on the file's hash (currently md5).
Assets that don't use get_asset_url or get_url_mappings (such as browser assets referred to by static html files like changelog.html or static css files) can be saved to browse_rsc even when in cdn asset mode by setting legacy to TRUE on the datum returned by register_assets
Added a system for saving assets on a cdn in a hash based namespace (folder), assets within the same namespace will always be able to refer to each other by relative names. (used to allow cdn'ing font awesome without having to make something that regenerates it's css files.).
The simple/namespaced asset cache datum helper will handle generating a namespace composed of the combined md5 of everything in the same datum, as well as registering them properly.
Moved external resource from a snowflake loaded file to a config entry, added it to resources.txt
To ensure the system breaks in local testing in any situation that wouldn't work in cdn mode, the simple transport will mutate the filenames of non-legacy and non-namespaced assets and return this with get_asset_url.
Simple transport's passive send of all roundstart assets to all clients is now a config that defaults to off. this is to break race conditions during local testings from devs accidentally relying on this instead of using send() properly.
cl
refactor: Interface assets (js/css/images) can now be managed using an external webserver instead of byond's one at a time file transfer queue.
admin: Adds admin verb toggle-cdn that allows admins to disable the external webserver asset transport and revert to the old system. Useful if the webserver backing this goes down (thanks cloudflare).
config: New config file, resources.txt, (must be loaded by an $include statement from the main config)
server: The external_rsc_urls.txt config has been moved to the main config system.
/cl
Porting notes:
Interface webpages must refer to their assets (css/js/image/etc) by a generated url, or the asset must register itself as a legacy asset. The system is designed to break in localtest (on simple/legacy mode) in most situations that would break in cdn mode.
Requires latest tgui.
The webserver must set the proper CORS headers for font files or font awesome (and other fonts) won't load.
/tg/'s webserver config: https://gist.github.com/MrStonedOne/523388b2f161af832292d98a8aad0eae
No more cheese and titanic keycards, they are now yellow and blue. The descriptions now point out which keycard they require in their description, because players are very forgetful and when you are clueless in space station thirteen the first thing you do is examine.
* snap.ogg
adds spiderlings to the list of things the swatter is strong against
* oops
forgot a comma
* epic phonepost webedit
changes one word in the item description
About The Pull Request
Adds a check to the force field projector that prevents you from placing fields on the same tile as yourself.
Why It's Good For The Game
Some people have been using this recently in fights to become temporarily unclickable, which is kinda bad if you ask me.
Changelog
cl
tweak: you can no longer place force fields on the same tile as yourself to become god for 30 seconds
/cl
Adds an immobilized trait.
Adds procs for several variable changes so we can respond to their events.
Adds some signals for said variables changing.
Need to turn the variation in number of usable legs and arms (get_num_legs() and get_num_arms()) into events we can respond to, but they are pretty annoying to do so. Probably for a different PR.
* Station pets!
* Makes Lia and Sgt Araneus actual subtypes.
* Fixes some vars.
* Turns on AI for Cayenne and Lia, makes Lia neutral faction.
* Gives Lamarr a description.
* Pettable status and emotes for HoS and syndicate pet..
* Tom the mouse consistency.
* Comment correction.
-bitfielded a bunch of bools on /area, I left some untouched cus they get called a lot
-Unused vars
-Fixed a var pretending to be a fake bool
-Probably more
* mecha orbital pad
* mecha orbital pad 2
* mecha orbital pad 3
* mecha orbital pad 4
* mecha orbital pad 5
* mecha orbital pad 6
* mecha orbital pad 7
* fixing conflicts
* Apply suggestions from code review
Co-authored-by: Rohesie <rohesie@gmail.com>
* conflicts and map and tgui and icons bro
* fix
* wa
Co-authored-by: Rohesie <rohesie@gmail.com>
* tguy
* Removed eslint ignore
Shouldn't be impacting the build.
* Update code/game/machinery/computer/mechlaunchpad.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* some fun stuff
* cool desc
* final changes hopefully
* late initalizing
* bitflags
* one last thing
* rohesie stuff
* Update tgui.bundle.js
* mm
* Update tgui.bundle.js
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Petting.
* Oops.
* Update code/modules/mob/living/simple_animal/friendly/penguin.dm
Co-authored-by: Fikou <piotrbryla@onet.pl>
* Working on underlying redo.
* More.
* Fixing to work with new emote system.
* Move proc and defines to living instead of mob.
* ...Moves it to simple_animal instead.
* Revert cat crate fix (other PR handling), fixes emote thing.
* Appveyor did not care for that.
* Comment typo.
* Very descriptive var name.
* Borgs can now commit pet.
* sweeps up missing manual_emotes, adds a hop to link for ghosts, and moves the name preface to ghost only
* More descriptive vars and proc name.
* Better descriptive vars.
* Making the borg code slightly nicer.
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* adds directional window setting for normal grille window mode
adds furnishing upgrading to the rcd for chairs, stools, tables, and glass tables
both of these new introductions have their direction based on where you are facing when the timer for the build finishes
* adds the luxary rcd cargo pack with a loaded rcd, all 4 upgrade disks, and 3 extra compressed matter cartridges
* adds the furnishing upgrade to the techwebs
allows cyborgs to install rcd upgrades except silos
allows loading of metal and matter into the rcd by simply clicking on the thing you want to insert
lowers price of the cargo pack and removes the silo upgrade
adds banned upgrades var to the rcd
* you can now create windoors and deconstruct them as well
you can now deconstruct tables
doubles the price of the cargo pack for rcds
* removed cargo pack
* changes define to bitshift flags
moves matter addition to rcds to a proc on sheets
* matter amount is now a stack variable
* Confusion will no longer continue to confuse after being cured
* Grammar comment fix
* Move to status effect
* Remove test per request
* Make confusion a status effect, confusion curing now completely neuters the confusion
* set_confusion changes, get_confusion
* Fix confusion going down twice per tick
* Change strength = to proc
* Move procs to status_procs
Defined all the existing light_color values.
Moved their definitions to colors.dm
Made white the default color. It was so already, but that was very obscured.
Moved the atom light-related variables to the atom definition.
Wrapped changes to variables such as light_color into procs that report the event through signals.
Moved the light_on variable to the atom level, also adding a signal for its changing, to represent toggling lights.
Cleaned up a little bit of code in where new variables were defined before redefinitions.
This is all atomization to reduce changes in #52413
None of this affect gameplay at all, it's all code cleaning and refactoring.
There's more colors to standardize, a search for color = will find lots of targets, and I see little need to have both the LIGHT_COLOR and COLOR patterns, but I don't want to make this PR bigger than it already is.
* Adds an atmos debugging tool and excited group visualizer
* rebuild moment
* yarn install -> yarn run build
* Sigh
* Fixed UI, did not test, needs a rebuild.
* Proper flexing
* Adds varied colors, improved ui courtusy of stylemistake:
* Fixes a runtime, updates tgui
* added superconductors, cleaned up some shitcode, removed a clashing color
* Woop
* Speed
* rebuild
* Adds a tick count
* begone auto-update
* color defines
* rebuild moment
* color improvements, fixes updating
* adds another preprocesser define to handle showing max shares in the ui
* test of application system?
* patches up some display issues, allows for smooth flowing from one group to another
* overlay-ified
* client testing
* dmi moment
* plane master
* it fucking works
* size change
* passthrough
* rebuild moment
* adresses review concerns, toggles active turf vis on when testing
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>