From d28d7402161f6d3fc13c6b25cef356620ea588fa Mon Sep 17 00:00:00 2001
From: Mira <42539014+MiraHell@users.noreply.github.com>
Date: Wed, 29 Jan 2025 00:03:31 +0300
Subject: [PATCH] Fix some cases of silicons teleporting items on put_in_hands
(#28017)
* fix some cases
* forceMove
* replace usr with user
---
code/game/machinery/spaceheater.dm | 4 +++-
code/modules/hydroponics/gene_modder.dm | 9 ++++++---
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index e534e3b4739..9550e85b474 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -134,7 +134,9 @@
if("cellremove")
if(open && cell && !usr.get_active_hand())
cell.update_icon()
- usr.put_in_hands(cell)
+ cell.forceMove(loc)
+ if(Adjacent(usr) && !issilicon(usr))
+ usr.put_in_hands(cell)
cell.add_fingerprint(usr)
cell = null
usr.visible_message("[usr] removes the power cell from [src].", "You remove the power cell from [src].")
diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm
index 54fa10e4018..72c77d48fa7 100644
--- a/code/modules/hydroponics/gene_modder.dm
+++ b/code/modules/hydroponics/gene_modder.dm
@@ -338,7 +338,8 @@
if("eject_seed")
if(seed)
seed.forceMove(loc)
- user.put_in_hands(seed)
+ if(Adjacent(user) && !issilicon(user))
+ user.put_in_hands(seed)
seed = null
update_genes()
update_icon(UPDATE_OVERLAYS)
@@ -351,7 +352,8 @@
var/obj/item/disk/plantgene/D = contents[text2num(params["index"])]
if(D)
D.forceMove(loc)
- user.put_in_hands(D)
+ if(Adjacent(user) && !issilicon(user))
+ user.put_in_hands(D)
disk = null
update_genes()
else
@@ -420,7 +422,8 @@
for(var/obj/item/disk/plantgene/D in contents)
if(!D.gene && !D.is_bulk_core)
D.forceMove(loc)
- user.put_in_hands(D)
+ if(Adjacent(user) && !issilicon(user))
+ user.put_in_hands(D)
update_genes()
return
to_chat(user, "No Empty Disks to Eject!")