diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index a65821e52fb..a0da39a2976 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -74,10 +74,6 @@
var/obj/mecha/M = loc
return M.click_action(A,src)
- var/obj/item/W = get_active_hand()
- if(W == null || !(W.flags & ABSTRACT))
- face_atom(A)
-
if(restrained())
RestrainedClickOn(A)
return
@@ -86,6 +82,8 @@
throw_item(A)
return
+ var/obj/item/W = get_active_hand()
+
if(W == A)
next_move = world.time + 6
if(W.flags&USEDELAY)
diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index 555075d22e0..e7205f6aa46 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -195,6 +195,8 @@
return
var/obj/item/weapon/shield/changeling/S = ..(user)
+ if(!S)
+ return
S.remaining_uses = round(changeling.absorbedcount * 3)
return 1
diff --git a/code/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm
index bd7da10c2b8..9a17a188ec0 100644
--- a/code/game/gamemodes/events/space_ninja.dm
+++ b/code/game/gamemodes/events/space_ninja.dm
@@ -611,22 +611,22 @@ As such, it's hard-coded for now. No reason for it not to be, really.
//This proc allows the suit to be taken off.
/obj/item/clothing/suit/space/space_ninja/proc/unlock_suit()
affecting = null
- flags |= NODROP
+ flags &= ~NODROP
slowdown = 1
icon_state = "s-ninja"
if(n_hood)//Should be attached, might not be attached.
- n_hood.flags |= NODROP
+ n_hood.flags &= ~NODROP
if(n_shoes)
- n_shoes.flags |= NODROP
+ n_shoes.flags &= ~NODROP
n_shoes.slowdown++
if(n_gloves)
n_gloves.icon_state = "s-ninja"
n_gloves.item_state = "s-ninja"
- n_gloves.flags |= NODROP
+ n_gloves.flags &= ~NODROP
n_gloves.candrain=0
n_gloves.draining=0
if(n_mask)
- n_mask.flags |= NODROP
+ n_mask.flags &= ~NODROP
//Allows the mob to grab a stealth icon.
/mob/proc/NinjaStealthActive(atom/A)//A is the atom which we are using as the overlay.
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index b52033b180e..8887609a1a6 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -261,7 +261,8 @@
return
if(isrobot(user))
return
- usr.drop_item()
+ if(!usr.drop_item())
+ return
if(W)
W.loc = src.loc
else if(istype(W, /obj/item/weapon/packageWrap))
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index fb60fa0d3aa..019eacd96ed 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -133,7 +133,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/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 279e91db553..7df232e9d8d 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -421,7 +421,9 @@
O.show_message("\blue The [src] was sliced apart by [user]!", 1, "\red You hear [src] coming apart.", 2)
destroy()
- user.drop_item(src)
+ if(!(W.flags & ABSTRACT))
+ if(user.drop_item())
+ W.Move(loc)
return
/obj/structure/table/proc/straight_table_check(var/direction)
@@ -584,7 +586,9 @@
del(src)
return
- user.drop_item(src)
+ if(!(I.flags & ABSTRACT))
+ if(user.drop_item())
+ I.Move(loc)
//if(W && W.loc) W.loc = src.loc
return 1
@@ -636,7 +640,9 @@
del(src)
return
- user.drop_item(src)
+ if(!(W.flags & ABSTRACT))
+ if(user.drop_item())
+ W.Move(loc)
return 1
@@ -755,8 +761,6 @@
if(!(W.flags & ABSTRACT))
if(user.drop_item())
W.Move(loc)
- if(W && W.loc)
- W.loc = src.loc
return
/obj/structure/rack/meteorhit(obj/O as obj)
diff --git a/code/modules/mob/living/carbon/give.dm b/code/modules/mob/living/carbon/give.dm
index 5a28b8af193..4d9b0168e73 100644
--- a/code/modules/mob/living/carbon/give.dm
+++ b/code/modules/mob/living/carbon/give.dm
@@ -20,6 +20,9 @@
I = usr.r_hand
if(!I)
return
+ if((I.flags & NODROP) || (I.flags & ABSTRACT))
+ usr << "That's not exactly something you can give."
+ return
if(src.r_hand == null || src.l_hand == null)
switch(alert(src,"[usr] wants to give you \a [I]?",,"Yes","No"))
if("Yes")
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 89dd982e11b..b4f71ada72d 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -763,6 +763,8 @@ It can still be worn/put on as normal.
if(slot_to_process)
if(strip_item) //Stripping an item from the mob
var/obj/item/W = strip_item
+ if((W.flags & NODROP) || (W.flags & ABSTRACT)) //Just to be sure
+ return
target.unEquip(W)
if (target.client)
target.client.screen -= W