Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ports atmosian powergaming from TG: Who's the real piped piper now? #1179

Merged
merged 41 commits into from
Jun 1, 2024

Conversation

Gboster-0
Copy link
Contributor

@Gboster-0 Gboster-0 commented Feb 8, 2024

About The Pull Request

Why It's Good For The Game

The new TGUI is much better, along with having more functionality

Images:

image

image

Changelog

🆑
add: the Rapid Pipe Dispenser was bumped up to modern TG, all fear the atmosian powergame
/:cl:

SyncIt21 and others added 25 commits February 8, 2024 05:40
## 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
:cl:
refactor: removed duplicate `pre_attack()` & redundant `attackby()`
procs which did the same thing
fix: unnecessary crash when unwrenching pipes/devices with the RPD
/:cl:
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:
<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

:cl:
qol: RPD and Pipe Pispenser UI tweaks for better navigation
code: RPD and Pipe Dispenser UI now on TS
/:cl:
![image](https://github.com/tgstation/tgstation/assets/3625094/c046222f-9766-4d14-8538-40aabdd15645)

## About The Pull Request

Fixes #75618 

Regression after #75540 

I didn't know that it reuses some components of RPD when I updated its
UI. It led to layers breaking UI.

## Changelog

:cl:
fix: Plumbing RCD UI fixed
/:cl:
Replaces air alarm variants with directional alarms and corresponding
helper overlays, similar to APCs.

![image](https://user-images.githubusercontent.com/3625094/234709656-fac3d5c3-af04-496a-a28a-a3ca8d7e854f.png)

Less var edits, easier management.

:cl:
qol: Mapping: Air alarm variants replaced with corresponding helpers
/:cl:
## About The Pull Request

To control vents and scrubbers in ordinance, burn and engine chambers,
mappers extend the area outside of the walls towards a tile where they
place the air alarm.

With this PR, they can now assign `chamber_id` to an air alarm and
connect to the chamber with an air sensor. There is a new map helper for
this.

Also, this connection can be done manually. You need to click on a
sensor with a multi-tool, then unlock certain air alarm, and click with
a multi-tool on it. This action will link sensor to an air alarm,
reporting gas mixture from the sensor tile and giving control over the
vents and scrubbers of the sensor's area.

### TLDR

Before:
<img width="718" alt="ordnance_before"
src="https://user-images.githubusercontent.com/3625094/236577769-5d79871f-2dce-43be-a20a-e6669bfbc1c6.PNG">

After: 
<img width="638" alt="ordnance_after"
src="https://user-images.githubusercontent.com/3625094/236577786-3c7e9c9f-1501-4747-bbe1-292fc4947b0d.PNG">

This is how the area is setup on meta station right now vs if it was
setup with a link

![image](https://user-images.githubusercontent.com/3625094/236578327-531cfb6f-e0ac-4c03-927f-f5b05b9c74ab.png)

This is also true for the supermatter chamber - you can make the air
alarm display the gas mix in the actual chamber and avoid using mapping
area hack there too.
<img width="954" alt="supermatter_after"
src="https://user-images.githubusercontent.com/3625094/236578528-4650b426-6bf0-4634-a5b0-cad7a50d5b01.PNG">

## Why It's Good For The Game

The area hack is no longer needed and you can place air alarm to control
certain remote area wherever you want when you design a map. Even 3 air
alarms next to each other controlling 3 different burn chambers.

The air alarm will also report the gas mix on the actual tile of a
sensor, instead of the gas mix before the air alarm, which is usually a
normal habitable environment.

Also, now you can build such chambers manually because there are no
precise area editing tools available in-game to repeat the area hack.

## Changelog

:cl:
add: Air alarms can be connected to an area remotely via air sensor with
multi-tool and corresponding access
qol: Mapping: Added air alarm helper to link air alarm with certain
chamber_id on map load
/:cl:
![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

:cl:
image: New air alarm sprite
fix: Air alarm properly updates status when powered
/:cl:
![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

:cl:
qol: RPD UI: Devices split in two categories, options are aligned to the
left
/:cl:
## About The Pull Request
Fixes tgstation/tgstation#74534 by making
elder atmosian statue craftable. I am not 100% sure if this is the
intended way for it to be able to be made or if it's even the right
amount of materials but if I need to change it please let me know.
## Why It's Good For The Game
Fixing issues is good, having uncraftable things is bad.
## Changelog
:cl:Reality Overseer
fix: makes elder atmosian statue craftable
/:cl:

---------

Co-authored-by: Mothblocks <[email protected]>
## About The Pull Request

**1. Igniter's**
Those things which you see in atmospheric's incineration chamber &
ordanance lab used to ignite gases, they can now be crafted

![Igniter](https://github.com/tgstation/tgstation/assets/110812394/e59bfffb-2717-4d12-891f-0231f7ba5e7f)

  - **Interactions**
     a) attack with hand to turn it on/off
b) use a multitool to change it's ID(how that's useful? keep reading)
     c) use welding tool to deconstruct it

**2. Sparker's**
No they aren't a new thing, you probably woudn't have noticed them but
it's this thing in xenobiology lab for example, and you use the button
to turn it on
![Screenshot
(235)](https://github.com/tgstation/tgstation/assets/110812394/66009c31-9655-45a5-b9c3-017673cda04c)
They function the same as igniter's(i.e. combust gases) except as the
name implies they emit spark's to get the job done

These can now also be made in the autolathe as a wall mount

![Sparker](https://github.com/tgstation/tgstation/assets/110812394/46392fde-0d27-455a-8a32-087f954a6385)
Yup just stick it on a wall and your done

 - **Interactions**
a) use a multitool to change it's ID(how that's useful? keep reading)
     b) use welding tool to deconstruct it

 To turn this on see the last section

**3. Ignition Switch Controller**
These function just like blast door controller's except they can control
only sparker's & igniter's

Also printable in autolathe

![Controller](https://github.com/tgstation/tgstation/assets/110812394/b378f7f1-3059-4865-8645-0c5a9b5c4011)

 - **How it work's(or a reminder if you already know)**
   a) First use multitool on sparker/igniter to set their ID's
b) Use multitool on this controller to set it's ID to be the same as
your sparker/igniter ID. If the igniter, sparker & this controller all
share the same ID you can use this controller to turn all device's
on/off at once
   c) stick it in a button frame & close
   d) use button

Hot Stuff


https://github.com/tgstation/tgstation/assets/110812394/8b59a71e-8992-428e-a629-5c371b5c0c3d

Ok so really what's the actual difference's between an igniter & sparker
1. Igniter's are built on the floor while sparker's are mounted on
wall's
2. Igniter's have `max_integrity = 300` while sparker's have it s normal
`max_integrity = 100` so yeah igniter's are more durable than sparker's
3. Igniter's keep the turf hot continuously as long as it's on so they
take up power continuously, so their operation cost is high whereas
sparker's emit spark's only once and use power only that one time so
they are cheaper to operate

**Why it's good for the game**
Make your own combustion chamber professionally and not in an improvised
way. Honestly I'm tired of seeing people chuck in lit welding tool's/
Zipo lighter's to ignite the gases and we loose those item's so yeah now
we have the tool's to do it the right way

## Changelog
:cl:
add: Igniter's can be crafted
add: Spraker's can be printed in the autolathe
add: ignition controller can be printed in the autolathe
/:cl:

---------

Co-authored-by: Fikou <[email protected]>
…m (#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
tgstation/tgstation#72019 (comment)
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
:cl:
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.
/:cl:

---------

Co-authored-by: Time-Green <[email protected]>
…319)

## 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
:cl:
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
/:cl:
## 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
:cl:
add: New rotator disposal pipe.
fix: Flipped transit tube stations are now accessible in the RPD again.
image: New rotator disposal pipe sprite.
/:cl:

---------

Co-authored-by: Ghom <[email protected]>
## About The Pull Request
Closes #79301

Saw this PR, realized how much this annoyed me whenever I played. Not a
hard fix either, since RCD's were a perfect example.
(In the future perhaps items that use upgrades like this could have one
base type of disk, and a component for 'upgrade_disk_tool', but that's
way, WAY out of my experience. Just something I noticed between the RPD
and RCD disks.)


![ApplicationFrameHost_cfnBFrRVWv](https://github.com/tgstation/tgstation/assets/76465278/fbe5784e-ce5d-45b5-a5e5-5dfbfef93fdf)

One on the Left already has the upgrade. Neither try to double-install
it! (Shown for posterity)

Ones on the right are installed both ways. One, the RPD on the Disk. The
other, the Disk on the RPD!

---

Actual PR changes:
- New proc on the RPD called `install_upgrade()` - If the upgrade disk
isn't installed, it installs it onto the RPD and deletes the disk. So,
the same as the RCD one, but fewer checks since the RPD's got a lot
fewer disks. But, easier to add new ones now.
- Since `install_upgrade()` is a thing, the attack chain's code for how
RPD's originally got upgraded is now much shorter. It still functions
the same, though - nothing was removed in this PR!
- Adds an attackby check - if the RPD's attacked by an upgrade disk it
will try to `install_upgrade()`. So basically, what RCD's have.
## Why It's Good For The Game
Consistency between the RPD and RCD upgrade-wise. The RPD's other method
of installing (hitting the disk WITH the RPD) still works, but now
players used to the RCD won't get confused.
## Changelog
:cl:
qol: The RPD now accepts upgrade disks inserted by hand, as well as
their original method of hitting the disk with the RPD
/:cl:

---------

Co-authored-by: Mothblocks <[email protected]>
## About The Pull Request
Lets you instantly delete pipes/atmos devices with the RPD rather than
wait 0.2s
## Why It's Good For The Game
Playing atmos is a pain because of how time consuming it is, 0.2s adds
up. It's especially annoying if a bomb goes off and you have to click on
every single little loose pipe/heatpipe/device and wait to get rid of
them
## Changelog
:cl:
balance: Deleting and reprogramming pipes/devices with RPD is now
INSTANT!
/:cl:
Adds a button to RPD tgui that lets you build multiple pipe layers with
the RPD with 1 click
Saves a lot of time when using multiple layers, especially all 5, and is
very useful for SM setups and other convoluted atmos contraptions

https://github.com/tgstation/tgstation/assets/46101244/04993fee-7b35-483f-8cb1-a8b58ff1246a

🆑
qol: You can now build multiple pipe layers with the RPD, with just 1
click!
/🆑

Co-Authored-By: Ghom <[email protected]>
@Gboster-0
Copy link
Contributor Author

@Gboster-0 FYI, according to borbop, this has merge conflicts with every single map. Mind taking a minute to peek it over to see what's causing it?

Its because it changes air alarms to a different item path, just gotta wait for other maps to dissapear from TM's before this can be TM'd itself

@Absolucy
Copy link
Member

Absolucy commented May 1, 2024

@Gboster-0 is this still being worked on / maintained?

@Gboster-0
Copy link
Contributor Author

@Gboster-0 is this still being worked on / maintained?

was ready for quite some time, ima quickly rebase to master and resolve the conflicts

@Gboster-0
Copy link
Contributor Author

eh, at this point just ping me on discord whenever this should be updated from upstream/master. Its been several months and i can't bother doing it for no reason anymore

@dwasint
Copy link
Collaborator

dwasint commented Jun 1, 2024

I believe we tested a large amount of this already, just needed a few rounds with the new stuff will merge

@dwasint dwasint merged commit 232bf32 into Monkestation:master Jun 1, 2024
19 of 21 checks passed
github-actions bot added a commit that referenced this pull request Jun 1, 2024
@Gboster-0 Gboster-0 deleted the whos-the-piped-piper-now branch June 1, 2024 00:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.