anchor.diff:  
   /mob/living/simple_animal/parrot/proc/search_for_item()
   	for(var/atom/movable/AM in view(src))
  -		for(var/path in desired_items)
  -			if(parrot_perch && AM.loc == parrot_perch.loc || AM.loc == src) //Skip items we already stole or are wearing
  -				continue
  -
  -			if(istype(AM, path))
  -				return AM
  -
  -			if(iscarbon(AM))
  -				var/mob/living/carbon/C = AM
  -				if(istype(C.l_hand, path) || istype(C.r_hand, path))
  -					return C
  +		//Skip items we already stole or are wearing or are too big
  +		if(parrot_perch && AM.loc == parrot_perch.loc || AM.loc == src)
  +			continue
  +
  +		if(istype(AM, /obj/item))
  +			var/obj/item/I = AM
  +			if(I.w_class < 2)
  +				return I
  +
  +		if(iscarbon(AM))
  +			var/mob/living/carbon/C = AM
  +			if(C.l_hand.w_class <= 2 || C.r_hand.w_class <= 2)
  +				return C
   	return null
   
   /mob/living/simple_animal/parrot/proc/search_for_perch()
  
positive.code: 		return 1
  
  	for(var/obj/item/I in view(1,src))
  		for(var/path in desired_items)
  			//Make sure it's the proper item and we're not holding it
  			if(istype(I, path) && I.loc != src)
  
  				//If we have a perch and the item is sitting on it, continue
  				if(!client && parrot_perch && I.loc == parrot_perch)
  					continue
  
  				held_item = I
  				I.loc = src
  				visible_message("[src] grabs the [held_item]!", "\blue You grab the [held_item]!", "You hear the sounds of wings flapping furiously.")
  				return held_item
  
  	src << "\red There is nothing of interest to take."
  	return 0
  
negative.code: 			if(istype(AM, perch_path))
  				return AM
  
  		//Skip items we already stole or are wearing or are too big
  		if(parrot_perch && AM.loc == parrot_perch.loc || AM.loc == src)
  			continue
  
  		if(istype(AM, /obj/item))
  			var/obj/item/I = AM
  			if(I.w_class <= 2)
  				return I
  
  		if(iscarbon(AM))
  			var/mob/living/carbon/C = AM
  			if(C.l_hand.w_class <= 2 || C.r_hand.w_class <= 2)
  				return AM
  	return null
  
  
  