Fix putting someone into a machinery with active grab (#24246)

This commit is contained in:
Mikhail Dzianishchyts
2024-02-20 15:42:11 +00:00
committed by GitHub
parent f605c48e44
commit cc0014e401
10 changed files with 21 additions and 9 deletions
+1
View File
@@ -186,6 +186,7 @@
put_in(L)
if(user.pulling == L)
user.stop_pulling()
QDEL_LIST_CONTENTS(L.grabbed_by)
return TRUE
/obj/machinery/dna_scannernew/attackby(obj/item/I, mob/user, params)
@@ -38,6 +38,7 @@
return TRUE
visible_message("<span class='notice'>[user] puts [target] into [src].</span>")
QDEL_LIST_CONTENTS(target.grabbed_by)
target.forceMove(src)
occupant = target
flash = "Machine ready."
+1
View File
@@ -502,6 +502,7 @@
add_fingerprint(user)
if(user.pulling == L)
user.stop_pulling()
QDEL_LIST_CONTENTS(L.grabbed_by)
SStgui.update_uis(src)
/obj/machinery/sleeper/proc/permitted_check(atom/movable/O, mob/user)
+1
View File
@@ -148,6 +148,7 @@
else
visible_message("[user] puts [H] into the body scanner.")
QDEL_LIST_CONTENTS(H.grabbed_by)
H.forceMove(src)
occupant = H
playsound(src, 'sound/machines/podclose.ogg', 5)
+1
View File
@@ -576,6 +576,7 @@
return
if(!E)
return
QDEL_LIST_CONTENTS(E.grabbed_by)
E.forceMove(src)
time_till_despawn = initial(time_till_despawn) / willing_factor
icon_state = occupied_icon_state
+1
View File
@@ -230,6 +230,7 @@
return
target.stop_pulling()
QDEL_LIST_CONTENTS(target.grabbed_by)
target.forceMove(src)
occupant = target
+12 -9
View File
@@ -449,15 +449,18 @@
return TRUE
/obj/machinery/suit_storage_unit/proc/put_in(mob/user, mob/living/target)
if(do_mob(user, target, 30))
if(occupant || helmet || suit || storage)
return
if(target == user)
user.visible_message("<span class='warning'>[user] slips into [src] and closes the door behind [user.p_them()]!</span>", "<span class='notice'>You slip into [src]'s cramped space and shut its door.</span>")
else
target.visible_message("<span class='warning'>[user] pushes [target] into [src] and shuts its door!<span>", "<span class='userdanger'>[user] shoves you into [src] and shuts the door!</span>")
close_machine(target)
add_fingerprint(user)
if(!do_mob(user, target, 30))
return
if(occupant || helmet || suit || storage)
return
if(target == user)
user.visible_message("<span class='warning'>[user] slips into [src] and closes the door behind [user.p_them()]!</span>", "<span class='notice'>You slip into [src]'s cramped space and shut its door.</span>")
else
target.visible_message("<span class='warning'>[user] pushes [target] into [src] and shuts its door!<span>", "<span class='userdanger'>[user] shoves you into [src] and shuts the door!</span>")
close_machine(target)
if(occupant == target)
QDEL_LIST_CONTENTS(target.grabbed_by)
add_fingerprint(user)
/obj/machinery/suit_storage_unit/proc/cook()
if(uv_cycles)
@@ -156,6 +156,7 @@
add_attack_logs(user, L, "put into a cryo cell at [COORD(src)].", ATKLOG_ALL)
if(user.pulling == L)
user.stop_pulling()
QDEL_LIST_CONTENTS(L.grabbed_by)
SStgui.update_uis(src)
return TRUE
@@ -157,6 +157,7 @@
user.visible_message("<span class='danger'>[user] stuffs [victim] into [src]!</span>")
else
return
QDEL_LIST_CONTENTS(victim.grabbed_by)
victim.forceMove(src)
occupant = victim
+1
View File
@@ -221,6 +221,7 @@
add_attack_logs(user, target, "Disposal'ed", !!target.ckey ? null : ATKLOG_ALL)
else
return
QDEL_LIST_CONTENTS(target.grabbed_by)
target.forceMove(src)
for(var/mob/C in viewers(src))