anchor.diff:  /obj/machinery/vending/attack_ai(mob/user as mob)
   	return attack_hand(user)
   
  +/obj/machinery/vending/proc/GetProductIndex(var/datum/data/vending_product/P)
  +	var/list/plist
  +	switch(P.category)
  +		if(CAT_NORMAL)
  +			plist=product_records
  +		if(CAT_HIDDEN)
  +			plist=hidden_records
  +		if(CAT_COIN)
  +			plist=coin_records
  +		else
  +			warning("UNKNOWN CATEGORY [P.category] IN TYPE [P.product_path] INSIDE [type]!")
  +	return plist.Find(P)
  +
  +/obj/machinery/vending/proc/GetProductByID(var/pid, var/category)
  +	switch(category)
  +		if(CAT_NORMAL)
  +			return product_records[pid]
  +		if(CAT_HIDDEN)
  +			return hidden_records[pid]
  +		if(CAT_COIN)
  +			return coin_records[pid]
  +		else
  +			warning("UNKNOWN PRODUCT: PID: [pid], CAT: [category] INSIDE [type]!")
  +			return null
  +
   /obj/machinery/vending/attack_hand(mob/user as mob)
   	if(stat & (BROKEN|NOPOWER))
   		return
  
positive.code: /datum/data/vending_product
  	var/product_name = "generic"
  	var/product_path = null
  
negative.code: 		R.price = price
  		R.display_color = pick("red","blue","green")
  		if(hidden)
  			R.category=CAT_HIDDEN
  			hidden_records += R
  		else if(req_coin)
  			R.category=CAT_COIN
  			coin_records += R
  		else
  			R.category=CAT_NORMAL
  			product_records += R
  
  		if(delay_product_spawn)
  