If you use itmSetData or objSetItemData to set data (other than nil) on an item, Tinkers will refuse to use it for fabrication purposes.

0xabcdef 16 Aug 2018:

The game checks the player's inventory by creating a plain copy of the component and seeing if the player has it or its damaged version. An item with data on it is not the same as an item of the same type with different data.

					(availableComponents
						(map theComponents theComponent
							(block (countAvailable)
								(setq countAvailable 0)
									
								;	Add the number of non-damaged items we have
								
								(setq countAvailable (add countAvailable
									(objHasItem (or theSource gPlayerShip) theComponent 1)
									))
										
								;	Now add damaged items
									
								(setq countAvailable (add countAvailable
									(objHasItem (or theSource gPlayerShip) (itmSetProperty theComponent 'damaged True) 1)
									))
										
								;	Compose entry
									
								{	item: theComponent
									available: countAvailable
									}
								)
							)
)
assumedpseudonym 16 Aug 2018:

 It looks like there needs to be a check for type involved somewhere, probably before the above code even gets run.

megas 16 Aug 2018:

I guess items that get ionized by ion disruptor or the like would be similarly tainted too?

george moromisato 31 Aug 2018:

In 1.8 Beta 3 we ignore charges, data, and disruption when looking for a matching item. This should work for both Tinkers and foundries (in Part II).