Есть и более сложные случаи. Не знаю, как это делается в Г2, а в Г1 для определения количества боеприпасов для экипированного в данный момент оружия (либо лук, либо арбалет - боеприпасы разные) используется функция
func int Npc_GetInvItemBySlot(var C_NPC npc, var int category, var int slot);
Cпойлер(щелкните, чтобы прочесть):
// возвращает кол- во предметов, которые находятся у НПС npc,
// где category – категория инвентаря
// (INV_WEAPON, INV_ARMOR, INV_RUNE, INV_MAGIC, INV_FOOD, INV_POTION, INV_DOC, INV_MISC)
// slot – номер слота предмета.