For anyone curious about the current setup:
CreateWeapon takes a table that needs to have a .ViewModel string, .Offset vec3, and .Scale vec3.
AddAnimation takes a unique name (the ones you see there are what the internal system will be looking for, though I may add the ability to set them custom soon). The second and third parameters are start and end frames. The 4th is a speed modifier, and the last is an optional "one shot" boolean. Things like idle and move are looped, so it defaults to false, but things like reload and fire are done once per state before the state changes.
AddSound takes a unique name (the system is designed to play them by frame, but I added WEAPON_DRYFIRE in at the last second along with a weapon:PlaySound(name) command for custom effects not linked to animation), the sound file string location (it handles creating the sound and source), and the frame of animation it should be played at.
I basically tried to take the FPS Creator form of setting up guns via their gunspec.txt files, and implement it in a Lua fashion, though my system offers more customization and can be expanded by the user.