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)