anchor.diff:  	if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED))
   		return
   	if(ismopable(A))
  -		icon_state = "cleanbot-c"
   		mode = BOT_CLEANING
  +		update_icon_state()
   
   		var/turf/T = get_turf(A)
   		if(do_after(src, 1, target = T))
  
positive.code: 		C.Knockdown(20)
  
  /mob/living/simple_animal/bot/cleanbot/attackby(obj/item/W, mob/living/user, params)
  	if(W.GetID())
  		if(bot_core.allowed(user) && !(bot_cover_flags & BOT_COVER_OPEN) && !(bot_cover_flags & BOT_COVER_EMAGGED))
  			bot_cover_flags ^= BOT_COVER_LOCKED
  			to_chat(user, span_notice("You [bot_cover_flags & BOT_COVER_LOCKED ? "lock" : "unlock"] \the [src] behaviour controls."))
  		else
  			if(bot_cover_flags & BOT_COVER_EMAGGED)
  				to_chat(user, span_warning("ERROR"))
  			if(bot_cover_flags & BOT_COVER_OPEN)
  				to_chat(user, span_warning("Please close the access panel before locking it."))
  			else
  				to_chat(user, span_notice("\The [src] doesn't seem to respect your authority."))
  	else if(istype(W, /obj/item/knife) && !user.combat_mode)
  		to_chat(user, span_notice("You start attaching \the [W] to \the [src]..."))
  		if(do_after(user, 25, target = src))
  			deputize(W, user)
  
negative.code: 	var/pests = 0
  	var/drawn = 0
  
  	var/base_icon = "cleanbot" /// icon_state to use in update_icon_state
  	var/list/target_types
  	var/obj/effect/decal/cleanable/target
  	var/max_targets = 50 //Maximum number of targets a cleanbot can ignore.
  