* Transit tubes can't be placed on turfs with dense objects. (#62387)
Right now you can directly place and wrench a transit tube under a few objects that are dense, this opens up a few issues, like you being able to bypass dense objects and get into places that you shouldn't with basically no effort as long as you have a RPD in your bag.
The main example of this is the brig cells, the bridge, the AI upload, the luxury area on the luxury shuttle, etc.
So a simple check was added to see if the turf has a dense object before placing a tube.
This PR #45609 (a5de1c1b5e) was IMO one of the best balance changes in the game, before it access was a meme and you could get anywhere in a few seconds by just unwrenching windows.
With a RPD you can do the same, but the worse issue is that while it takes 1 second for you to place a tube under a reinforced window, you need to fully deconstruct the window to remove it.
While you fix 1 area that the clown turned into free access, they have build 5 more.
* RPDs can't place transit tubes directly under dense objects.
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed
* Fixing conflicts
* Makes it compile, yeet all the RAD armor from everywhere (thanks RegEx!)
* Removing more lingering rad armor (woo)
* Damnit powerarmors
* Bye bye rad collectors!
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* RPD: Feedback when configuration can't change (#61378)
Preventing the creation of stub pipes involved adding a lot of checks to ensure a pipe could never be created with only one or no directions connectable. This PR adds feedback for when this happens, rather than appearing to silently fail - yet still generating the "I did something!" sparks.
Slightly better UX and feedback hopefully makes dealing with a fairly complicated system slightly easier
* RPD: Feedback when configuration can't change
Co-authored-by: esainane <esainane+github@gmail.com>
* Immediately connect on smart pipe reprogram (#61134)
* Immediately connect on smart pipe reprogram
Previously, a smart pipe reprogrammed to permit a new direction would
connect to a device or pipe that was added later, but not to any
existing device or pipe.
* Dishonor for my ancestors and shame to my family
* Die alone and unloved
* Immediately connect on smart pipe reprogram
Co-authored-by: esainane <esainane+github@gmail.com>
* RPD default pipe color change (#61162)
New default color is green, also grey has been renamed to omni to ease new players without code diving (or changelog reading)
Moved the colors so that green is the first and the omni is the last
* RPD default pipe color change
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Make transit tube dispenser stations buildable (#59852)
Dispenser stations had some sprite issues due to using wrong icon states and having wrong orientation for flipped versions.
This PR fixes the issues and adds them to the RPD.
I can remove them from RPD construction if you don't want them to be constructible - this was the main motivation for implementing the changes in a downstream.
* Make transit tube dispenser stations buildable
Co-authored-by: KubeRoot <kubinator4321@gmail.com>
* RPD can destroy broken disposal pipes (#58814)
Aims to speed up the replacement of broken disposal pipes by making it less demanding on the player. Hopefully this will lead to it happening more often. Does this by:
Allowing the RPD to destroy broken disposal pipes
Automatically destroying broken disposal pipes before trying to secure new ones of the same direction over the top of them
Automatically crowbarring floor tiles while trying to secure disposal pipes over the top of them if a crowbar is held in the offhand
Speeds up the rate at which broken disposal pipes can be replaced.
At the moment to replace a disposal pipe you have to weld each end of the broken pipe. It requires fuel, activation of eye protection and three seconds per end. This becomes time consuming when you have a lot of pipes to replace. It only serves to further disincentivise repair of everything but small breaches.
This PR lessens the requirement to only an RPD and half a second per end. You can also just place a pipe of the same direction over a broken pipe and the ends will be deleted for you. If you place a disposal pipe over a broken pipe that's above a floor tile while holding a crowbar, the floor tile will be removed so the RPD can secure the pipe. All that's left is welding the pipe and replacing the floor tile.
Hopefully this will lead to more people replacing disposals. There's still undesirable difficulty in finding out where pipes went and which ones were used (if you can't figure it out the only solution is making do or looking at the .dmm -- usually it just doesn't get fixed) but that's out of scope for this pull request. Replacing disposal pipes is just one of several jobs involved in repairing hull breaches that players don't want to do. Hopefully this eases the tedium of replacing obvious pipes.
* RPD can destroy broken disposal pipes
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* Scrolling layers for RPD is more snappy. It is also no longer flipped. (#58493)
* Scrolling layers for RPD is more snappy. It is also no longer flipped.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* Adds color picking as RPD right click action (#58309)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Adds color picking as RPD right click action
Co-authored-by: thebleh <43266738+rdragan@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Smart Pipes(reborn) (#58038)
How these new pipes work.
-Smart pipes autoconnect to nearby smart pipes
-They are now color coded, so they only connect to the same colored pipe, the GREY pipe is the wildcard and can connect to every other color, so be aware of this
-ALL components spawned by the RPD can be colored (from pumps to connectors, from pipes to manifolds), if you leave them GREY they can connect to every other color. Color adapters can be colored, but they'll still connect two pipes with different colors. BUILDABLE machines are GREY (thermomachines, cryo, HFR) so be aware of this
-Trying to go across another smart pipe will now build a bridge pipe automatically already colored of the color you choose, so you don't have to place it yourself anymore (is still available in the RPD tho)
-ALL binary components, layer manifolds, color adapters and bridge pipe can be put ONTOP of a smart pipe, but not on another of these. Smart pipes can't be placed on top of these pipes, so you have to build them first.
-Lcrossings can't be made anymore (sorry y'all i tryed, if someone have a way of doing them ping me on discord)
-REMEMBER you still have 5 layers to go, these rules apply to the same layer pipes, so if you do a crossing on different layers you won't see a bridge pipe appear.
* Smart Pipes(reborn)
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* rpds can now interact with the unwrench upgrade (#57959)
Adds the functionality to upgrade the RPD by 'slapping' the unwrench upgrade disk with the RPD itself
It doesn't exactly revolutionize gameplay and at most allows engineering cyborg players to at least upgrade their RPD to unwrench saving them a headache and a module slot when doing their thing I suppose
* RPDs can install the unwrench upgrade by interacting with the disk
Co-authored-by: DuffCreeper <treyparn@yahoo.com.au>
* Fix multiz piping issue (#57273)
Fixes multiz adapters, now they work on the same tile with different pipe layers and they keep the pipelines separated. Comes with a sprite fix due to layer 1 and 5 miscalculations
* Fix multiz piping issue
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Small do-after refactor (#55172)
This is an alternative to the PR Ryll made, it does some things similar e.g. the default limit of 1 interaction per target for a person, however, it refactors do_afters to support overrides for max interaction counts and unique sources.
For example, stripping uses the item being stripped as the source, allowing you to strip multiple items, but not the same item multiple times.
I've also fixed most other edge-cases this could cause where balance would be affected, but feel free to point out any I might've missed, this'll probably require some longer-term testmerging.
* Small do-after refactor
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Refactored 'IsAdvancedToolUser' into a macro plus relative trait. Tweaked 'can_hold_items'. (#54665)
The PR aims to allow advanced tool users to be defined by traits rather than a hardcoded proc.
Also necessary for the CanUseTopic refactor I'm working on, which will be PRed separately for atomization purposes.
This PR also fixes an inconsistency with can_hold_items (since monkeys can actually hold items).
* Refactored 'IsAdvancedToolUser' into a macro plus relative trait. Tweaked 'can_hold_items'.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fix runtime with RPD unwrenching. (#54773)
[01:44:12] Runtime in RPD.dm, line 392: Cannot read 1.type
/obj/machinery/atmospherics/wrench_act can return a boolean instead of an object under the following scenarios:
You cannot unwrench the machine.
You can unwrench the machine, but use_tool later returns FALSE instead of TRUE.
use_tool can fail when you stack wrench_acts ontop of eachother. The first wrench_act will work as expected and return the deconstructed version of the pipe, all other stacked wrench_acts will have use_tool fail and will instead just return TRUE.
This PR prevents stacking of wrench_act-based do_afters and guards against unexpected runtimes by CRASHing when wrench_act returns something unexpected.
* Fix runtime with RPD unwrenching.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Adds layer switching with mouse wheel to the RPD. (#54458)
Adds a signal that gets sent to items in currently active hand on mouse scroll
and makes RPD listen to this and change the piping layer accordingly.
* Adds layer switching with mouse wheel to the RPD.
Co-authored-by: TheChosenEvilOne <34602646+TheChosenEvilOne@users.noreply.github.com>
* RPD unwrench upgrade (#53615)
* Most OP atmos tool. RPD that can unwrench pipes.
Adds reverse wrench mode upgrade to the RPD.
Attention, due to budget cuts, the mode is hard linked to the destroy mode control button.
Now /obj/machinery/atmospherics/deconstruct(disassembled = TRUE) return created obj/item/pipe
Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* RPD unwrench upgrade
Co-authored-by: Dennok <Deneles@yandex.ru>
Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Enforce preserving parent proc return values across ui_act call stacks (#53964)
All ui_act procs should call parent by default. All procs should preserve the value of the parent proc when it's TRUTHY and pass it down the call stack. No UI should be interactible when its flags or state indicate it should not be, except when explicity overriden by child procs intentionally disregarding parent return values to achieve a specific goal.
* Enforce preserving parent proc return values across ui_act call stacks
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Add pressure valve atmos device (#53281)
New item the pressure valve
its a device that allow gas flow in a pipenet if the input pressure is higher than the set pressure
adds: Pressure Valve (a device that allow gas flow in a pipenet if the input pressure is higher than the set pressure)
* Add pressure valve atmos device
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Case of lower
* More changes
* Ruins the nice 420 diff, brainfart when doing the second batch of conversions
* More changes
* Next batch. I think
* Converts even more paths
* Restarts bots
* Capital Free Zone
* Come on travis, do something
* Renames areas
* Bots, please stop dying
* Updates CONTRIBUTING.md and updates a few paths I missed.
* APC recgarftzfvas
/obj/item/computer_hardware/recharger/apc to /obj/item/computer_hardware/recharger/apc_recharger
This change the RCD & RPD Sprites for something way more beautiful than what it was.
Basically port : Citadel-Station-13/Citadel-Station-13#8953
Why It's Good For The Game
It look better than what we currently have.
https://imgur.com/a/gnfD6gs
Also, some idiot will complain that they will take the RPD for the RCD, they are just blind, while they have the same color scheme, they are different enough to know what is what.
And Citadel may be a ERP server, you have to admit they sometimes do some good stuff
Changelog
cl
change: Changed RCD & RPD Sprite
/cl
* Modified the RCD to fit on a belt, cleaned up some of the upgrade descriptions.
* reeeeee tabbing
* As above except RPD
* Added the same functionality for the Plumbing Constructor and RLD
* Improve tgui fatal error reporting
* Keyboard passthrough in tgui
* New Rapid Pipe Dispenser interface
* Update README with new components
* Release held keys when browser window loses focus
* Power Monitor Interface, NtOS theme and core components
* Yet another CSS rework
* Fix Table, Chart stubs for IE8
* NtOS Main interface
* Supermatter Monitor interface
* Tweak NT color, color + sort gas bars
removes materials list from items, uses custom_materials instead. This might introduce some bugs so we should testmerge this for a while (and Ill test stuff locally as much as I can)
this also adds material crafting to sheets. Test case being chairs. In the future we can add stuff like tables, walls, doors etc.
also applies materials to everything, with fixes, which can close#46299
About The Pull Request
Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls
This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE
I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game
Code usability