* 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>
* 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>
* Emergency Shuttle Toggle (#53912)
Admins now have the option to enable or disable the shuttle(located in the admin tab).
Disabling the shuttle will basically pause it where it is, regardless(unless game is over). Until the admins enable it again. It will resume exactly back to where it was and continue from there. This is great for events. You can't recall or call the shuttle while it's disabled.
Admins also now get the option when calling the shuttle to disable the recall of said shuttle unless they cancel it or select enable shuttle.
* Emergency Shuttle Toggle
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Arcane finishes the fight and adds all the missing belt sprites and a worn sprite Admin Tool. (#53305)
* Arcane finishes the fight and adds all the missing belt sprites and a worn sprite Admin Tool.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Remove references to old singularity machines (#53509)
Removes the singularity generator and the particle accelerator. The former had no sprite, and the latter only existed because of a leftover type path. This does not affect gameplay at all.
Removes the "Start Singularity" verb that was only intended for debug use.
Fixes#53508.
* Remove references to old singularity machines
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Overhauls discord verification system (#53289)
This completely replaces the previous verification system, for one that
will interoperate with a discord redbot instance that uses the cogs
located at you github.com/optimumtact/orangescogs
This cuts out several steps in the system, but it also leaves alone the
existing notify system (which just uses a file list of discord ids) as a
record of who to notify
SQL changes required for the new database system
Version 5.10, 7 August 2020, by oranges
Changes how the discord verification process works.
Adds the discord_links table, and migrates discord id entries from
player table to the discord links table in a once off operation and then
removes the discord id on the player table
The user connects to any tg server, and uses the "Verify Discord
Account" verb, this generates a six word one time use token, with a 4
hour time validity period (defined as 4 hours from the timestamp value)
in the discord links table.
This one time token, and the ckey of the user are stored in
discord_links
At this point the entire DM side is done, this is all it does
* Overhauls discord verification system
Co-authored-by: oranges <email@oranges.net.nz>
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>
* [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 an atmos debugging tool and excited group visualizer (#52395)
* 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>
* Adds an atmos debugging tool and excited group visualizer
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
About The Pull Request
Adds extools-powered reference tracking. Includes a couple procs that retrieve the back and forward references of a datum - Back references let you see what is referencing your object and potentially preventing it from garbage collecting, and forward ones show you what your object in turn references. Also made a cool GUI to inspect and follow these references.
The tracking adds some overhead to all variable sets and list operations. Init time is increased by ~15%. I haven't actually benched it so it might impact the actual game less.
Why It's Good For The Game
no lagging caused by hard dels scanning the entire planet (once coders fix them)
* here goes nothing
no really this is basically nothing
* dme is less dumb
* aaaaa string files
* Card backend (#3)
* Adds card backend and hotloading
This is a combination of 2 commits.
OH SHIT THE SM IS ON FIRE
WE DONE LADS
* Woop
* Best we'll get
* fixed file system, courtesy of potato
* updated tools (thanks potato), now up to 40 cards
* Adds rarity (#4)
* Adds rarity
* just to be sure
* Adds it to cards
* Didn't read templates WHAT A NERD AMAROIGHT
* Commets
* Woop you'd think I'd know my own system
* There we go
* Fuck you EOF (#5)
* Makes rarity not suck (#6)
* Fuck you EOF
* Makes rarity not suck
* Auto stash before merge of "blueeyedwhitejumpsuit" and "origin/blueeyedwhitejumpsuit"
* Makes rarity work as expected, thanks dogman (#7)
* smolcards
* Adds datum cards (#8)
* Datum cards
* Some docs and a little bit of cleanup
* fuck
* problems be had
* Fuck (#9)
* fucko bungo RELASE ME FROM THIS HELL GIT
* datum FUCKING AHHHHHHHHHHH
* packs and games
* boomer mood (#10)
* Card debugging (#11)
* Adds debug vars
* that's a bit better
* shit
* unfucks rarity
* scales sorted
* That should do it
* Parity
* fun fact
* series 1 json
* and so it is done
* Don't need this, I'm dumb.
MacRo-Op???@?#?@??!#?!@
* BRAINDAMAGE
* resin redux, smaller cards
* shut up shut up shut up IT'S ASSUMED TYPE OK? *it's not all that bad*
* double rarity TABLELS, fixed the silly linter
* flippers and rarities
* guaranteed rarity, rarity tables
* fuck it let's ask
* resinfront
* 2560 core set
* fixes flippers
* template icon, extra variable juice
* ADDS SPEED (#12)
* FUCK FUCK FUCK SHIT I BROKE IT AGAIN
* Kills my dreams in the NAME OF SPEED
* and some cleanup
* Minor changes, some qol (#13)
* couple small changes, moved the datum procs around to make things cleaner, made some comments autodocced
* Let's be more clear,
* and a woooop
* Removing ids, carpel tunnel edittion (#14)
* Subsystem
* Carpel tunnel completed
* woop
* curator is no longer equipment
* I'm not dumb you're dumb (#15)
* minor rarity tweak
ladies and gents, it's finished
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* 10K hours
60,000 minutes
hahah
sure if you want a trailing newline i can do that
default cloak gets default skill
lazy list and no equip good
necessary ig
Update code/datums/skills/_skill.dm
Co-Authored-By: nemvar <47324920+nemvar@users.noreply.github.com>
Update code/datums/skills/gaming.dm
Co-Authored-By: Angust <46400996+Angustmeta@users.noreply.github.com>
WIP PDA skill monitor program
hacky fixes till i refactor skills
refactors skills a bit, adds admin skill edit menu
If you have a failing, it's that you're always demanding perfection
...IF you have a failing
i think that's it for the admin skill manger
appeases lord flord
bruh
level names
FUCK!!
unga
Update code/modules/vehicles/vehicle_key.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Update code/modules/admin/topic.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Update code/modules/admin/skill_panel.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Update code/modules/admin/skill_panel.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Apply suggestions from code review
frick
Co-authored-by: Rohesie <rohesie@gmail.com>
EOL and dumb spaces
more rohsie bait
tgui: Query Windows Registry for BYOND cache directory
hell yeah brother
update tgui and dmi
CLRF and bat file
typo ig
* tgui and new janicloak that i accdiently changed on another branch
* jani
* gamer cloak
* trim trailing whitespace
* tgui
* bruh
* variable renaming
An almost complete rework of how creating polls, their data and voting on them is handled.
Instead of repeatedly querying for poll data, running polls are loaded at runtime into poll_question and poll_option datums that stores all the needed variables for both. This datum is then used for creating, editing and accessing poll data. The database is only contacted when saving changes or votes.
Creating polls and options is now done with a html window instead of a series of popups akin to how the banning panel works. The form data is parsed and error-checked before passing to be saved.
This is done in two stages, first time a poll's details are entered and it must be initialized (created as a datum) before options can be added and all of both are saved to the database. Instructions about how this work are shown on the poll creation window.
A new field for polls has been added, subtitles, which is text only shown when a poll is opened by a player instead of on the list of polls. Intended so the actual question text can be kept to only a name and important information about a poll goes in a subtitle.
All polls can now have revoting enabled on them.
Polls can have a starting datetime specified, this can be in the past but why would you do that?
Polls and options can be edited once created, excluding the type of a poll. Doing so will by default clear all existing poll votes. Votes can also be cleared by a button.
The handling of how votes are processed has been adapted for the datum system but is on the whole not functionally that different aside from poll validation not being roughly copypasted across each poll type's vote proc
All poll tables now have a deleted column for retaining 'deleted' data.
poll_question has also gained the columns created_datetime, subtitle, allow_revoting, their function explained above, and a change of idx_pquest_time_admin to idx_pquest_time_deleted_id.
A stored procedure set_poll_deleted has been added. This is called when setting a poll as deleted to avoid needing 4 separate queries from the server or one fairly long 4-way joined
Create Poll verb is renamed to Server Poll Management
* demos (ported from yogstation)
rustg update + write with no format
use external hook for logging
use proper log vars
fix + clarifying comment
don't start the log
release build of rust-g
fix something caught by the lint
Update code/__DEFINES/subsystems.dm
Co-Authored-By: Jordan Brown <Cyberboss@users.noreply.github.com>
Update code/controllers/subsystem/demo.dm
Co-Authored-By: JJRcop <jrubcop@gmail.com>
Update code/controllers/subsystem/demo.dm
Co-Authored-By: JJRcop <jrubcop@gmail.com>
moves hooks out of a dedicated file
len = 0 to Cut(), remove semicolons
untyped loop
* updated rust_g
* 513 updates
* Unicode support Part 2 -- copytext()
This is the transition of all copytext() calls to be unicode aware and also some nearby calls in the same functions. Most things are just replacing copytext() with copytext_char() as a terrible character limiter but a few others were slightly more involved.
I replaced a ton of
````
var/something = sanitize(input())
something = copytext(something, 1, MAX_MESSAGE_LEN)
````
with a single stripped_input() call. stripped_input() already calls html_encode(), trim(), and some other sanitization so there shouldn't be any major issues there.
This is still VERY rough btw; DNA is a mess, the status displays are complete ass, there's a copytext() in code\datums\shuttles.dm that I'm not sure what to do with, and I didn't touch anything in the tools folder. I haven't tested this much at all yet, I only got it to compile earlier this morning. There's also likely to be weird bugs until I get around to fixing length(), findtext(), and the rest of the string procs.
* Makes the code functional
* Assume color hex strings are always # followed by ascii.
Properly encodes and decodes the stuff in mob_helpers.dm which fixes some issues there.
* Removes ninjaspeak since it's unused
Adds the "Play Direct Mob Sound" for (b)admins to enjoy. Pick a sound and a mob, and only the chosen mob will hear it. Button also available in the player panel.
Happy admins happy life
* Adds sorting to most input() lists.
* Sorted some global lists, added more input sorting
* Should now use correct sort everywhere.
* compiles
* Last fixes.
About The Pull Request
The thing other than ruining maps that I was working on
Refactors VV to use a more standard way of doing topic dropdown options rather than a huge if/else chain
Marking datums is now a right click option
Moves a few files around too/few procs
Why It's Good For The Game
Makes it easier to add more VV dropdown options in the future, and moving href list keys to defines make misspelling them harder.
Changelog
cl
add: Oh yeah also added a "return value of proccall" option for VV var editing.
refactor: View Variables has been refactored. It should now be easier to make VV dropdown options.
/cl
* Notify System
* V2
* Adds a hint
* Stoned fixes round 1
* Use grammar wells I can
* This didnt work
* I wish you could test on TGS without committing
* Jordie fixes round 1
* oops
* This took way longer than it should have taken
* Adds in endnotify for serverops
* Spacing
* Removes shuttle manipulator
* oops
* moves ui to ssshuttle
* fuck it lets just remove it.
* ooops
* Revert "fuck it lets just remove it."
This reverts commit 8a95879f21d3f4aad3d56e33fa90ebc1940c1e27.
* re-remove the old admin proc
Changelog
cl Naksu
admin: "Spawn reagent container" verb has been added to the Debug tab. It can be used to spawn reagent containers and grenades with fully customized contents.
/cl
* Podspawn admin verb, like spawn, but more IC
🆑 coiax
admin: New 'Podspawn' verb, which functions like 'Spawn', except
any atoms movable spawned will be dropped in via a no-damage, no-explosion
Centcom supply pod.
/🆑
Essentially, sometimes you want to spawn stuff in, quickly, in an adhoc manner.
Use of the full Centcom launchbay is fine if you're doing a full blown drop or event
or want some customisation, but sometimes you want a quick supply pod.
The admin smite "Supply Pod (Quick)" has been used for this purpose, but it has a side
effect of setting people on fire and damaging them, which isn't what you want
if it's just for spawning stuff in.
* Adds option to Game Panel->Create Object
* Code review I
Spiritual successor and extension to #17798, an almost entire rebuild of the SQL ban system backend and interface.
Bantypes are removed per #8584 and #6174. All bans are now 'role bans', server bans are when a ban's role is server. Admin bans are a column, meaning it's possible to ban admins from jobs.
Bans now have only an expiry datetime, duration is calculated from this when queried.
unbanned column is removed as it's superfluous, checking unban status is now done through checking unban_datetime. unban_round_id column added. Each ip and computerid columns rearranged so ip is always first, like in other tables. Bans now permit a null ckey, ip and computerid.
Ban checking is split into two procs now is_banned_from() does a check if a ckey is banned from one or more roles and returns true or false. This effectively replaces jobban_isbanned() used in simple if() statements. If connected a client's ban cache is checked rather than querying the DB. This makes it possible for a client connected to two or more servers to ignore any bans made on one server until their ban cache is rebuilt on the others. Could be avoided with cross-server calls to update ban caches or just the removal of the ban cache but as is I've done neither since I think it's enough of an edge case to not be worth it.
The second proc is is_banned_from_with_details(), this queries the DB for a role ban on a player's ckey, ip or CID and returns the details. This replaces direct queries in IsBanned.dm and the preferences menu.
The legacy ban system is removed.
The interfaces for banning, unbanning and editing bans have been remade to require less clicking and easier simultaneous operations. The banning and jobban panel are combined. They also store player connection details when opened so a client disconnecting no longer stops a ban being placed.
New banning panel:
Key, IP and CID can all be toggled to allow excluding them from a ban.
Checking Use IP and CID from last connection lets you enter only a ckey and have the DB fill these fields in for you, if possible.
Temporary bans have a drop-menu which lets you select between seconds, minutes, hours, days, weeks, months and years so you don't need to calculate how many minutes a long ban would be. The ban is still converted into minutes on the DB however.
Checking any of the head roles will check both of the boxes for you.
The red role box indicates there is already a ban on that role for this ckey. You can apply additional role bans to stack them.
New unbanning panel:
Unbanning panel is now separate from the banning panel but otherwise functionally the same.
Ban editing panel:
Actually just a modified banning panel, all the features from it work the same here.
You can now edit almost all parameters of a ban instead of just the reason.
You can't edit severity as it's not really part of the ban.
The panels have been tested but I've not been able to get my local server to be accessible so ban functionality isn't properly confirmed. Plenty of testing will be required as I'd rather not break bans.
cl
admin: Ban interface rework. The banning and unbanning panels have received a new design which is easier to use and allows multiple role bans to be made at once.
prefix: Ban search and unbanning moved to unbanning panel, which is now a separate panel to the old banning panel.
/cl
fixes#41106 since it'll have it's own fucking location.
cl ShizCalev
add: Admins can now personalize their asay message color on servers with the feature enabled.
tweak: Moved some admin only preference verbs out of the Preferences tab and to a new admin preferences tab to help unclutter it / prevent accidental toggling of fun things.
/cl
Note that the start of the admin message will still use the default formatting just so it can be quickly recognized as an admin message and not an OOC one.
MrDoomBringer
admin: Admins can now spawn things in ICly (as well as do a bunch of other cool new stuff) using the Config/Launch Supplypod verb!
code: also supplypods have been refactored