* Converts A && A.B into A?.B (#54342)
Implements the ?. operator, replacing code like A && A.B with A?.B
BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
* Converts all A && A.B into A?.B
Co-authored-by: ZeWaka <zewakagamer@gmail.com>
* Adds a living time config to the panic bunker (#54341)
* Adds a living time value to the panic bunker, so you can keep people out based on time spent playing the game
* updates the admin verb, and enables %minutes% as an option
* Makes a proc call more clear
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* than
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Adds a living time config to the panic bunker
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Keybinding Conflicts now wait 5 seconds before being announced (#54152)
* Keybinding Conflicts now wait 5 seconds before being announced
* Update preferences_savefile.dm
Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Merge pull request #54101 from Couls/silence-wench
unbinding movement and communication should work now
* unbinding movement and communication should work now
* Update preferences.dm
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* adds a new default "dance" suicide. (#54040)
About The Pull Request
This adds a new default help intent suicide, a dance.
Why It's Good For The Game
I think fondly of our suicides getting more and more fun over time, and even the defaults go from "bites his tongue" to now "getting high on life" and I think this is a fun new default suicide.
Changelog
cl
add: adds a new default suicide, a dance.
/cl
* adds a new default "dance" suicide.
Co-authored-by: anconfuzedrock <anconfuzedrock@users.noreply.github.com>
* Communication hotfix of a hotfix (#54091)
remove an endless recursive loop
* Communication hotfix of a hotfix
Co-authored-by: Couls <coul422@gmail.com>
* newly added keybinds no longer need savefile updates (#54050)
Keybinds check if there are any new keybinds when loading preferences now
If there's a conflict it doesn't bind the key to anything
* newly added keybinds no longer need savefile updates
Co-authored-by: Couls <coul422@gmail.com>
* Restyles Stat Panel, Adds Subpanel Sub-Categories (#53947)
I re-styled the CSS for the stat panel in hopes to make it look nice, and I also added the ability to use sub-categories (currently a single level) of verbs using a . (period), an example being Admin.Fun instead of the previous Admin - Fun. This now results in a sub-category being automagically generated in the stat panel.
* Restyles Stat Panel, Adds Subpanel Sub-Categories
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* Remove tab before names in Who for deadmins (#53930)
Previously, names were prefixed with tabs for deadmins. This makes the output look significantly worse.
* Remove tab before names in Who for deadmins
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Change the "Who" verb to display a table rather than a list (#53839)
Doesn't apply for active admins since those have longer lines that wouldn't fit well.
* Change the "Who" verb to display a table rather than a list
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Block movement now locks turning, migrate old save files to Ctrl (#53871)
The block movement key now correctly locks turning like it used to.
Old save files are now migrated to Ctrl if they didn't bind it to anything before. This correctly replicates the old behavior.
* Block movement now locks turning, migrate old save files to Ctrl
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Add additional info to a runtime situation to be able to handle it better in the future. (#53727)
Added two CRASHes for two areas where this could go wrong to better understand what and why this is happening.
* Add additional info to a runtime situation to be able to handle it better in the future.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Optimize stat panel and fix guardian verbs (#53463)
Optimizes stat panel code for better performance, including icon caching and removing some unnecessary processing
Also fixes#53432fix#53381fix#53724
Changelog
add: icons are back on alt clicks
fix: horrible performance from alt clicking turfs with multiple objects
tweak:browser should notify the SS when it's ready to receive data
* Update statbrowser.html
* Apply suggestions from code review
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* hidden = TRUE
* almost ready
* Browser should notify when ready to receive data
* Apply MSO's suggestions
* reset cache if something in it gets deleted
* Fix runtime
* fix my stupid code
* send href_token when adding admin tabs
* fix an issue with cyborg suit topic
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Optimize stat panel and fix guardian verbs
Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Avoid resizing chat to nothing in the Fit Viewport verb (#53393)
* Avoid resizing chat to nothing in the Fit Viewport verb
Co-authored-by: Tad Hardesty <tad@platymuus.com>
* Fix Alt Clicking opening up a window and add back some object verbs to the browser stat panel (#53369)
Fixes some more issues with browser stat panel
- Alt clicking items in the listed turf tab doesn't open up a popup
- Toggle suit sensors button missing
* Fix Alt Clicking opening up a window and Add back some object verbs to the browser stat panel
Co-authored-by: Couls <coul422@gmail.com>
* Tweak file upload limits (#53371)
halfed it for players, more than doubled it for admins. (mainly for map
templates, admins playing 2mb sound files using this will be punted
into the cafeteria)
Could use with being more refined, per-extention, maybe have sound have
a seperate check since thats a function of size*players, and the rest
of this is not.
* fucks with upload limit
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is
Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Couls <coul422@gmail.com>
* Smooth Movement: Resurrection: Resurgence: Revengeance 4: The Return of Smooth Movement: Smooth Edition Director's Cut (#52515)
Automatic glide size adjustment based on move delay.
Essentially a port of https://github.com/yogstation13/Yogstation/pull/8132 but that was mostly my code with some fixes.
Why again? well it turns out the recent byond fixes to glide size actually worked and solved the issues that were unsolvable.
https://file.house/0B3u.mp4
Glide size no longer incorrectly scales at fps, so it works as intended at any framerate with the only stuttering being normal byond suck stuttering.
* Smooth Movement: Resurrection: Resurgence: Revengeance 4: The Return of Smooth Movement: Smooth Edition Director's Cut
Co-authored-by: Rob Bailey <actioninja@gmail.com>
* tgchat (#52426)
Replaces goonchat with a tgui based chat panel
Fixes#52898Fixes#52663
It is as fast as goonchat was (if not faster in certain circumstances), and is very extensible. It has all the necessary code for sorting messages into categories, which means that one of the next features will be multiple tab support.
Additional features that you will get with tgchat right now:
Massively faster server-side performance compared to goonchat, especially if batching multiple messages to one client.
Message persistence across rounds and reconnects. (All messages are stored client-side in IndexedDB)
More robust scroll tracking. If you scroll up, it will not change the scroll position on new messages like goonchat did.
Multiple message combining. (Currently set to combine up to 5 messages over last 5 seconds).
If using the highlighting feature, it highlights the whole message as well as the matching word.
"Now playing" widget, with preview of the song title, a knob for adjusting the volume and a stop button.
Architecture is as following:
```
to_chat() -+
|
SSchat
(queue, batching)
|
window.send_message()
|
v
+-------------+
| tgui-panel |
|+-----------+|
|| tgchat ||
|+-----------+|
+-------------+
```
Subsystem is basically goonchat, but without all the garbage that slows the servers down (string concatenation, double urlencoding, sanitizing, etc). Now, instead of all that, it's being slowed down by json_encode in /datum/tgui_window/proc/send_message, which IMO is completely worth it, and allows sending various templates and widgets to tgchat.
/datum/tgui_window abstracts the whole window away from you, establishes a nice message-passing interface between DM and JS, with two message queues on each side, automatically loads js/css assets for you, basically does everything. You as a developer only have to worry about sending/receiving messages and write javascript.
tgui-panel is a slimmed down version of tgui, and functions as a container for various widgets, and tgchat is one of them. It of course can be expanded with more stuff.
It's also a separate entry point and a JS bundle, so it's not bloating the main tgui bundle, and is currently sitting at about 230kB.
* tgchat
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* [Ready] CDN browser assets! (#52681)
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
* [Ready] CDN browser assets!
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Adds a recommended fps option. (#52850)
Adds a recommended fps option. Setting fps to -1 now sets client.fps to RECOMMENDED_FPS.
Sets recommended fps as the default option for new players.
Current value for recommended fps is 40.
* Adds a recommended fps option.
Co-authored-by: nemvar <47324920+nemvar@users.noreply.github.com>
* Species code can go fellate itself (#52774)
Fixes#51787Fixes#44981
Species code is the fucking worst.
Lizard tails and spikes are broken outside of admin intervention and neither work nor apply when spawning into the game from the main menu.
Functionality was broken in #49062
Functionality was further broken in #49771
This code makes my soul hurt. I don't have the time or patience to refactor it. This should work around all the functionality broken in the above two PRs until such a time as someone fixes this mess.
If anyone does that, may God have mercy on their soul, for this code has none.
* Fixes lizard tails and spines.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Refactors area stuff (#52751)
-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
* Refactors area stuff
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
* Cleanup up all instances of using var/ definitions in proc parameters. (#52728)
* var/list cleanup
* The rest of the owl
* plushvar bad
* Can't follow my own advice.
* Cleanup up all instances of using var/ definitions in proc parameters.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Robust savefile versioning (#52549)
tl;dr: savefiles now update all character slots when the version is bumped, and saves the updated savefile to disk. It also backups the pre-update version. Later on we can look at just using this backed up version if the server's savefile version goes down, indicating a revert.
* [Ready] Robust savefile versioning
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* pierce the heavens
* starts doing projs
* continue pierce
* before armor
* before sharpness redefine
* rename sharp defines, before further implementation
* finishing undoing atk_type back to sharpness
* neatens up sharpness defines, FALSE -> SHARP_NONE
* more piercing, removes brute damage bleed, bubblegum no longer wound
* starts letting embeds get in on the fun
* half with embed
* work on dismembering
* continued embed work
* more moving bandaging to limbs
* more dismemberment work
* removing embed pierce stuff
* tweaking bullets
* more docs and work on dismemberment
* spans, piercing, guns
* dismemberment and scar fixes
* bee changes
* bullets embedding
* more bullet and dismember work
* dismemberment, surgery, piercing, formaldehyde,
* pleases travis
* pierce smite
* nicer on blood
* Auto stash before rebase of "tgstation/master"
* more neatening
* wounds only consider up to 35 damage, wounds on l6 and 762
* updates hulk
* balance
* defines
* lower slug to 50 brute to accommodate wounds
* adds differentiation for having flesh/bones/both in mobs
* moves scar descs to json, renames organic_state
* excises removed healing skill
* fixes logs, inconsistencies, some balance changes
* untab
* slight compress
* a
* kills pointed global list
* dmdoc
* halfway through roh
* finishes roh review
* okay NOW i finished roh's reviews
* roh roh roh your boat
* gently down the stream
* global lists
* list ops, fix scanner for bone gel improvised fix
* travis moment
* sounds added and moved
* pellet clouds can join the fun fully, slight gun balancing for wounds
* doc moment
* unconflicts myself
* update hulk
* Update code/_onclick/item_attack.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* crying ascii face
* final rohview
* oops
* final final
Co-authored-by: Rohesie <rohesie@gmail.com>