Commit Graph

29 Commits

Author SHA1 Message Date
SkyratBot 1fb770b55d [MIRROR] [NO GBP] Fixes more retrieve typos [MDB IGNORE] (#23464)
* [NO GBP] Fixes more retrieve typos (#78069)

## About The Pull Request

Continuation of https://github.com/tgstation/tgstation/pull/77946, I
missed quite a few of these it seems.

## Why It's Good For The Game

Stop the spread of these typos!!

## Changelog

Nothing player facing

* [NO GBP] Fixes more retrieve typos

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-02 11:54:34 -04:00
SkyratBot 74804a4fca [MIRROR] RCD directional window qol & wall mount patch. Code improvements [MDB IGNORE] (#23400)
* RCD directional window qol & wall mount patch. Code improvements (#77858)

## About The Pull Request
Fixes #77852
RCD can build wall mounts on reinforced walls

Closes #77848
Not a fix so labelling this as a qol cause it was always intentional but
now RCD can build directional windows without building a grill first.
Saving some matter units from building a grill is a plus

Added auto doc for some procs & made the extra delay when building
multiple structures into a define

## Changelog
🆑
fix: rcd can build wallmounts on reinforced walls
qol: rcd can build directional windows without requiring/building a
grill
/🆑

* RCD directional window qol & wall mount patch. Code improvements

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-08-30 16:27:07 -04:00
SkyratBot 6977ce93de [MIRROR] Transit Tube Fix and New Rotator Disposal Pipe [MDB IGNORE] (#23366)
* Transit Tube Fix and New Rotator Disposal Pipe (#77843)

## About The Pull Request
Fixes flipped transit tube stations being inaccessible and adds a new
rotator disposal pipe which rotates the incoming atom 90 degrees no
matter which direction the atom comes from.

![promo](https://github.com/tgstation/tgstation/assets/25363960/3cdb75f6-0540-4797-9972-935fae37db58)
## Why It's Good For The Game
Adds new disposal pipe usage for cool projects and fixes a bug.
## Changelog
🆑
add: New rotator disposal pipe.
fix: Flipped transit tube stations are now accessible in the RPD again.
image: New rotator disposal pipe sprite.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>

* Transit Tube Fix and New Rotator Disposal Pipe

---------

Co-authored-by: Comxy <tijntensen@gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-08-27 10:39:36 -07:00
SkyratBot 867fa1cdc5 [MIRROR] General code maintenance for Mat container related stuff [MDB IGNORE] (#23251)
* General code maintenance for Mat container related stuff (#77671)

1. Removes `/obj/machinery/ore_silo/proc/remote_attackby()`. This proc
calls `datum/component/material_container/user_insert()` anyway which
performs all the checks necessary for inserting stuff into the ore silo
and `/obj/machinery/ore_silo/proc/remote_attackby()` was just repeating
its code & checks. So now inserting into the ore silo is directly
handled by the mat container without this proxy proc making the
operation slightly faster
2. Removed silo `attackby` code. Same operations can be done via
`screwdriver_act` & `crowbar_act` procs much cleaner
3. The ore silo now hooks onto signals
`COMSIG_MATCONTAINER_ITEM_CONSUMED` and
`COMSIG_MATCONTAINER_SHEETS_RETRIVED` and logs into silo when they are
triggered. This means when you insert/eject sheets from the silo the
connected machine performing the operation no longer has to do the
logging manually thus the proc `silo_log` has been removed from a lot of
places ,reducing overall code size
4. A lot of stuff that use materials from the ore silo follow this
pattern.

i.e. They first use the materials from the silo and then log it via
`silo_log` proc. This code pattern is repeated in a lot of places so
let's just merge these 2 lines with some extra sanity checks into a
single proc inside `remote_materials` itself. That's what was done and
the number of places where you log manually into the silo has been
removed further reducing code size everywhere.
5. Added auto doc & cleaned up some procs

Since logging is now done by the ore silo directly, we need a way to
pass the machine that is inserting items into the silo to the signal
handlers of the ore silo [via the `context` var]. So other code changes
elsewhere is because of this var

* General code maintenance for Mat container related stuff

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-08-21 23:43:04 -04:00
SkyratBot 2399e88e7b [MIRROR] Gives engineers the RCD round start and nerfs its base abilities to compensate [MDB IGNORE] (#23158)
* Gives engineers the RCD round start and nerfs its base abilities to compensate (#77641)

## About The Pull Request
- Gives engineers an RCD as part of their round start equipment
- RCD by default will build/deconstruct slower if you already have
another one in progress. This can be upgraded with the new cooling
upgrade disk. Reconstructing (anything that was there roundstart as per
the destructive scan) doesn't have this downside, only
construction/deconstruction.
- RCD construction effects can now be attacked in order to cancel them.
This can be deterred with the anti-disruption upgrade disk.
- RCDs for nukies and whatever don't have these downsides
- The CE's roundstart RCD also doesn't have these downsides

## Why It's Good For The Game
Construction and reconstruction are currently one of the worst aspects
of SS13--they are so slow and tedious that any sort of mass destruction
goes unfixed for 10-30+ minutes, if fixed at all. This limits us because
it means people don't want traitors to create large explosions, for
instance--I do and so I think it's crucial that we fix construction.

Reconstruction has already been improved on the RCD with the destructive
scans, but I see no reason to limit this to something so out of the way.

Ideally the RCD even gets more functionalities, like the ability to
print stock parts (or having stock parts removed), etc, in order to
lessen this burden.

## Changelog
🆑
add: Engineers now have an RCD round start.
balance: RCD construction/deconstruction effects can now be attacked in
order to cancel them. You can get the anti-disruption upgrade disk to
prevent this.
balance: RCD construction/deconstruction is now slower if you already
have another effect up. This does not effect reconstruction.
balance: Both of the above effects do not effect the CE's roundstart
RCD, nor any other RCDs such as combat RCDs.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>

* Gives engineers the RCD round start and nerfs its base abilities to compensate

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
2023-08-17 16:56:29 -04:00
SkyratBot ed2a76e5ae [MIRROR] Just adds some ending commas to plumbing design lists [MDB IGNORE] (#23143)
* Just adds some ending commas to plumbing design lists

* Update RPLD.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-17 05:08:11 +00:00
SkyratBot d3b87e03f2 [MIRROR] Plumbing RCD Refactors [MDB IGNORE] (#23096)
* Plumbing RCD Refactors (#77563)

## About The Pull Request
- Removed the `category` var from all plumbing machinery, now all the
designs are organized by category in a single static list(1 list for
each plumbing rcd type). This makes it easy to add new designs to 1 list
in the future and since the list is static memory is saved when multiple
plumbing RCDs are made in game
- Removed redundant `machinery_data` list. This list simply stored the
cost of designs from the `plumbing_designs` list. Rather than wasting
memory with this list we can derive the cost from `plumbing_designs`
list ourselves
- Removed unused list `choices`. No idea what that did back then
- When low on ammo the plumbing RCD would display multiple balloon
alerts. That's fixed now
- Made the icon sizes of designs in the UI slightly smaller so they
don't clip and look blurry

## Changelog
🆑
fix: multiple balloon alerts when the plumbing RCD is low on ammo
code: organized all plumbing designs into static lists for memory
savings
refactor: removed unused vars for further memory savings
/🆑

* Plumbing RCD Refactors

* Nonmodular update because static

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-16 14:15:38 -07:00
SkyratBot aba6dd1e20 [MIRROR] Plumbing Constructors can now de-construct every machine they can construct. [MDB IGNORE] (#23034)
* Plumbing Constructors can now de-construct every machine they can construct. (#77514)

## About The Pull Request

What it says on the tin. Some machines, like the plumbing IV, could not
be deconstructed because they were not `/obj/machine/plumbing` subtypes.
It now simply checks whether the item we're attacking is one of our
designs and, if so, deconstructs it.

Additionally made the plumbing IV not drop metal when deconstructed for
the sake of consistency. I'd say it's a fix, because it seems like an
oversight, but if you'd like to label it as balance just tell me.
## Why It's Good For The Game

Fixes #77507 and avoids any similar issues in the future.
As mentioned, the removal of the metal is just for consistency. It
inherits it from the base IV type when, in my mind, it should behave
like a plumbing machine.
## Changelog
🆑
fix: Plumbing Constructors can now deconstruct every machine they can
make, including the plumbing IV.
fix: Plumbing IV drips no longer drop metal when deconstructed
/🆑

* Plumbing Constructors can now de-construct every machine they can construct.

---------

Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com>
2023-08-12 09:37:09 -04:00
SkyratBot 6ccbd41fdc [MIRROR] [NO GBP]Mat container Final clean-up & patches [MDB IGNORE] (#22765)
* [NO GBP]Mat container Final clean-up & patches (#77092)

## About The Pull Request
1. Fixes #77177
Some things were not connecting to the ore silo round start because the
silo was not initialized yet so it went to local storage. Now it
connects with the ore silo again
3. Removed some unused code in remote materials
4. Protolathe uses `eject_sheets()` defined in remote materials and not
it's own version because that's redundant
5. Don't put the item back in the players hand when inserting it in the
material container cause we haven't even removed it yet
6. `fast_split()` is now even faster & robust and is a global proc
7. Some code cleanup for RHD silo link

## Changelog
🆑
fix: some things not connecting to the ore silo round start
/🆑

* [NO GBP]Mat container Final clean-up & patches

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-07-29 15:59:35 -04:00
SkyratBot 7b4237c692 [MIRROR] Implements usage of the REVERSE_DIR macro throughout the code. [MDB IGNORE] (#22743)
* Implements usage of the REVERSE_DIR macro throughout the code. (#77122)

## About The Pull Request
Replaces a ton of `turn(dir, 180)` calls with the aforementioned macro.

## Why It's Good For The Game
Afaik, `REVERSE_DIR` was coded to be faster than the classic `turn(dir,
180)` call, being a simple set of binary operations. To sum it up, micro
optimization.

## Changelog

N/A

* Implements usage of the REVERSE_DIR macro throughout the code.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-07-28 14:32:01 -04:00
SkyratBot 6a5f3c50c4 [MIRROR] Material container & related stuff ui refactors & clean-up [MDB IGNORE] (#22667)
* Material container & related stuff ui refactors & clean-up (#76220)

## About The Pull Request

**1. Material container clean-up & refactor**
- Replaced `total_amount` var with `total_amount()` proc, this var can
be easily computed by summing up all material amounts rather than
storing it as a var which is tedious to update & keep track of when
materials are added/removed
- Removed unused procs `transer_amt_to()`, `can_insert_amount_mat()`,
and `get_categories()`. These procs are not used anywhere in the
codebase so let's remove them & make some space.
- Callbacks are replaced with signals, the callbacks don't need to be
explicitly garbage collected & having macros & procs marked with
`SIGNAL_HANDLER` makes your intentions more readable & explicit.
- Fixes #76151
All material adding, removal, checking operations are "Integer"
operations, i.e. the final value is rounded & them made 1 if the final
value is 0 using the macro `OPTIMIZE_COST`[coudn't come up with a better
name]. No more dealing with decimal value materials
The problem was after the protolathe was upgraded with better parts all
the design costs were multiplied with a decimal `efficiency_coeff`
value, this means even though in the UI the cost was displayed as 60
bluespace crystals its actual cost was `60.0001` something in the
backend causing this check for materials to fail & print the error
message.
- Replaced `GetComponent(/datum/component_material_container)` with just
a simple ref to the material container when adding the component, so we
can save some overhead from calling this proc
- Gave all procs a ton of documentation with documentation having
documentation
- Fixes #76506 RCD and other devices that uses the silo link upgrade now
have the correct material usages
- Fixes #72096. It wasn't just a problem with ancient protolathe but
with all machines that used `datum/component/remote_materials` the
problem was remote materials would add an instance of
`datum/remote/material_container` if it wanted to use local storage but
this component would get added before `datum/component/remote_materials`
could be registered i.e. it comes before remote_materials in the
component list. So when the machine is destroyed it will first destroy
`material_container` & then `remote_materials` therefore destroying the
materials before they could get ejected
- Silo link is established when parent is registered with remote
materials raher than adding an external timer which is faster
- Everything that uses a material container will auto eject their sheets
when destroyed
- Moved this & remote materials into its own folder for better
organization

**2. Material UI Changes**
- Removed the x25 & x50 print buttons from the autolathe, now they just
have x5 & x10 buttons like the protolathe, These buttons were of no use
since you could just type the exact amount you want to print in the
`[Max: <some amount>]` side bar. The code to compute these buttons was
just plain right nasty & some of it unused in the UI.
- The material eject button in the material bar does not gray out when
you can eject exactly one sheet
- All material cost are integer values rounded
- Fixes #76253 Exosuit Fabricator sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Component printer material bar sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Autolathe Material bars now display number of sheets available
- Max printable amount of items are now computed & updated correctly in
the UI. They were displaying wrong values & now get updated when items
are printed, materials are removed
- Silo hold actually works now. When a machine is put on hold it calls
this proc

https://github.com/tgstation/tgstation/blob/e929cf39cded5207d63df1fa8521f41f2816b383/code/datums/components/remote_materials.dm#L78-L87
Notice how the key is `src` so we should be consistent during checking
if a machine is on hold using the same `src` var. But for some reason we
did dumb shit like this

https://github.com/tgstation/tgstation/blob/e929cf39cded5207d63df1fa8521f41f2816b383/code/datums/components/remote_materials.dm#L150-L153
What is category? Why do we care for the area the machine is in? None of
it made sense so i removed all that junk and just made it check for
`src` like it should
- Removed redundant `removable` & `sheets` var from the material
container ui_data. These vars are unused in the UI
- If an item does not have the required materials then upon clicking
that item you will not get any error message but instead nothing happens

## Changelog
🆑
fix: items can be printed from autolathe & protolathe when the exact
material amounts are present in them after upgrading
fix: max printable amount now shows the correct value & updates when
items are printed, materials are removed in the autolathe & protolathe
fix: component printer material bar is not greyed out when there are
sufficient materials to eject
fix: rcd and other devices that uses the silo link upgrade now have the
correct material usages
fix: silo hold actually works
fix: machines using local storage to hold materials will eject it's
materials as sheets when deconstructed/destroyed
refactor: Autolathe Material bars now display number of sheets available
refactor: printing an item that does not have enough materials will fail
silently with no error messages
refactor: Drone dispenser will eject sheets upon deconstruction
refactor: all things that store materials will auto ejects its sheets(if
there is sufficient material) when destroyed
refactor: inserting an item into the material container will display the
units consumed as sheets not absolute units
refactor: removed x25 & x50 print buttons from the autolathe

* Material container & related stuff ui refactors & clean-up

* Update ammo_workbench.dm

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-25 02:53:43 -04:00
SkyratBot 2f552919c1 [MIRROR] Icons folder cleaning wave two [MDB IGNORE] (#22454)
* Icons folder cleaning wave two

* Merge conflict resolution

* Modular path hell

* hmm

* Update 2022-10.yml

* Another modular thing

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-16 00:41:18 -04:00
SkyratBot e264ee3644 [MIRROR] Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts [MDB IGNORE] (#22469)
* Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts

* Update communications.dm

* Modular override

* Some modular adjustments, removes 'emagged' vars in favor of obj_flags

* whoops, mobs don't have obj_flags.

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-15 16:46:17 -04:00
Bloop 4ae00db524 [MISSED MIRROR] makes the rcd able to make girders (#76515) (#22466)
makes the rcd able to make girders (#76515)

## About The Pull Request

rcd can make girders at half the cost of making a wall in 1.3 seconds

## Why It's Good For The Game
more "rapid" than using iron for girders and putting whatever material
on it

## Changelog
🆑
add: rcd can make girders now
/🆑

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2023-07-15 15:07:34 -04:00
SkyratBot 1f7098f287 [MIRROR] RPD mouse wheel layer change checks for actually holding the RPD [MDB IGNORE] (#22130)
* RPD mouse wheel layer change checks for actually holding the RPD (#76319)

## About The Pull Request
Fixes mousewheel changing the selected piping layer when the RCD is
in-hands, but not in the active hand.
Also dmdocs, changes some var names, grammar checks some stuff and adds
balloon alerts when installing the wrench upgrade and reprogramming a
pipe.
Removes `activate()` proc that was just a `playsound()`, makes the sound
used for that a define here so it's obvious why's the sound being played

## Why It's Good For The Game
Closes #54844 (it was fixed at some point actually so you couldn't
mousewheel to change layers on an RPD on your belt slot, but the in-hand
inconsistency remained)
Code's a little cleaner
Installing an upgrade's a little more obvious

## Changelog
🆑
fix: fixed RPD switching layers on mousescroll when not in active hand
qol: installing an RPD wrench upgrade & reprogramming a pipe via RMB
produces a balloon alert
/🆑

* RPD mouse wheel layer change checks for actually holding the RPD

---------

Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
2023-07-01 01:30:23 -07:00
SkyratBot 1beff3980c [MIRROR] Air Sensor are Craftable, Removed from RPD UI, Have New Linking System [MDB IGNORE] (#21964)
* Air Sensor are Craftable, Removed from RPD UI, Have New Linking System (#75869)

## About The Pull Request

**1. Craftable & Removed from RPD UI**

1. Air sensor's are now craftable
2. You can turn them on/off with hand. Even though turning off the
sensor will change it to a diffrent type[from `obj/machinery/air_sensor`
-> `obj/item/air_sensor`] it's I/O port's are sill preserved when
turning them on although you have to assign it a new name again which is
usefull if you want to change the sensor's purpose in game.
3. They can now only be deconstructed by a welding tool and should be
wrenched in place to turn them on.
4. Turned off air sensor's once unwrenched can be picked up like any
regular item
5. Air sensor's are removed from the RPD UI because they don't go with
pipes so it logically doesn't make sense to group them with pipe related
device's

Removed unused code in the process

https://github.com/tgstation/tgstation/assets/110812394/3439a0f3-9c48-43ac-8f4b-98135435ec13

**2. New ID System**
The problem with air sensor's is that each sensor is assigned a unique
ID which is then stored in `GLOB.objects_by_id_tag` list. Each sensor
name it's assigned based on the gas it's trying to sense(for naming only
even though it can detect other gases) So if 2 sensor's having the same
ID are made they will overwrite each other in this list leaving one
sensor orphaned in the world which cannot be referenced because it's
value was overwritten by a new sensor having the same ID in this list.

The Solution? Rather than having all atmos computer's look up sensor's
from this 1 global list make each computer keep track of all sensor's
it's responsible for in it's own local list[which i called
`connected_sensor's`] this way 2 sensor's can have randomly generated
names in the global `GLOB.objects_by_id_tag` list but the computer will
know what sensor to look up in this list based on the stored sensor ID's
in the `connected_sensor's` list

Basically what i am getting at is now you can make as many air sensor's
as you wish but you will know have to connect that sensor to the
computer using a multitool.
Notice in the video how i made 2 sensor's called `Supermatter Chamber
Sensor's`] and every time you try to connect an sensor which has the
same name[`Supermatter Chamber Sensor's` in this case] they will
ovewrite the old sensor in it's list as shown in the video

https://github.com/tgstation/tgstation/assets/110812394/b5283c3b-c8a1-4b94-a6a8-8ba7a0007615

**Why it's good for the game**
![Screenshot
(247)](https://github.com/tgstation/tgstation/assets/110812394/6a7eb501-4414-4f01-a6ef-3e9b70f4af06)

I agree. Also air sensor's taking up a full Tab/Section in the RPD UI
wasted a lot of UI space so that's removed now. Also making the air
sensor's wrenchable and pickable item's was also requested in
https://github.com/tgstation/tgstation/pull/72019#issuecomment-1355499873
so you relate them to device's like meter's

Another huge issue was that the number of air sensor's you can make in
the world was limited because each sensor in the world must have a
unique ID but that's finally fixed now so yeah make as many sensor's as
you want.

## Changelog
🆑
add: air sensor's are craftable
refactor: air sensor's can now be turned off by hand and can only be
deconstructed by a welding tool
refactor: removed `Params()` proc
qol: unwrenched air sensors can be picked up & recycled like regular
item's
del: air sensor are removed from the RPD UI
qol: air sensor's are no longer restricted by their unique ID's which
mean you can craft as many air sensors as you want.
/🆑

---------

Co-authored-by: Time-Green <timkoster1@ hotmail.com>

* Air Sensor are Craftable, Removed from RPD UI, Have New Linking System

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Time-Green <timkoster1@ hotmail.com>
2023-06-23 16:06:45 -07:00
SkyratBot a12b13250a [MIRROR] [NO GBP] RPD UI tweaks [MDB IGNORE] (#21748)
* [NO GBP] RPD UI tweaks (#75900)

![image](https://github.com/tgstation/tgstation/assets/3625094/6cb8384f-8d95-4821-9a4f-f38c57c1b4bd)

![image](https://github.com/tgstation/tgstation/assets/3625094/f54ad14d-35ae-411f-a197-69378cbee264)

## About The Pull Request

The recent changes were aimed at better UX, yet there were reports about
their flaws.

This PR should address some of the concerns.

The Devices tab was reduced, creating a new tab for Pumps and Valves,
called "Binary" (perfect timing for such tab 🤭) No scrolling required
now.

Also moved options to the left side for less mouse movements and
consistency with RCD and Plumbing RCD.

## Why It's Good For The Game

Better UI according to feedback from the main users - atmos techs.

## Changelog

🆑
qol: RPD UI: Devices split in two categories, options are aligned to the
left
/🆑

* [NO GBP] RPD UI tweaks

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2023-06-10 19:37:40 -07:00
SkyratBot 8b47f7f7fb [MIRROR] New air alarm sprite take two [MDB IGNORE] (#21488)
* New air alarm sprite take two (#75262)

![dreamseeker_3knwrXrSzO](https://user-images.githubusercontent.com/3625094/236828432-605f6c0a-10da-4e98-9c03-87931bc46704.gif)

![image](https://user-images.githubusercontent.com/3625094/236829631-c566d82b-90cc-400d-8565-0374282d5319.png)

## About The Pull Request

Reopen of #74932

Resprites the air alarm and adds a new sprite that will be needed for an
air alarm that is remotely connected to a sensor via #75187

Also fixed air alarm not checking air status on power change.

## Why It's Good For The Game

Newer, more compact sprite.

It will make it easier for map makers to stack remotely connected air
alarms on a tile to make an air monitoring wall.

## Changelog

🆑
image: New air alarm sprite
fix: Air alarm properly updates status when powered
/🆑

* New air alarm sprite take two

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2023-05-27 20:48:55 -07:00
SkyratBot 147d27c84f [MIRROR] Pipe Dispenser UI tweaks [MDB IGNORE] (#21401)
* Pipe Dispenser UI tweaks (#75540)

RPD:
<img width="398" alt="g6iMANATn2"
src="https://github.com/tgstation/tgstation/assets/3625094/a6b986d0-fa7f-4f67-89df-6d62505e1e50">

Pipe dispenser machines:
<img width="398" alt="eBxH3wMlPu"
src="https://github.com/tgstation/tgstation/assets/3625094/cc49c3c2-dad6-40da-9e63-b2f0a20fa893">

GIF:

![dreamseeker_LN0XizcPi9](https://github.com/tgstation/tgstation/assets/3625094/c8e639d2-48d1-4a71-a8f7-b55300007203)

## About The Pull Request

Updated RPD UI for:

- Bigger color buttons
- Faster selection of pipe type

## Why It's Good For The Game

Less clicks and missclicks when working with RPD

## Changelog

🆑
qol: RPD and Pipe Pispenser UI tweaks for better navigation
code: RPD and Pipe Dispenser UI now on TS
/🆑

* Pipe Dispenser UI tweaks

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2023-05-24 16:37:30 +02:00
SkyratBot 077e2d4eee [MIRROR] Makes update_icon_updates_onmob more robust [MDB IGNORE] (#21076)
* Makes update_icon_updates_onmob more robust (#75324)

Safeguards against #74965 happening in the future.

Noticed a bunch of these were using ITEM_SLOT_HANDS. This is incorrect,
as the element already automatically updates held items. grep'd it to
catch future instances.

Likewise, a number of objects weren't passing slot_flags to the element,
meaning it wasn't actually updating those things properly when they were
being worn. I've simplified this so now the element will automatically
update all slot_flags, and passing an additional slot to the element
when being added is only needed for additional slots that might need to
be updated. This also means if slot_flags change, the element will now
update correctly as well.

🆑 ShizCalev
code: The update_icon_updates_onmob element will now automatically
update all slots in an item's slot_flags var. This does fix multiple
things that weren't updating properly. Passing a slot to the element is
now only necessary if you want to add additional slots to be updated.
/🆑

* Makes update_icon_updates_onmob more robust

---------

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2023-05-10 22:57:55 -07:00
SkyratBot c4d4e1da63 [MIRROR] Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. [MDB IGNORE] (#20916)
* Minerals have been refactored so costs and minerals in items are now in terms of mineral defines.

* AI GEN RUN ONE

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-05-03 22:48:10 +01:00
SkyratBot 22f68874f4 [MIRROR] Service Borger Upri- Kitchen Upgrades [MDB IGNORE] (#20909)
* Service Borger Upri- Kitchen Upgrades

* Update robot_model.dm

---------

Co-authored-by: Dawnseer <126404225+Dawnseer@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-05-03 00:10:27 -07:00
SkyratBot 8af37e12a1 [MIRROR] RPD Speeds Tweak [MDB IGNORE] (#20768)
* RPD Speeds Tweak (#74619)

Lowercased RPD name and lowered the speeds for building atmos pipes/devices, reprogramming stuff and destroying stuff
atmos 0.5s -> 0.3s
reprogram/destroy 0.5s->0.3s
Why It's Good For The Game

QOL for atmos, makes big atmos/engi projects more viable
Loose pipes/devices don't even have gas in them no point in taking a lot of time to destroy them, they don't cost any materials to make either so nothing is wasted

This especially helps with fixing huge explosions since that leads to 50 pipe fittings being spammed everywhere and takes ages to clean up
Changelog

cl
qol: Lowered the atmos build, reprogram, and destroy delays on the RPD
/cl

* RPD Speeds Tweak

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
2023-04-25 18:48:52 -07:00
SkyratBot 107f94ee6f [MIRROR] Fixes redundant code & runtime in RPD [MDB IGNORE] (#20761)
* Fixes redundant code & runtime in RPD (#74949)

## About The Pull Request
1. `pre_attack()` was defined twice, removed one
2. `attackby()` does the exact same thing as `pre_attack()` for
installing upgrades so removed that
3. Fixes runtime
![Screenshot
(180)](https://user-images.githubusercontent.com/110812394/233941512-c2e23e40-cd53-4ed4-87be-59bcaea373d3.png)
When you attempt to unwrench a pipe via the RPD but you interrupt the
`do_after()` proc by moving. it doesn't need to crash but simply return
if unwrenching was unsuccessful see
`/obj/machinery/atmospherics/wrench_act()`

## Changelog
🆑
refactor: removed duplicate `pre_attack()` & redundant `attackby()`
procs which did the same thing
fix: unnecessary crash when unwrenching pipes/devices with the RPD
/🆑

* Fixes redundant code & runtime in RPD

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-04-25 18:40:41 +01:00
SkyratBot 1a0cdfac66 [MIRROR] Hologram Touchup (Init savings edition) [MDB IGNORE] (#20638)
* Hologram Touchup (Init savings edition)

* Update hologram.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 03:53:09 +01:00
SkyratBot 9ae6656365 [MIRROR] [No GBP]Fixes runtimes when deconstructing floor tiles with RTD [MDB IGNORE] (#20612)
* [No GBP]Fixes runtimes when deconstructing floor tiles with RTD (#74767)

## About The Pull Request
Fixes this
![Screenshot
(161)](https://user-images.githubusercontent.com/110812394/232286754-cde879e1-4593-4104-9392-2cc80b845334.png)
Caused by this
![Screenshot
(162)](https://user-images.githubusercontent.com/110812394/232286901-d16b055e-32e0-4ed9-9caf-35bb229ae62e.png)

Since the RTD deconstructs i.e. QDEL the floor tile, the animation
effect tried to add a timer to QDEL itself on the deleted floor tile
causing the runtime.

## Changelog
🆑
fix: RTD animation effect adding a timer on deleted floor tiles.
/🆑

---------

Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>

* [No GBP]Fixes runtimes when deconstructing floor tiles with RTD

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
2023-04-17 17:52:15 +01:00
SkyratBot fe57bdef58 [MIRROR] [NO GBP]Type cast, Var names, UI refactors for RCD stuff [MDB IGNORE] (#20568)
* [NO GBP]Type cast, Var names, UI refactors for RCD stuff (#74660)

## About The Pull Request
Was requested in #74592

- Properly type casts the target into `turf/open/space` for mecha rcd
plating action,
- Removes single variable names throughout
- uses datum/ui component to get user for to_chat() instead of usr

## Changelog
🆑
refactor: correctly type casts the turf into open type for the rcd mecha
plating action
refactor: removes single letter variable names
refactor: uses datum/ui component to get user for to_chat() instead of
usr
/🆑

* [NO GBP]Type cast, Var names, UI refactors for RCD stuff

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-04-14 20:34:35 -07:00
SkyratBot 6ee8dbb9c7 [MIRROR] Code clean-up & refactor for all RCD related & like devices. [MDB IGNORE] (#20394)
* Code clean-up & refactor for all RCD related & like devices. (#74527)

## About The Pull Request

1. Debloats the RCD.dm file i.e. renames it to RHD[Rapid handheld device
the base for all rcd like devices] and moves its subtypes into their
respective files
`/obj/item/construction/rcd` moved to RCD.dm
`/obj/item/construction/rld` moved to RLD.dm
`/obj/item/construction/plumbing` moved to RPLD.dm
`/obj/item/construction/rtd` stays in RTD.dm
Other rcd like device i.e. RPD, RFC, RWD, along with the above mentioned
files are now all moved into 1 folder called "rcd"
majority of the `to_chat()` are now replaced with `balloon_alert()` to
reduce spam

2. Adds early returns, optimizes & adds extra resource sanity checks
before and after the `do_after()` proc for the RLD. RLD silo links now
works again.
- RLD now uses an ammo bar just like the RCD for updating only its
overlays & not its entire icon state, it also has a blinking yellow icon
state when low on ammo
- Remove unused empty blinking yellow icon state for plumbing RCD.
nobody designed the ammo bars for them so having`has_ammobar = TRUE`
caused the unit tests to fail

4. Adds extra structure placement & resource sanity checks for RCD, RTD
& Plumbing RCD before & after the `do_after()` proc
  RCD Patches
- removes unused vars window_type & window_glass, these can be infered
from window_type directly
- removes furnish type & cost and let the rcd_vals() proc decide those
for consistency
- copies the rcd stuff from turf/floor to turf/open/misc with some
exceptions, It wasen't updated in a long time
- rcd vals i.e. cost & delay for window types are set for each
directional, full-tile, reinforced types. These all used constant values
& now they are adjusted accordingly

   RTD patches
      - Fixes #74526 RTD can lay floor tiles on all types of plating's
- The cost of deconstructing tiles was not calculated correctly i.e. it
always used the cost of the selected design & not the cost of the actual
floor type we are trying to deconstruct
- The construction & deconstruction time was constant & very fast for
all tile types, now the delay is adjusted based on the cost of the type
of tile in question
- RTD now has a blinking yellow empty icon state just like the RCD when
low on ammo

6. Fixes #73479 RCL now updates its pipe cleaning coil appearance when
changing colours & selecting white colour no longer yields a random coil
colour

7. makes sure `useResource() ` actually succeeds before doing any
action. The return value of this proc was not previously checked for
some devices

## Why It's Good For The Game
1. rcd like devices all moved into 1 folder for better organization
2. splits the original RCD.dm file into more logical & manageable files
for better maintainability
3. removes unused code & adds some extra sanity checks for everything
4. adds missing sprites for RLD & RTD

## Changelog
🆑
code: RCD & all its subtypes and other devices like it[RTD, RLD,
Plumbing RCD, RWD, RFC, RPD] now moved into 1 folder, removes unused
vars
refactor: RCD window type cost & delay are set based on the window type
selected.
refactor: RLD, RCD & plumbing RCD now has extra resource & target
placement sanity checks, optimizes RLD and code readability.
refactor: RTD now sets the correct delay with the cost of the tile type
currently being constructed/deconstructed taken into account
refactor: large majority of to_chat() replaced with balloon alerts
fix: RLD silo link now works again
fix: RTD can place tiles on any subtype of plating
fix: RCL now lays the correct colour of pipe cleaner when its colour is
changed
imageadd: empty blinking yellow icon states for RTD & RLD & an ammo bar
for RLD
/🆑

* Code clean-up & refactor for all RCD related & like devices.

* Update RHD.dm

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-12 20:29:46 +01:00
SkyratBot a322737856 [MIRROR] Final Patches for RCD related devices. [MDB IGNORE] (#20491)
* Final Patches for RCD related devices.

* Update wall_mounted.dm

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
2023-04-12 20:11:31 +01:00