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