diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index f5fa526654f..f90d10b3995 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -255,10 +255,9 @@ Doesn't work on other aliens/AI.*/
/obj/effect/proc_holder/alien/regurgitate/fire(var/mob/living/carbon/alien/user)
if(user.stomach_contents.len)
for(var/atom/movable/A in user.stomach_contents)
- if(A in user.stomach_contents)
- user.stomach_contents.Remove(A)
- A.loc = user.loc
- //Paralyse(10)
+ user.stomach_contents.Remove(A)
+ A.loc = user.loc
+ A.update_pipe_vision()
user.visible_message("[user] hurls out the contents of their stomach!")
return
diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm
index eb582bbcfa1..2d4c8ce153b 100644
--- a/code/modules/mob/living/login.dm
+++ b/code/modules/mob/living/login.dm
@@ -10,7 +10,10 @@
if("sandbox")
CanBuild()
+ //Vents
if(ventcrawler)
src << "You can ventcrawl! Use alt+click on vents to quickly travel about the station."
+ update_pipe_vision()
+
update_interface()
return .
diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm
index 5da0fcc8903..6c9d2c583c7 100644
--- a/code/modules/mob/living/ventcrawling.dm
+++ b/code/modules/mob/living/ventcrawling.dm
@@ -47,9 +47,9 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
for(var/obj/item/I in contents)
var/failed = 0
if(istype(I, /obj/item/weapon/implant))
- var/obj/item/weapon/implant/imp = I
- if(imp.imp_in != src)
- failed++
+ continue
+ else
+ failed++
if(failed)
src << "You can't crawl around in the ventilation ducts with items!"
@@ -80,4 +80,18 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
pipes_shown.len = 0
if(client)
- client.eye = src
\ No newline at end of file
+ client.eye = src
+
+
+
+//OOP
+/atom/proc/update_pipe_vision()
+ return
+
+/mob/living/update_pipe_vision()
+ if(pipes_shown.len)
+ if(!istype(loc, /obj/machinery/atmospherics))
+ remove_ventcrawl()
+ else
+ if(istype(loc, /obj/machinery/atmospherics))
+ add_ventcrawl(loc)
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index a261287a103..c9d1843bf78 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -78,6 +78,8 @@
if (tr_flags & TR_DEFAULTMSG)
O << "You are now a monkey."
+ O.update_pipe_vision()
+
for(var/A in loc.vars)
if(loc.vars[A] == src)
loc.vars[A] = O
@@ -191,6 +193,8 @@
if (tr_flags & TR_DEFAULTMSG)
O << "You are now a human."
+ O.update_pipe_vision()
+
updateappearance(O)
. = O
@@ -238,6 +242,8 @@
else
O.key = key
+ O.update_pipe_vision()
+
var/obj/loc_landmark
for(var/obj/effect/landmark/start/sloc in landmarks_list)
if (sloc.name != "AI")
@@ -322,6 +328,8 @@
else
O.key = key
+ O.update_pipe_vision()
+
O.loc = loc
O.job = "Cyborg"
O.notify_ai(1)
@@ -357,6 +365,7 @@
new_xeno.key = key
new_xeno << "You are now an alien."
+ new_xeno.update_pipe_vision()
. = new_xeno
qdel(src)
@@ -389,6 +398,7 @@
new_slime.key = key
new_slime << "You are now a slime. Skreee!"
+ new_slime.update_pipe_vision()
. = new_slime
qdel(src)
@@ -425,6 +435,7 @@
new_corgi.key = key
new_corgi << "You are now a Corgi. Yap Yap!"
+ new_corgi.update_pipe_vision()
. = new_corgi
qdel(src)
@@ -458,6 +469,7 @@
new_mob << "You suddenly feel more... animalistic."
+ new_mob.update_pipe_vision()
. = new_mob
qdel(src)
@@ -475,6 +487,7 @@
new_mob.key = key
new_mob.a_intent = "harm"
new_mob << "You feel more... animalistic"
+ new_mob.update_pipe_vision()
. = new_mob
qdel(src)