diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index d08ce1730ae..64b81956da8 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -540,8 +540,10 @@
if(src.SUIT)
user << "The unit already contains a suit."
return
+ if(!user.drop_item())
+ user << "\The [S] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
+ return
user << "You load the [S.name] into the storage compartment."
- user.drop_item()
S.loc = src
src.SUIT = S
src.update_icon()
@@ -554,8 +556,10 @@
if(src.HELMET)
user << "The unit already contains a helmet."
return
+ if(!user.drop_item())
+ user << "\The [H] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
+ return
user << "You load the [H.name] into the storage compartment."
- user.drop_item()
H.loc = src
src.HELMET = H
src.update_icon()
@@ -568,8 +572,10 @@
if(src.MASK)
user << "The unit already contains a mask."
return
+ if(!user.drop_item())
+ user << "\The [M] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
+ return
user << "You load the [M.name] into the storage compartment."
- user.drop_item()
M.loc = src
src.MASK = M
src.update_icon()
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 8ecd4881dac..cb4dcfb179c 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -256,6 +256,9 @@
if ( istype(W,/obj/item/clothing/head/helmet ) )
user << "This item does not fit."
return
+ if(W.flags & NODROP) //if "can't drop" item
+ user << "\The [W] is stuck to your hand, you cannot put it in the washing machine!"
+ return
if(contents.len < 5)
if ( state in list(1, 3) )
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index 3418f4f337e..1f5b47a9e9d 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -190,7 +190,9 @@ LINEN BINS
user << "You put [I] in [src]."
update_icon()
else if(amount && !hidden && I.w_class < 4) //make sure there's sheets to hide it among, make sure nothing else is hidden in there.
- user.drop_item()
+ if(!user.drop_item())
+ user << "\The [I] is stuck to your hand, you cannot hide it among the sheets!"
+ return
I.loc = src
hidden = I
user << "You hide [I] among the sheets."
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index fe863181e82..04d30f390bd 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -250,7 +250,6 @@
if(contents.len >= storage_capacity)
return -1
-
if(include_mobs && isliving(AM))
var/mob/living/L = AM
if(L.buckled)
@@ -325,7 +324,9 @@
if(opened)
if(isrobot(user))
return
- user.drop_item()
+ if(!user.drop_item()) //couldn't drop the item
+ user << "\The [W] is stuck to your hand, you cannot put it in \the [src]!"
+ return
if(W)
W.loc = src.loc
else if(istype(W, /obj/item/weapon/packageWrap))
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 4eadae15d4e..2554a7a76c3 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -146,7 +146,9 @@ FLOOR SAFES
if(open)
if(I.w_class + space <= maxspace)
space += I.w_class
- user.drop_item()
+ if(!user.drop_item())
+ user << "\The [I] is stuck to your hand, you cannot put it in the safe!"
+ return
I.loc = src
user << "You put [I] in [src]."
updateUsrDialog()
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 0bcdb347658..bc44ecd7791 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -708,7 +708,9 @@ Destroy type values:
return
if(isrobot(user))
return
- user.drop_item()
+ if(!user.drop_item())
+ user << "\The [O] is stuck to your hand, you cannot put it in the rack!"
+ return
if (O.loc != src.loc)
step(O, get_dir(O, src))
return
@@ -722,7 +724,9 @@ Destroy type values:
if(isrobot(user))
return
- user.drop_item()
+ if(!user.drop_item())
+ user << "\The [W] is stuck to your hand, you cannot put it in the rack!"
+ return
if(W && W.loc) W.loc = src.loc
return 1
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 5c9900c3c5c..f4c220ecf17 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -89,7 +89,9 @@
if(w_items + I.w_class > 5)
user << "The cistern is full."
return
- user.drop_item()
+ if(!user.drop_item())
+ user << "\The [I] is stuck to your hand, you cannot put it in the cistern!"
+ return
I.loc = src
w_items += I.w_class
user << "You carefully place [I] into the cistern."
diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index 090746089dd..52f7c1a8664 100644
--- a/code/modules/hydroponics/seed_extractor.dm
+++ b/code/modules/hydroponics/seed_extractor.dm
@@ -70,7 +70,10 @@ obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob
user << "There are no seeds in \the [O.name]."
return
- user.drop_item()
+ if(!user.drop_item()) //couldn't drop the item
+ user << "\The [O] is stuck to your hand, you cannot put it in the seed extractor!"
+ return
+
if(O && O.loc)
O.loc = src.loc
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index d8780e40fd2..03df5c1fae9 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -210,7 +210,9 @@
if(carved)
if(!store)
if(I.w_class < 3)
- user.drop_item()
+ if(!user.drop_item())
+ user << "\The [I] is stuck to your hand, you cannot put it in [title]!"
+ return
I.loc = src
store = I
user << "You put [I] in [title]."
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index 3efbcf57757..f38bfcb81c6 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -144,7 +144,9 @@
if( ! ( item_to_add.type in allowed_types ) )
usr << "You set [item_to_add] on [src]'s back, but \he shakes it off!"
- usr.drop_item()
+ if(!usr.drop_item())
+ usr << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s back!"
+ return
item_to_add.loc = loc
if(prob(25))
step_rand(item_to_add)
@@ -305,17 +307,21 @@
if(valid)
if(usr)
+ if(!usr.drop_item())
+ usr << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
+ return 0
usr.visible_message("[usr] puts [item_to_add] on [real_name]'s head. [src] looks at [usr] and barks once.",
"You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags \his tail once and barks.",
"You hear a friendly-sounding bark.")
- usr.drop_item()
item_to_add.loc = src
src.inventory_head = item_to_add
regenerate_icons()
else
+ if(!usr.drop_item())
+ usr << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
+ return 0
usr << "You set [item_to_add] on [src]'s head, but \he shakes it off!"
- usr.drop_item()
item_to_add.loc = loc
if(prob(25))
step_rand(item_to_add)
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 939d55a5739..8f0e3e9ea97 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -117,7 +117,9 @@
// attack with item, place item on conveyor
/obj/machinery/conveyor/attackby(var/obj/item/I, mob/user)
if(isrobot(user)) return //Carn: fix for borgs dropping their modules on conveyor belts
- user.drop_item()
+ if(!user.drop_item())
+ user << "\The [I] is stuck to your hand, you cannot place it on the conveyor!"
+ return
if(I && I.loc) I.loc = src.loc
return
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 3649c8ba438..f3515ed345d 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -69,9 +69,11 @@ Note: Must be placed within 3 tiles of the R&D Console
if (temp_tech.len == 0)
user << " You cannot deconstruct this item!"
return
+ if(!user.drop_item())
+ user << "\The [O] is stuck to your hand, you cannot put it in the analyzer!"
+ return
busy = 1
loaded_item = O
- user.drop_item()
O.loc = src
user << "You add the [O.name] to the machine!"
flick("d_analyzer_la", src)