Don't worry modders will do de job
The feedback...about the interface they can add a parameter to the submarine object, and use as interface a rudder "image" with two levers where people clicks on the levers directly.
And how to compensate de propulsion. They would need a block of program code for every kind of simulation (one or two helix, rotation to the left or to the right).
I'll post it in programmer argot an example of how it could work:
twin_drive = [On=1 /Off=0]
var_lever1 (interface imputs)
var_lever2 (interface imputs)
var_helix1 (propeller)
var_helix2 (propeller)
controller_code1 (for nomal subs impulse)
controller_code2 (for twin helix submarines)
*state variable defaults
var_lever1_visible = 1
var_lever2_visible = 1
var_helix1 = var_lever1
var_helix2 = var_lever2
twin drive = 1
var_controller = controller_code2
[Controller_code1]
more code....
var_helix1 = var_lever1
var_helix2 = var_lever1
var_lever2 = 0
[Controller_code2]
more code....
var_helix1 = var_lever1
var_helix2 = var_lever2
var_lever2 = 1
-----------------
if twin_drive = 1
var_controller = Controller_code2
elseif
var_controller = Controller_code1
elseif
...
...
end if
Programmers will know how it's their engine and why if they can't apply this logic or how to do it.