In practice, think about you have a house rules modified game in which you add a "minefield", or whatever, unit that is exactly the same as an AA gun, except that it is a sea unit and targets all sea units (instead of all air units). Would the "minefield" resolve its fire and remove casualties before, at the same moment or after the "submarine" make their strikes?
In the current engine, units hit by AA fire are removed from the battle before
isFirstStrike(aka subs) can fire. So the "minefield" will have removed the "submarine" before it gets to fire.
@Trevan Let me know if I understood you correctly. I think I understand exactly what you mean, but you are not being very clear. For example, here:
For example, a game has "Defending Subs Sneak Attack" and there is a firstStrike unit attacking another firstStrike unit. If there is a destroyer on defense, then the defending firstStrike gets a sneak attack before the attacker. If the destroyer is on offense, then the attacker gets the sneak attack. But if the destroyer isn't there, then both the attacker and defender can fire at each other.
Instead of "then both the attacker and defender can fire at each other", I assume you mean "then both the attacker and defender can strike first" ("first strike" is "surprise strike" @Panther). Side note, you are clearly referring to v3 and later rules destroyers only, not v1 or v2 ones.
I have no idea if I'm referring to v3, v2, or v1 destroyers since I don't know what that exactly means. I'm just referring to how the code treats the destroyers.
As for the battle, "then both the attacker and defender can fire at each other" means that neither gets a sneak attack on each other. The attacker can fire and hit the defender, but the defender can fire back.
Then, you are wrong. If there are no destroyers at all in the battle, both under v2 and v3+ rules (v1 doesn't matter here, as only offensive submarines can), all submarines offensively and defensively "sneak attack" on each other. This too implies that the defender can fire back, but the reason is because the defender is "sneak attacking" too, not because "neither gets a sneak attack". Under v2 rules, the fact that all submarines offensively and defensively "sneak attack" is actually true also in any case of destroyer presence, as the destroyer has the function of delaying "sneak attack" casualties removal.
To be clear, I understand that you are substantially understanding the matter correctly, but you are explaining it wrongly, especially in the moment you say "neither gets a sneak attack on each other", because you don't get a sneak attack on something specifically. I believe you should have said something like "neither is able to cause any removal of sneak attack able units before they can fire too", instead.