* Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#52761)
Adds SIGNAL_HANDLER, a macro that sets SHOULD_NOT_SLEEP(TRUE). This should ideally be required on all new signal callbacks.
Adds BLOCKING_SIGNAL_HANDLER, a macro that does nothing except symbolize "this is an older signal that didn't necessitate a code rewrite". It should not be allowed for new work.
This comes from discussion around #52735, which yields by calling input, and (though it sets the return type beforehand) will not properly return the flag to prevent attack from slapping.
To fix 60% of the yielding cases, WrapAdminProcCall no longer waits for another admin's proc call to finish. I'm not an admin, so I don't know how many behinds this has saved, but if this is problematic for admins I can just make it so that it lets you do it anyway. I'm not sure what the point of this babysitting was anyway.
Requested by @optimumtact.
Changelog
cl
admin: Calling a proc while another admin is calling one will no longer wait for the first to finish. You will simply just have to call it again.
/cl
* Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* A bunch of tweaks to holsters. (#53031)
Regular holsters:
Can no longer hold pulse carbines.
Can now hold toy pistols.
Detective's holster:
Can no longer carry ALL ammo box types, it's crazy this was possible.
Can now carry all handguns instead of only revolvers, their ammo, the mini e-gun, and the toy pistol and its magazines.
Chameleon holster:
Can no longer hold pulse carbines.
Can now hold all the ammo of guns it can hold (handguns and revolvers), the toy pistol and its magazine, and the small energy crossbow.
Operative holster:
Can now hold... basically everything gun related. All guns, all ammo (except ammo boxes), all grenades.
Descriptions of all holsters changed to reflect this.
* A bunch of tweaks to holsters.
Co-authored-by: uomo <51800976+uomo91@users.noreply.github.com>
* New breathtaking medical stack: the mourning poultice! (#52968)
New type of medical stack, obtainable from botany: the mourning poultice.
These poultices convert 10 brute and 10 burn into oxy per application, and can be used on corpses as well as the living.
It takes 20u bungotoxin, 20u aloe juice and 20u cellulose to create one stack.
I have split all the existing medical stacks into their own dmi, stacks_medical.dmi.
* New breathtaking medical stack: the mourning poultice!
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
* Utility belts can now hold airlock and decal painters. (#53027)
* Utility belts can now hold airlock and decal painters.
Co-authored-by: uomo <51800976+uomo91@users.noreply.github.com>
* Opacity refactor (#52881)
Moves all opacity var manipulation to a proc which sends a signal.
light_blocker element for movable opaque atoms made, which tracks its movement and updates the affected turfs for proper lighting updates.
has_opaque_atom boolean replaced by the opacity_sources lazylist to keep track of the sources, and a directional_opacity which serves a similar function but also allows for future expansion with on-border opaque objects (not yet implemented).
Some opacity-related sight procs optimized as a result of this.
Some variables moved to the object's definition.
A define or two added into the mix for clarity.
Some code cleaning, like turning booleans into their defines.
One file renamed for clarity.
Changelog
cl
balance: Mechs no longer block sight. It's a non-trivial cost for the lighting system with little to no gain.
/cl
* Opacity refactor
Co-authored-by: Rohesie <rohesie@gmail.com>
* Adds reminders as to which cult structures make which cult items (#52637)
Said reminders are present in both the descriptions of those cult structures and in the stack recipe menu for runed metal.
* Adds reminders as to which cult structures make which cult items
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Adds floral somatoray to botany belt (#53010)
Makes it so you can store the floral somatoray in the botany belt
* Adds floral somatoray to botany belt
Co-authored-by: Bampotio <69210247+Bampotio@users.noreply.github.com>
* Baystruments - I had two tgstation forks for some reason and had to delete one and that nuked the last PR (#51459)
Instruments and sound channels refactor.
* Baystruments - I had two tgstation forks for some reason and had to delete one and that nuked the last PR
* Fixes dme dupe
* Fixes dme dupe (#52954)
Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Removes singularity, tesla, TEG and Mrs. Pacman. Changes supermatter overcharge delam. (#52873)
About The Pull Request
This PR removes the tesla and Mrs. Pacman from the game. The title is actually misleading, the TEG and singularity are still in the game but inaccessible and the singularity no longer has its generator.
Field generators and tesla coils have been kept because shocking your fellow man is the greatest sensation of power in the world.
The overcharging delamination for the supermatter has been replaced by the release of 2500 mols of tritium at 500,000 kelvin. An engineer who's really hateful of the station can use this for fusion, if they desire. Otherwise, its a tritium fire in engineering alongside the explosion. This will probably be changed in the future to be more potent since the explosion will pretty much just space all the tritium away.
Singularities no longer produce radiation. Now, keeping one is less about making power and more about making a statement, especially since you need to delaminate an SM shard for it.
Why It's Good For The Game
Having power optimized for one generator (SM+Turbine) will allow balancing to be feasible, also oranges wanted this. The other generators may later return but with tweaked values and different roles.
Changelog
🆑
del: Nanotrasen has removed their outdated teslas, singularities, TEGs and Mrs. Pacman generators from their servers and warehouse.
/🆑
* Removes singularity, tesla, TEG and Mrs. Pacman. Changes supermatter overcharge delam.
Co-authored-by: CRITAWAKETS <sebastienracicot@hotmail.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>
* Personalized combat messages part 2 (#52890)
Adds more "personalized" combat messages for all participants in a fight: the attacker, the victim and the spectators
* Personalized combat messages part 2
* Update misc.dm
Co-authored-by: kingofkosmos <riki.sundberg@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
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.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Removes annoying references from admin keycard airlocks, makes the descriptions more helpful for finding the correct door (#52846)
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.
* Removes annoying references from admin keycard airlocks, makes the descriptions more helpful for finding the correct door
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Fixes Fly Swatters Not Obliterating Spiderlings (#52857)
* 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
* Fixes Fly Swatters Not Obliterating Spiderlings
Co-authored-by: Paxilmaniac <57122098+Paxilmaniac@users.noreply.github.com>
* You can now craft cable restraints directly from the radial menu (#52614)
* You can now craft cable restraints directly from the radial menu
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Intercoms now have appropriate attack_tk_grab response (#52835)
Due to issues with item interaction code, this PR means the intercom is now viewable with telekinesis but is not interactable unless adjacent.
* Intercoms can now be interacted with via the telekinesis mutation
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Adds a signal for storage exit and insert, uses it to make trading cards zoom properly (#52737)
* Adds a signal for storage exit and insert, uses it to make trading cards shirk properly
* Adds storage param
* Adds a signal for storage exit and insert, uses it to make trading cards zoom properly
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* You Can No Longer Place Force Fields On The Same Tile As Yourself (#52569)
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
* You Can No Longer Place Force Fields On The Same Tile As Yourself
Co-authored-by: Paxilmaniac <57122098+Paxilmaniac@users.noreply.github.com>
* immobilized (#52578)
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.
* Immobilized trait
Co-authored-by: Rohesie <rohesie@gmail.com>
* Fixes nations and banners not using global job lists (#52763)
* Fixes nations and banners not using global job lists
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* 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>
* Dropping Now, Stand By For Titanfall: Mecha Orbital Pad (#52224)
* 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>
* [READY]Dropping Now, Stand By For Titanfall: Mecha Orbital Pad
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Petting more animals now causes floating hearts and a moodlet, borgs can now pet animals. (#52594)
* 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>
* Petting more animals now causes floating hearts and a moodlet, borgs can now pet animals.
Co-authored-by: uomo <51800976+uomo91@users.noreply.github.com>
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Cleans up some refs (#52713)
* clin
* Might as well
* Unreferenced datums autodel + lame proc
Co-authored-by: TiviPlus <TiviPlus>
* Cleans up some refs
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>
* Merge pull request #52725 from ShizCalev/pai-fixes
Pai cable fix, adds icon for when new personalities show up
* Pai cable fix, adds icon for when new personalities show up
Co-authored-by: skoglol <33292112+kriskog@users.noreply.github.com>
* RCD Additions + Cyborg RCD Upgrades (#52018)
* 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
* RCD Additions + Cyborg RCD Upgrades
Co-authored-by: Whoneedspacee <yougotreallyowned@gmail.com>
* Contributes more missing belt, back, and otherwise ERRORing sprites. (#52670)
* I'm crying over all these beeeeeeelts
* Removes ?
* Provides some close enough substitutes for inhands
* Contributes more missing belt, back, and otherwise ERRORing sprites.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Confusion will no longer continue to confuse after being cured (#52286)
* 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
* Confusion will no longer continue to confuse after being cured
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>