* runtime fix for borgs cryoing with upgrade modules + no more mmi laying around after they cryo, and various other runtime fixes
* Fixing conflicts
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Printer Circuit Component (#62012)
I'm adding a circuit component that can print text string on a paper object in a variety of colors and font typefaces (currently only web-safe ones are available, maybe i'll add some fancy ones in the future but they'd need to be imported either through @ import of @ font-face in a separate CSS not imported by every tgui UI).
It's important to note that because the UI sanitizes new text inputed by users and not what's already written on the paper (so the pen_color and pen_font don't be purged in the process), we can't safely have these strings "printed" into the info variable directly, because of that these values will be stored in two new list variables, one for the text and one for font color, face and the signature. When the paper sheet UI is opened, these will be sanitized and then parsed into the text, so the next time the paper is edited we can clear these two lists.
Obviously better than a hacky byond proc - parsemarkdown() is outdated af -, albeit a bit messy... like the rest of paper code.
Requires #62033.
* Printer Circuit Component
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Adds SHOULD_NOT_SLEEP to Destroy. Why didn't we do this before. (#61943)
* Adds SHOULD_NOT_SLEEP to Destroy. Why didn't we do this before.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Allows emagged and syndicate borgs to self-detonate (#61915)
Once upon a time, when borgs could access machines from any distance once the window was open, borgs could self-detonate as a combat strategy. At some point, machine access for borgs was confined to being nearby the device, which removed self-detonation (except when near the console) as a side effect. This PR re-adds the ability for emagged and syndicate borgs by placing a confirm-type button into their RoboTact app (Actions section, under the Status tab).
Stunned or locked borgs cannot self-destruct.
Additionally, logging for borg detonations has been moved out of the robot console and into the borg self_destruct() proc, to avoid duplicate code, and emagged borgs now have their tablet theme and icon changed to syndicate versions.
* Allows emagged and syndicate borgs to self-detonate
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Add local APC cache to /area (#61655)
About The Pull Request
for(var/obj/machinery/power/apc/APC in GLOB.apcs_list) in get_apc makes chuck norris shed a tear
Why It's Good For The Game
tears are bad
Changelog
cl
code: /area now retains a local reference to the APC in the area, if any
/cl
* Add local APC cache to /area
Co-authored-by: esainane <esainane+github@gmail.com>
* Available/availability grammar fixes (#61753)
This PR fixes a few misspellings of the words "availability" and "available" that I could find in the codebase. The only player visibile fix is for the Plexagon HR Core app, where "availability" was misspelled.
This PR is a spiritual successor to #53046
* Available/availability grammar fixes
Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
* Fixing the chat client (#60920)
Corrects the chat restriction on using ASII characters only. (This PR was created for Skyrat-TG, but the collaborator of that repository asked me to adapt this PR for tgstation.)
This will fix#54598
In the original code, the chat client uses only ASII standard characters, which is very limited in its capabilities. For example, does not allow you to use specialized characters, which would have taken the atmosphere of the old messengers, as well as regional characters. The lack of regional characters complicates the game for non-English-speaking servers. For example, the Russian-speaking player community Space Station 13 The Fluffy Frontier uses the original Skyrat-tg build. And the players of this community almost do not use the chat client to communicate due to the fact that they can not use Cyrillic characters.
* Fixing the chat client
Co-authored-by: twilightwanderer <88540658+twilightwanderer@users.noreply.github.com>
* change job slot logging to use job_debug (#61688)
admin topics for updating available jobs weren't logged at all and that was kinda dumb
john willard logged the console to game which i disagree with so i want to move that also
* change job slot logging to use job_debug
Co-authored-by: windarkata <27014495+remove32@users.noreply.github.com>
* Changes paper bins to be easier to use (#61429)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
* Changes paper bins to be easier to use
Co-authored-by: Superlagg <sprambersonson@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
* [TM Candidate] Overhauls orbit and POI code to fix part of issue #61508 where players could observe /mob/living/new_player on the lobby.
* E
* Missed merge
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* tgui Preferences Menu + total rewrite of the preferences backend
* nah, we dont need to ping those people
* trying to remove the funny stuff
* unmodularizing this
* prefs reset
* this may need to be reverted, who knows
* okay, this part
* perhaps
* EEEEEEEEE
* unsanitary
* E
* Stage 1 + loadout system
* more fixes
* E
* I mean, it launches?
* More fixes and reorganisation
* E
* customisation code is spaget.
* disable ERP prefs
* Update erp_preferences.dm
* Update erp_preferences.dm
* E
* Slowly getting there
* It may be time for help :)
* tri...colors... help
* preferences now pass preferences
* Update dna.dm
* Fuck this man
* missing savefile return, set_species works, removed dumb stuff from updateappearance
* https://github.com/Skyrat-SS13/Skyrat-tg/pull/8199
* https://github.com/Skyrat-SS13/Skyrat-tg/pull/8224
* https://github.com/tgstation/tgstation/pull/61519
* https://github.com/Skyrat-SS13/Skyrat-tg/pull/8278
* e
* le butonAZARAK HELLO
* hhh
* Proper recognition where it's due, MrMelbert!
* EEEE
* examine block
* Better gen hit sounds from whitedream
* final loadout touches, more bug fixes im sure to come
* i said there would be bugfixes
* Update LoadoutManager.js
* Missing preferences in the html menu
* LIVE TESTING PHASE BABY
* Update LoadoutManager.js
* EEE
* LAUNCH TEST FIRE
* Update job.dm
* Update new_player.dm
* 50gb DAY ONE PATCH
* EEE
* Update preferences.dm
* buggle fixes
* Update examine.dm
* >LOOC starts on
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Eng/Atmos/CE tablet come with Canary (Alarm monitor) preinstalled (#61322)
Tablets are often found thrown around a corner of the foyer, and I'm tired of bullying people to use it at this point. It's IMO the most powerful tool engineering has to keep the station in good condition but only a few players ever download anything in a round.
So let's make their lives easier, engineering tablets come preinstalled with Canary and the Atmos with the Gas Scanner too. (Even if I never saw anyone use that, just because the tablet comes preinstalled with the sensor that enables it.)
Canary is a powerful tool to assist on station maintenance that is not well known to the player, maybe this will get people curious enough to open it and start to enjoy having all alarms green as much as I do.
Nothing hurts more than a small breach at science that goes unfixed for half an hour and slowly creep in turning the station into Firelock hell... and nothing is funnier than screaming "Atmos alarm at the HoS Office!" the second it pops up only for the AI to lock the shutters down and tell sec that a random lizard broke the window and is trying to Esword the HoS locker.
* Eng/Atmos/CE tablet come with Canary (Alarm monitor) preinstalled
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* small refactor to can_interact() so that borg range is fully respected (#60693)
Its a relatively small refactor that changes the previous machinery "can_interact()" proc that literally did a full override despite half of their checks already existing in not one, but TWO parent procs, so i removed the redundant checks, added callbacks to its parents and then added the cyborg range check on the can_interact_with() itself. in doing so i also moved the interaction range var from silicons only, to mobs as a whole and defaulted it to a single tile, silicons override it to 7 (so pAIs and borgs like before) but then set AI and AI.eye to "null", because i have a check in can_interact that if there is no range set, then the range is effectively unlimited. and i even added code for when AI is carded and their wireless transmission is disabled it sets their range to "0" aka, it has no range to do anything even if it could
this was really complicated for me so despite my extensive testing it probably would be a bad thing if any of you want to test my code yourself to ensure there isnt a bug with this (theres no runtimes ive come across)
note: i did a lot of searching and going through machinery to ensure i caught all the little snowflake overrides and added can_interact() checks to them, but i may have missed one or two things, especially maybe a altclick or ctrlclick somewhere, however i believe i caught most of them
one nice side effect of this refactor is that you can actually set another mobs range to something other than 1 tile and they can interact at range, rather than only silicons getting this ability, an admin could VV a human to have a 3 tile arm reach as a meme if they want
* small refactor to can_interact() so that borg range is fully respected
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Del The World: Unit testing for hard deletes
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Changes how weather sends sound to players, reduces sound loop overtime (#59284)
* Converts looping sounds from a list of play locations to just the one
* Updates all uses of looping sounds to match the new arg
* Adds an area based sound manager that hooks into looping sounds to drive the actual audio. I'll be using this to redo how weather effects handle sound
* Some structrual stuff to make everything else smoother
Timers now properly return the time left for client based timers
Weather sends global signals when it starts/stops
Looping sounds now use their timerid var for all their sound related timers, not just the main loop
* This is the painful part
Adds an area sound manager component, it handles the logic of moving into new areas potentially creating new
sound loops. We do some extra work to prevent stacking sound loops.
Adds an ash storm listener element that adds a tailored area sound manager to clients on the lavaland z level.
It's removed on logout.
Adds the ash_storm_sounds assoc list, a reference to this is passed into area sound managers, and it's modified
in a manner that doesn't break the reference in ash_storm (This is what I hate)
* Hooks ash storm listener into cliented mobs and possessed objects
* Documents the odd ref stuff, adds an ignore start var to looping sounds, fixes some errors and lint issues
* Applies kyler's review
banging
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Cleans up some var names, reduces the amount of looping we do in some areas
* Makes the code compile, redoes the movement listener to be more general
* fuck
* We don't need to detach on del if we're just removing signals on detach
* Should? work
* if(direct) memes
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Changes how weather sends sound to players, reduces sound loop overtime
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Removes download restrictions for NIRN tablets and allows QMs to buy things directly (#59691)
Everyone can now download the NIRN program on computers which allows you to buy or request to buy stuff. QMs now also get to buy things directly. All other people will still only be able to request to purchase something.
* Removes download restrictions for NIRN tablets and allows QMs to buy things directly
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
* (Hopefully) Stops cryopodded contract targets from breaking contractor uplinks (#59742)
This PR aims to stop contractor uplinks from breaking due to having a target cryopod. When a contract target enters cryosleep, it now manually rerolls the contract.
This PR is admittedly somewhat bandaid-y, as contractors are slotted for removal soon, apparently.
* (Hopefully) Stops cryopodded contract targets from breaking contractor uplinks
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
* Ads
* dddd
* a
* a
* a
* Update uniform_digi.dmi
* Update uniform_digi.dmi
* Update uniform_digi.dmi
* Some random new potted plants!
* a
* Update flora.dm
* a
* fixes
* a
* a
* e
* Logs opening/closing job slots (#59583)
Admins have a hard time telling if all job slots were closed by a bureaucracy error, or if the HoP also helped with that. Also other examples could be an antag closing all Security job positions, which would be hard for admins to tell if done by said antag, or a shitter HoP.
* Logs opening/closing job slots
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Ghosts can open the NT CIMS TGUI by clicking the SM Crystal. (#59475)
* Ghosts can open the NT CIMS TGUI by clicking the SM Crystal.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* Makes obj_integrity only updated through procs (#59474)
Having things updating integrity directly is just going to cause more problems down the line as more elements and components depend on being notified of integrity changes. It's an easy mistake to make so making it private should deal with the problem.
get_integrity() might be useful in the future but is mainly a side effect of making obj_integrity private as that also disallows reads.
* Makes obj_integrity private and only updated through procs
* Mirror!
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* I hate TGUI even if its better than what we had before
* this is why linters exist
* you need to be a Head or the Warden to get items
* does this please you linter?
* foundation
* basic interactions
* yea I can spell okay?
* linters please leave me alone
* begone debug code
* if you are dead, no interacting
* linters leave me alone
* linters are stealing my soul
* forgot to do this
* sound framework, probably wont work though
* max length, and interaction cooldowns
* message can now be a list and minor code improve
* I am a slave and linters are my master
* fix improper static reference
* add json loading/saving functionality
* default for message is now a list
* jsonize def interactions; implement requirements
* bad
* bug fix; CtrlShiftClick to interact
* minor qol fix
* fix CtrlShiftClick and remove debug code
* haha docker has security measures
* this was painful
* why are you in this branch
* begone
* bruh
* begone
Co-authored-by: Matthew <matthew@tfaluc.com>
Co-authored-by: Matthew J <GoldenKeyboard@users.noreply.github.com>
* use SIGNAL_HANDLER REEEEEE (#59242)
makes as many procs as i can find use the SIGNAL_HANDLER define which i assumed they all already did
* USE SIGNAL_HANDLER REEEEEE
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Credits Put Into PDAs/Modular Computers Go Into Inserted IDs (#59180)
* Credits Put Into PDAs/Modular Computers Go Into Inserted IDs
If a PDA or Modular Computer is attacked by something, it now checks to see if it can insert the object into the inserted ID
* Commenting the code
* Added Istype Checks Based on Feedback
* Adding a return to match the style of code in the same block
* Using Iscash instead of Istype spam
Changes the ID, PDA, and Modular Computer code to use Iscash (Apparently this already existed!)
Additionally, physical currency is checked internally instead of externall
* Credits Put Into PDAs/Modular Computers Go Into Inserted IDs
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>