anchor.diff:  		Process(mob/Player/p, obj/items/ingredients/i)
   			if(isBusy) return
   
  -			pool |= 2 ** ((i.id - 1) * 3 + i.form)
  -
  -			var/f = 2 ** (i.id - 1)
  +			var/id     = (i.id - 1) * 3 + i.form
  +			var/poolId = 0
  +
  +			while(id > 15)
  +				poolId++
  +				id -= 16
  +
  +			if(poolId > 0)
  +				if(isnum(pool))
  +					var/t = pool
  +					pool = list()
  +					pool["0"] = t
  +
  +			if(isnum(pool))
  +				pool |= 2 ** id
  +			else
  +				if("[poolId]" in pool) pool["[poolId]"] = 0
  +				pool["[poolId]"] |= 2 ** id
  +
  +			var/f = 2 ** (i.id + 2)
   			if(!(flags & f))
   				flags |= f
  -				flags |= 2 ** (i.form + 4)
  +				flags |= 2 ** (i.form)
   
   			if(worldData.potions && ("[pool]" in worldData.potions))
   				var/potion = worldData.potions["[pool]"]
  
positive.code: 
  					if(!worldData.potions) worldData.potions = list()
  
  					potion = worldData.potions["[pool]"]
  					if(potion==null)
  						var/chance = max(5, 50 + POTIONS_AMOUNT - worldData.potionsAmount)
  
  
negative.code: 		Attacked(obj/projectile/p)
  			if(!isBusy && p.owner && isplayer(p.owner))
  
  				var/c = 0
  
  				if(isnum(pool)) c = countBits(pool)
  				else
  					for(var/poolId in pool)
  						c += countBits(pool[poolId])
  
  				if(c  < 1) return
  
  