When you've got a getter and setter for craft resource for BaseWeapon, BaseArmor, etc. you can put custom method for setter (like InvalidateProperties - or similar). In this methods declaration put some "ifs", e.g. : if(craftresource == CraftResource.Valorite){<add aos attribute blah blah} -...