hmm i think this is what you need:
---------------------------------------
*isequipped(<id>{,<id>{,..}})
This function will return 1 if the invoking character has all of the item
IDs given equipped (if card IDs are passed, then it checks if the cards are
inserted into slots in the equipment they are currently wearing). Theoretically
there is no limit to the number of items that may be tested for at the same time.
If even one of the items given is not equipped, 0 will be returned.
// (Poring,Santa Poring,Poporing,Marin)
if (isequipped(4001,4005,4033,4196)) mes "Wow! You're wearing a full complement of possible poring cards!";
// (Poring)
if (isequipped(4001)) mes "A poring card is useful, don't you think?";
The function was meant for item scripts to support the cards released by Gravity
in February 2005, but it will work just fine in normal NPC scripts.
---------------------------------------
*isequippedcnt(<id>{,<id>{,..}})
This function is similar to 'isequipped', but instead of 1 or 0, it will return
the amount of item/card equipped that were found on the invoking character from the given list.
Example:
if (isequippedcnt(4001,4005,4033,4196) == 5)
mes "Finally got 5 cards from poring monsters type?";
---------------------------------------
*checkequipedcard(<card id>)
This function will return 1 if the card specified by its item ID number is
inserted into any equipment they have in their inventory, currently equipped or
not.
---------------------------------------
check doc/script_commands.txt
way back before, to stop kiel card from stacking
bonus bDelayRate,( -30 / isequippedcnt(4403) );