Something else I'd like to re-propose... Muzzle Flash Upgrades:
I propose that muzzle flashes be configured for three possible methods of effects: Animation, Pulse, and Particle.
Now, animations as muzzle flashes is basically what we have already, though it could use a few improvements... for example, a translation capability. This means that the effect will appear to move away from the firing source, in the direction that the weapon shot took. If you've ever seen heavy cannons firing from naval warships, you'd see the explosion effect translating away from the barrel. Another upgrade is a little more complicated. Lets say that you have 2 different weapons that are in fact quite similar, just one is larger than the other. Correspondingly, you'd want the muzzle flash explosion to be larger on the larger weapon. I propose that a scale option be added within the weapons.tbl file, right after the muzzle flash is called. The figure used in this would multiply the size of the effect referenced in mflash.tbl, and either enlarge or shrink the size for that weapon specifically, and would also affect the translation distance (proposed above) by the same factor.
In mflash.tbl:
+name: bang
+blob_name: bang1
+blob_offset: 1.0
+blob_radius: 6.0
+blob_translation: 5.0 ;; distance in meters the effect will move away from where it started, in the direction that the turret normal is facing for that shot
In weapons.tbl:
$Muzzleflash: Bang
+Scale_factor: 1.0 ;; as default, which keeps the animation the same size as that in mflash.tbl. Larger numbers make it bigger, small numbers make it smaller
negative numbers give error.
The second method, is something akin to beamglows, but would be partially hacked to use some of the laser code. The downside is that it would pretty much need to be in the weapons table, rather than the muzzle flash table. This may require an additional entry so that the mflash.tbl call can be overridden. Basically, it seems to me that if I just want a brief pulse as my muzzle flash, rather than having to include an animation, what about using the same code which generates beamglows for beam weapons? For the most part, it would behave exactly like the beamglow in beam weapons, but it would work for pulse weapons. That said, it would greatly reduce the number of effects needed to be loaded, if instead of requiring the pulse effect to match the color you want, you could simply have an RGB line so that this can be specified by the game. Also, instead of simply using one figure to dictate the entire lifetime of the pulse, I advise that we retain the separate figures for pulse warmup and warmdown. For your typical flash, these two figures would be the same, and incredibly short, on the order of say a tenth of a second, but I've seen some people express the desire for a charge-up effect prior to pulse weapons firing. This would allow the modder to designate say a 3 second charge for the muzzle pulse, followed by a near instantaneous disappearance of the muzzle pulse, as the weapon discharges. Note, for this to occur, the release of the weapon has to be timed to coincide with the transition between pulse-up and pulse-down of the muzzle pulse. Anyway, for those who are trying to do the "charge-up" effect, retaining the particle effects from beamglows would be useful. So now we have:
$Muzzleflash_type: Animation ;; can be animation, pulse, or particle - this line is optional and will default to animation if not present
$Muzzleflash: Bang
+Scale_factor: 1.0
$Muzzleflash_type: Pulse ;; as you can see, you can have more than one type of animation in use on a weapon, greatly imprioving your options
+warmup: 100 ;; time in ms - note that "$Muzzleflash:" is only necessary if its an animation. If its "pulse" or "Particle", its not
+warmdown: 100 ;; time in ms
+radius: 1 ;; size in meters
+length: 1 ;; kinda borrowed from @Laser Length, incase you want your pulse to appear somewhat elongated rather than completely circlular.
+PCount: 10 ;; particles spawned, as with beamglows
+PRadius: 1.5 ;; size in meters
+PAngle: 180 ;; angle in degrees
+PAni: sparkle ;; filename
+warmupsound: 128 ;; for the charge-before-firing people
+muzzlepulse: pulse1 ;; filename
+MPulse_Color: 128, 128, 128 ;; RGB of how pulse1 should be adjusted for this particular weapon.
+MPulse_Offset: 1.0 ;; distance in meters, borrowed from the mflash.tbl for use with animations.
+MPulse_translation: 1.0 ;; distance in meters, not sure if you really want this one
Now, we move on to particles. We may have had particles in with the beamglow sfuff, but those are ones drawn into the beamglow as it charges, not as it discharges. The particles I'm proposing would be spewed outward from the muzzle. Its pretty straight forward:
$Muzzleflash_type: particle
+count: 20 ;; number of particles released when the weapon fires
+spew time: 0.7 ;; time in seconds it will take for all the particles to be spewed
+end time: 1.5 ;; how long the particles will last before they dissipate
+radius: 1 ;; distance in meters that the particles will travel away from the source - note, combining +end time with +radius will determine how fast the particles move.
+angle: 90 ;; angle in degrees from the direction the normal happens to be firing from at the time
+offeset: 1.0 ;; again, borrowed from mflash.tbl
+bitmap: twinkle ;; filename - could be +animation though.
All these would immensely improve the caliber and type of muzzle flashes available to moders. Furthermore, the use of the "pulse" type should reduce the load on memory, from having to store all the different pulse animations for each weapon, along with all the different color iterations depending on the weapon its associated with.