Another suggestion I just thought of would be for each fire mode having an optional counter system that limits how many times you can use it per round. Even if you have enough TU to keep using that fire mode, when it reaches its limit its done for that turn (might even apply to the whole turn, including reaction shots).
(to make this easy on the AI the weapon could actually disable that mode in such a way that it disappears off the list, like the weapon no longer has a Snap, Auto, Aimed etc mode when its been reached. And next turn when the maximum uses is refreshed, it comes back again)
We generally consider that every turn is probably 3-5 seconds long in terms of realtime so it is justifiable that a weapon could be disabled for use longer than it takes to actually use it.
There are some weapons that (could) have an implied self-reload function that doesn't interfere with the shooter's actions, but takes the weapon out of commission while the weapon readies itself. So thats for like cooldown delays or lightning reloads.
For example a double barrel shotgun that is handled, rather than having a capacity of two, it automatically fires both each time. That way it can fire both as a snap shot. However instead of having a capacity of only one attack the weapon is blockBothHands and each "clip" is actually 2 pounds worth of shotgun shells (ehh, maybe 5 attacks at this rate) which the character is implied to be carrying with their other hand.
It would probably only suck up like 35-40% TU to just point and shoot the thing, but because (like doom) its implied that the shooter reloads it after each attack that means it takes time to get another shot with it - they're only limited to 1 attack each round.
Something similar could be done with experimental plasma weapons, or lasers that are relatively quick to fire but they only get like 2 shots per turn just because of overheating.
Its probably better to layer this function so that you have a Universal Uses value, but an individual mode (like Auto) could have a lower number of uses.
Another Suggestion
shotgunNoSpring: true
for a clip item, would cause the firing of a weapon that is using shotgunPellets to have no effect on the current camera view of the battlefield. It wouldn't jump back to the shooter, it just leaves the camera where it is.
Most of the time when we're firing a shotgun at some enemy we want to see how effective and where the pellets went generally, so this is a really functional option (it might even be better to just make it a universal Extended option)
Another Suggestion:
Multiple Clips per weapon (same type of clip only, if you load another clip even if its on the compatible ammo list it will say that its the wrong type of ammo for the weapon)
The weapon simply combines the number of shots available into a pooled magazine capacity, though it is subtracting ammo from only one of the clips at a time. Especially useful for making advanced or deluxe versions of guns (especially energy weapons) that can plug in multiple cells so they can be supplied with the same ammunition (this is supposed to be one of the logistical strengths of developing energy weapons IRL...).
Also useful for shotguns that have a much longer, or double feed tube so that you can load twice the amount of ammunition.
The way this would work for loading/unloading is:
The weapon be default loads as many of the clips as it can to full at the start of a mission/equip. The weapon cant have a clip loaded into it unless at least one of the clips it has is empty (so, shot count will not equalize).
If the weapon was completely empty or had multiple clips missing from it, each clip dragged onto the weapon will assess the TU loading cost like usual and only loads one clip (the one that was grabbed).
However if you go to Unload the weapon all of the clips are removed.
One clip is placed in the other free hand...
All the other clips are dropped to the ground.
"This gatling laser has 4 feed sockets for standard laser rifle, or laser pistol cells."
"The UAC chaingun has a remarkably complex loading mechanism which, eschewing traditional belt feed or drum based munitions, instead has 5 loading sockets for standard pistol magazines, which the weapon automatically switches between and releases when rendered empty. A reliable, and practical, of somewhat ornery design."
Yet More Suggestions:
damageAlter:
explosionDensity: 0.5
Scales the effective weapon power when determining the drawing routine for explosion sprites (but for that alone, its a graphical tweak). So for the example above if it does 70 blast damage its only going to draw the explosion as if it did 35.
This is useful if the explosion uses a different (more intense style) sprite and you only want it to display one of them, or if the blast has a pretty tight radius because its an armor piercing sorta warhead - and the large blast cloud you'd see isnt indicative of the 2 or 3 tile radius that it affects. Likewise a heavy shrapnel explosion that only goes "pop" but scatters damage over a big area, setting the explosion density low makes it look like a small explosion but then you see the actual damage pattern is pretty big for it.
damageAlter: (or damageBonus)
directHitScale: 2.0
(or)
directHit: 50
On a direct hit, an attack with a splash radius will have its power multiplied by this amount for the object that was struck (and that object only) before damage is rolled. Ideal for emulating shaped charge warheads, or in general making it much nastier on a direct hit for any kind of explosive.
Alternatively you could insert is as a damageBonus which just raises the power by a flat value since it would do the same job.
damageAlter: (or damageBonus)
selfSplashDamage: -40
This option reduces the splash damage (affects power before rolling, flat value) that the shooter of the attack takes. Everything else including the tile the shooter is in will be unaffected by this.
Useful for "I know im shooting this thing so I brace for it while firing", and also explosive crap fired from small grenade launchers which is also intended to be used at point blank range (giving an even bigger middle finger to the guy being shot by it). Also ideal for emulating a BFG.
Also ideal for HWPs and other enemies with built in explosive weapons so they can fire them at point blank range without fear of being killed by their own shots (though im not sure if the AI can be told to fire-without-abandon, the AI might still try to reposition itself to reduce self hurt)