I'm certainly in favour of using attributes over modules where possible, however there are 2 major problems I have with their current implementation that make life harder when using attributes:
- The expression property is executed on the server only in MP. The way it currently is, you have to handle locality and any future JIP clients from a point of origin on the server at mission start - whereas with a module you simply change the isGlobal property. If a second property (equivalent of isGlobal) was implemented to dictate where the expression will run then using attributes would be much more viable. Surely it would also be simpler this way since that information can be saved into the mission.sqm and all clients can simply read it from there.
- The condition expression uses simple expressions. If your attribute only applies to objects with a much more specific condition (i.e. only objects with a certain config entry) there's no way to express that here. The alternative is to define attributes directly in the CfgVehicles entry - however then the attributes appear as entity specific with no category and you have to consider inheritance and duplicate the attribute into all objects that apply. I understand if it was implemented this way for performance reasons and cannot be changed - in which case it would at least be nice to be able to specify categories within object specific attributes.