-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Adds various ventcrawl QoL changes #14432
Conversation
Does this mean that you can see the tubes if you go from the station loop to the security loop? |
While the delay on leaving via broken pipes is good, it sounds like a lot when trying to just jump out of a vent to ambush someone. Can you make the timer shorter for vents than broken pipes? |
I can, do you have values in mind? Also, the timer is only visible to the person leaving the vent, it's not like they get a warning.
Yes. Yes it does. Changing pipe nets as you can see in the gif will re render it. |
From what this PR offers, I am mostly up for it except for one thing. The 3 second timer to leave a vent. There is a lot of antags who uses vents for combat purposes. This makes ambushes harder, and gives the crew a 3 second safety net knowing they can weld it without them popping out. If it was changed to give a timer for pipes, that would actually be an advantage as it would prevent people from accidentally popping out of those as they are the main culprits of tricking people out of vents. Other than that one thing, All the other additions look great. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm fine with this, but I do have one request:
make the delay on exiting a pipe onto a turf only apply if the pipe is disconnected.
IE: if you exit a pipe via an open vent, that should be instant, but if you exit a pipe that's broken there should be a delay on that (with progress bar, to prevent you accidentally leaving a broken pipe, but not delay you from intentionally exiting via a vent).
A few changes along with the style fixes. |
Perhaps make the vent exit timer a toggle in the top right hand corner? It starts off, but if someone wishes they can toggle it on? |
Requesting you add Fixes #11813 to the PR description so that if this is merged, that issue will be closed. |
No, the exact words 'Fixes #11813' need to appear in the PR's description so that github can automatically close the issue #11813 when it gets merged. |
Sorry for the misunderstanding, the description has been updated. |
I like this PR, i finally can still enter vents during terror rounds as a drone. Small curiosity though. When a drone alt clicks a welded vent, does it display a certain message in the chat or do others just see a drone vibing next to a vent? |
"<span class='notice'>You climb into the ventilation system. With a resounding snap the [entrance_found] is fastened back in place.</span>") | ||
else | ||
visible_message("<span class='boldnotice'>[src] scrambles into the ventilation ducts!</span>", "<span class='notice'>You climb into the ventilation system.</span>") | ||
loc = entrance_found |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
loc = entrance_found | |
forceMove(entrance_found) |
Will make sure other logic won't break
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried this. It completely breaks ventcrawling, by making all nonpipes solid black sprites.
@SteelSlayer I am unable to replicate your T-ray issue or the runtime. I tried to do what was in your screenshot to no avail. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First pass, split for reasons
code/ATMOSPHERICS/atmospherics.dm
Outdated
user.forceMove(src.loc) | ||
user.visible_message("You hear something squeezing through the pipes.", "You climb out the ventilation system.") | ||
user.canmove = 0 | ||
if(do_after(user, 30, target = src)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sources tell me target=src
may be a problem and may not work well with people in vents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Target is just for the location of the progress bar and is only visible to the user. It worked fine in testing. Is there any interaction you are concerned about?
code/ATMOSPHERICS/atmospherics.dm
Outdated
|
||
/obj/machinery/atmospherics/AltClick(var/mob/living/L) | ||
if(is_type_in_list(src, GLOB.ventcrawl_machinery)) | ||
if(is_type_in_list(src, GLOB.ventcrawl_machinery) || check_open()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you sure this is meant to be ||
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, because vent crawl machinery is the list of vents, scrubbers, and passive vents. Check open on the other hand is a function that checks if the chosen atmospherics machinery has a potential connection that isn't currently filled, for example, a T junction with an open side.
TLDR: This OR lets you enter open pipes.
if(!do_after(src, 45, target = src)) | ||
if(entrance_found) | ||
var/datum/pipeline/P = entrance_found.returnPipenet() | ||
if(P && (length(P.members) || P.other_atmosmch)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doesnt this make it so you cant climb into single device pipenets? If so you need to document this change
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I went back and checked, you are still able to climb into single device pipe nets.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Second batch
else | ||
to_chat(src, "<span class='warning'>This ventilation duct is not connected to anything!</span>") | ||
show_ventcrawl(entrance_found) | ||
loc = entrance_found // This can not be a forcemove. It will break the ventcrawl UI |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you figure out why forceMove()
breaks this? Force setting the loc
var without other sanity checks is bad practice
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can try, though this kinda falls into legacy code that I don't really understand why territory. I was just adding a comment for the sake of others trying to fix this in the future. It wasn't code I added.
Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
user.remove_ventcrawl() | ||
user.forceMove(target_move.loc) //handles entering and so on | ||
user.visible_message("You hear something squeezing through the ducts.", "You climb out the ventilation system.") | ||
if(is_type_in_list(target_move, GLOB.ventcrawl_machinery)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not your fault, but yikes, this should really use a typecache instead of constantly looping through a list.
visible_message("<b>[src] scrambles into the ventilation ducts!</b>", "You climb into the ventilation system.") | ||
src.loc = vent_found | ||
add_ventcrawl(vent_found) | ||
if(failed) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure failed
is necessary here, since you're returning at the first chance you get.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea, there used to be multiple things that caused failed.
|
||
/mob/living/proc/remove_ventcrawl() | ||
GLOB.ventcrawlers.Remove(src) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does remove_ventcrawl
get called when the mob is destroyed? If not, there might be a null
value in the ventcrawlers list.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Basically yes. Update ventcrawl gets called every time a pipenet is updated, which will remove them. I added it to destroy to be sure.
Co-authored-by: dearmochi <shenesis@gmail.com>
This Fixes #11813
What Does This PR Do
This PR makes a few changes to improve the experience of someone ventcrawling
Why It's Good For The Game
Images of changes
Changelog
🆑
add: Added the ability to vent crawl into open pipes.
add: Added a 3 seconds delay to leaving ventcrawl via pipes.
add: Added the ability to enter passive vents.
add: Added the ability for maintenance drones to enter welded vents after a delay.
tweak: Ventcrawl overlay now updates when changing pipenets and when a pipenet is edited.
/:cl: