anchor.diff:  		//usually this would be a callback but this is a specifically gutlunch feature so fuck it, gutlunch specific proccall
   		gutlunch.regenerate_icons(reagents.total_volume, reagents.maximum_volume)
   
  -///signal called on parent attacking an atom
  -/obj/item/udder/proc/on_mob_attacking(mob/living/simple_animal/hostile/gutlunch, atom/target)
  +/**
  + * signal called on parent attacking an atom
  +*/
  +/obj/item/udder/gutlunch/proc/on_mob_attacking(mob/living/simple_animal/hostile/gutlunch, atom/target)
   	SIGNAL_HANDLER
   
   	if(is_type_in_typecache(target, gutlunch.wanted_objects)) //we eats
   		generate()
  -		gutlunch.visible_message(span_notice("[src] slurps up [target]."))
  +		gutlunch.visible_message(span_notice("[udder_mob] slurps up [target]."))
   		qdel(target)
   	return COMPONENT_HOSTILE_NO_ATTACK //there is no longer a target to attack
   
  
positive.code: 		generate() //callback is on generate() itself as sometimes generate does not add new reagents, or is not called via process
  
  /**
   * # initial_conditions
   *
   * Proc called on creation separate from the reagent datum creation to allow for signalled milk generation instead of processing milk generation
   * also useful for changing initial amounts in reagent holder (cows start with milk, gutlunches start empty)
   */
  
negative.code: 	START_PROCESSING(SSobj, src)
  
  /**
   * Proc called every 2 seconds from SSMobs to add whatever reagent the udder is generating.
   */
  /obj/item/udder/proc/generate()
  