diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index 4c1c235fe1..85436178fe 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -73,39 +73,21 @@
if(I.loc == src)
return TRUE
- if(I.anchored)
+ if(I.anchored || !put_in_hands(I))
blacklistItems[I] ++
return FALSE
- // WEAPONS
- if(istype(I, /obj/item))
- var/obj/item/W = I
- if(W.force >= best_force)
- put_in_hands(W)
- best_force = W.force
- return TRUE
-
- // CLOTHING
- else if(istype(I, /obj/item/clothing))
- var/obj/item/clothing/C = I
- monkeyDrop(C)
- addtimer(CALLBACK(src, .proc/pickup_and_wear, C), 5)
- return TRUE
-
- // EVERYTHING ELSE
+ if(I.force >= best_force)
+ best_force = I.force
else
- if(!get_item_for_held_index(1) || !get_item_for_held_index(2))
- put_in_hands(I)
- return TRUE
+ addtimer(CALLBACK(src, .proc/pickup_and_wear, I), 5)
- blacklistItems[I] ++
- return FALSE
+ return TRUE
-/mob/living/carbon/monkey/proc/pickup_and_wear(var/obj/item/clothing/C)
- if(!equip_to_appropriate_slot(C))
- monkeyDrop(get_item_by_slot(C)) // remove the existing item if worn
- sleep(5)
- equip_to_appropriate_slot(C)
+/mob/living/carbon/monkey/proc/pickup_and_wear(obj/item/I)
+ if(QDELETED(I) || I.loc != src)
+ return
+ equip_to_appropriate_slot(I)
/mob/living/carbon/monkey/resist_restraints()
var/obj/item/I = null
@@ -311,7 +293,8 @@
if(I == pickupTarget)
M.visible_message("[src] snatches [pickupTarget] from [M].", "[src] snatched [pickupTarget]!")
if(M.temporarilyRemoveItemFromInventory(pickupTarget) && !QDELETED(pickupTarget))
- equip_item(pickupTarget)
+ if(!equip_item(pickupTarget))
+ dropItemToGround(pickupTarget)
else
M.visible_message("[src] tried to snatch [pickupTarget] from [M], but failed!", "[src] tried to grab [pickupTarget]!")
pickpocketing = FALSE