Well, I took a little peak at the AI code and got a basic grasp on how it works. As has been well and ably argued already, an across-the board changing of the AI will trash every mission created in the last five years. A table based activation however, is stupidly easy.
No matter how we implement it, when new code is written for e.g. better maneuvering (i.e. barrel rolls, jinking, etc.), it will be necessary to specify which sorts of new maneuvers are used, and how well, by different AI classes. This is done by reading the numbers in the ai.tbl and plugging them into the code that controls the AI's action, and there is no reason to change that system. By adding a new string to ai.tbl entries, we can specify how well any given AI class uses the new maneuvers without affecting the code for the old maneuvers. Whereas the old entries in the ai.tbl would continue to read like this:$Name: General
$accuracy: 0.8 0.85 0.9 0.95 1.0
$evasion: 40, 50, 60, 80, 100
$courage: 40, 50, 60, 80, 100
$patience: 40, 50, 60, 80, 100
the new entries would have an extra string attached, like this:$Name: New_AI_Class
$accuracy: 0.8 0.85 0.9 0.95 1.0
$evasion: 40, 50, 60, 80, 100
$courage: 40, 50, 60, 80, 100
$patience: 40, 50, 60, 80, 100
[b]$maneuvering: 40, 50, 60, 80, 100[/b]
The new maneuvers would use the values entered in the new $maneuvering string instead of the $evasion values. If the string is not present in an entry, the new maneuvers are not used.
Why make big problems out of little problems?