From 11ab5901ee1268f4ead0aa6e3e68066272ce65ce Mon Sep 17 00:00:00 2001 From: Tkdrg Date: Sat, 14 Nov 2015 17:05:08 -0300 Subject: [PATCH] Pickup() improvements Fixes flashlight exploit. Removes unused proc can_use_hands(). Fixes #11282 --- code/game/objects/items.dm | 9 ++++++--- code/modules/mob/dead/observer/observer.dm | 4 ++-- code/modules/mob/living/carbon/carbon.dm | 7 ------- code/modules/mob/mob.dm | 3 --- 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 62d1d8a6538..f06293ac369 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -230,12 +230,13 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s pickup(user) add_fingerprint(user) - user.put_in_active_hand(src) + if(!user.put_in_active_hand(src)) + dropped(user) return /obj/item/attack_paw(mob/user) - + var/picked_up = 0 if (istype(src.loc, /obj/item/weapon/storage)) for(var/mob/M in range(1, src.loc)) if (M.s_active == src.loc) @@ -249,8 +250,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s if(istype(src.loc, /mob/living)) return src.pickup(user) + picked_up = 1 - user.put_in_active_hand(src) + if(!user.put_in_active_hand(src) && picked_up) + dropped(user) return diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index beeea0a9c18..80361df2e45 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -127,8 +127,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp for(var/obj/effect/step_trigger/S in locate(x, y, z)) //<-- this is dumb S.Crossed(src) -/mob/dead/observer/can_use_hands() return 0 -/mob/dead/observer/is_active() return 0 +/mob/dead/observer/is_active() + return 0 /mob/dead/observer/Stat() ..() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 0be185e4ff5..738a73ade31 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -269,13 +269,6 @@ item.throw_at(target, item.throw_range, item.throw_speed, src) -/mob/living/carbon/can_use_hands() - if(handcuffed) - return 0 - if(buckled && ! istype(buckled, /obj/structure/bed/chair)) // buckling does not restrict hands - return 0 - return 1 - /mob/living/carbon/restrained() if (handcuffed) return 1 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3163b7a5289..d9c75fb8582 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -658,9 +658,6 @@ var/list/slot_equipment_priority = list( \ if(istype(M, /mob/living/silicon/ai)) return show_inv(usr) -/mob/proc/can_use_hands() - return - /mob/proc/is_active() return (0 >= usr.stat)