@Targaryen: I will look into compatibility with Yanfly's passive states for the next update. It is something I definitely want in this plugin.
@Silenity: For now, "gems" need to be an armor type of none in order to function properly. I will try to replicate this bug today, though.
@Roguedeus, @Spacemanfive, @Black Noise: I should be able to implement the Polarity concept fairly easily. I'm just spitballing here, but how does this sound:
I'd want socket categories to be defined globally for each weapon type. This way, if you get halfway through you game and decide to add a pommel socket to your sword weapon, you don't have to copy/paste it over and over. I'd look over all actor notetags for weapon socket types, so you can use a blank actor to enter this information. If someone has an alternative idea, please let me know. The tags would look kinda like this:
<SocketEx SocketInfo>
Weapon/Armor: WeaponOrArmorTypeID
Sockets: 3
SocketInfo1: Blade=10
SocketInfo2: Hilt=11
SocketInfo3: Grip=12
</SocketEx SocketInfo>
Each SocketInfo line above specifies the name and options for each socket. The =Number that follows the socket name tells the plugin what armor type IDs are valid for this socket. If you want all gems to fit into a socket, you would specify 0 or leave it blank. If you want multiple gem types to fit into a socket, you would separate them with commas: 10, 11, 12, etc.
All weapons/armors would have the default number of sockets and socket information specified above. You could override it at the weapon/armor level by applying the same tags:
<SocketEx SocketInfo>
Sockets: 4
SocketInfo4: Pommel=13
</SocketEx SocketInfo>
It would read the default information, then read the tags above and add a new empty socket to the weapon/armor of the type 'Pommel'. That weapon/armor only would have the additional Pommel socket, and it would only accept gems with an armor type of 13.
If you do not specify any global options for a socket, it will show the default Socket Empty text from the parameter and accept any gem type.
Gems would be any armor type, providing freedom from notetags to an extent. (Make a new armor type called "Blade", set the ID of that armor type to the "Blade" socket as specified above). If you want to retain the functionality of the plugin as it is today, you would continue to use armor type none. The gem notetags would look like the following:
<SocketEx >
Weapon: 1, 2
Armor: 1, 2
</SocketEx>
This would allow you to still restrict certain gems, say a holy blade from an evil sword, by weapon or armor type IDs. They would also be restricted to specific sockets if you configured that at the global level.
Does this sound like it would fit your requests, minus specific incompatibility and limiting? I would like to add this functionality first, as it would be a good baseline for socket restrictions that I could then expand in a future update to include the remaining limitation requests.