The best way that I've found to do it is to make all of the items you are going to use as guns, then, in the object editor, change their "Stats - Classification" to all be the same type e.g. Artifact. Then, create a trigger which checks if the hero already an artifact, and, if so, makes it so that they cant pick up the 2nd item of the same type.
What I am currently using is this, however I am 99% certain that it would be alot easier to make using variables, however I'm not that great with them so you might need someone else for that. Mine says something like this:
Event
Unit - A unit aqcuires an item
Condition
(Item class of (Item being Manipulated)) Equal to Artifact
Action
If ((((Triggering unit) has an item of type (Random level -1 Artifact item-type)) Equal to True) and (((Triggering unit) is A Hero) Equal to True)) then do (Advanced - Do (Hero - Drop (Item being manipulated) from (Triggering unit))
The action looks complicated, and I think it can be simplified, but I am working on it atm in my own map. The -1 Artifact item level just means that the artifact can be any level. Then it checks that the unit picking up the item is the hero, which may not be necessary for you. Then it drops the 2nd artifact item.
Hope this helps, sorry if it didn't.