Some notes for D:OS 2:
Both APIs for example have no way to query the items equipped by a character nor can the items themselves be examined.
This was partially addressed with the "CharacterGetEquippedWeapon" and "CharacterGetEquippedShield" functions. Still no way to query the whole set of equipped items though

One possibility would be using ItemLaunchIterator to iterate through all items and check them one by one, or alternatively keeping an "is equipped" database by hooking ItemEquipped and ItemUnEquipped, and storing the items into the database. Both are quite nasty workarounds though.
A summon will *not* qualifiy as player2, because like a spawn, a summon is not a global character known at compile time.
Would it be possible to use "CombatGetNumberOfInvolvedPartyMembers" and "CombatGetInvolvedPartyMember" to enumerate summons?
paranoia of object handle waste ;-
Object handles are finally 64-bit, so we cannot run out of them like in D:OS 1.