What about just simply using a function or a package to just change the eye offset of the gun?
Not viable. Offset is based on the datablock. There's no function to use.