It appears that objAddItemEnhancement:

Presumably this is because:

  • shpEnhance goes via CSpaceObject::EnhanceItem
  • objAddItemEnhancement goes via CSpaceObject::AddItemEnhancement which contains the comment LATER: This should be replaced with EnhanceItem(), which is a superset.

Note - for time limited enhancements it would be nice if they only counted time while the device was installed/activated (e.g. field crystals should not burn out if they're added to a shield device in cargo hold). However, this would probably add a bit too much complexity to the enhancement system

george moromisato 15 Oct 2019:

1.9 Alpha 2 adds yet another function: objEnhanceItem. This function is meant as a replacement for both objAddItemEnhancement and shpEnhanceItem. The new function takes the string syntax and also accepts a lifetime. It also returns both a result code and an enhancement ID.