Pilot Comms Editing
Notes:
Not all pilots have audio files in SO.
Some pilots share audio files (and in some cases, callsigns) 
with other pilots. This can probably be changed to increase
the number of pilots, but more research is needed.
It should be possible to add brand new pilots simply by 
tacking them on at the end of the file.

Some pilots cause crashes for unknown reasons. This is because
some pilots are special... but we don't really know what makes
'em special.
The numbers below correspond to the first four numbers        
in the *.XA filename. The pilot comm number is always four digits,
even if the actual number is just one digit - in that case, you add 
zeros in front of it. For example:
00010000.XA corresponds to Amazon (pilot 1).
01620024.XA would be TCS Cerberus (pilot 162).

1 - Amazon
2 - Bishop
3 - Bookworm
4 - BoomBoom
5 - Bullet
6 - Caveman
7 - Comet
8 - Cowboy
9 - Dallas
10 - Drago
11 - Duke
12 - Falcon
13 - Giant
14 - Goblin
15 - Hawk
16 - Hellion
17 - Howdy
18 - Jumpstar
19 - Kingpin
20 - Kona
21 - Lawyer
22 - Maestro
23 - Majestic
24 - Maniac
25 - Mustang
26 - Mutant
27 - Ninja
28 - Nomad
29 - Ogre
30 - Pinpoint
31 - Pops
32 - Posse
33 - Professor
34 - Ranger
35 - Rattler
36 - Redline
37 - Rogue
38 - Roulette
39 - Royal
40 - Snake
41 - Sprite
42 - Spyder
43 - Stardust
44 - Steel
45 - Stiletto
46 - Sultan
47 - Sunflower
48 - Swan
49 - Tbone
50 - Twilight
51 - Twitch
52 - Veil
53 - Viking
54 - Warlord
55 - Wiley
56 - Wyvern
57 - Zero
58 - Zombie
59 - Marine LC 1
60 - Marine LC 2
61 - Confed Generic Pilot
62 - TCS Barkley
63 - TCS Porter
64 - TCS Redeemer
65 - TCS Midway
66 - unknown, empty?
67 - Transport (generic?)
68 - Pelican (generic?)
69 - TCS Deliverance
70 - SAR 1
71 - SAR 2
72 - SWACS 1
73 - SWACS 2
74 - Player 1
75 - Player 2 (MP?)
76 - Player 3 (MP?)
77 - Player 4 (MP?)
78 - Player 5 (MP?)
79 - Player 6 (MP?)
80 - Player 7 (MP?)
81 - Player 8 (MP?)
82 - Kilrathi Corvette
83 - Kilrathi Ace 1
84 - Kilrathi Ace 2
85 - Kilrathi Ace 3
86 - Kilrathi Generic 1
87 - Kilrathi Generic 2
88 - Kilrathi Generic 3
89 - Kilrathi Generic 4
90 - Kilrathi Generic 5
91 - Alien Ace 1
92 - Alien Ace 2
93 - Alien Ace 3
94 - Alien Ace 4
95 - Alien Ace 5
96 - Alien Ace 6
97 - Alien Ace 7
98 - Alien Warlord
99 - Alien Generic English 1
100 - Alien Generic English 2
101 - Alien Generic English 3
102 - Alien Generic English 4
103 - Alien Generic English 5
104 - Alien Generic English 6
105 - Alien Generic English 7
106 - Alien Generic English 8
107 - Alien Generic English 9
108 - Alien Generic English A
109 - Alien Generic English B
110 - Alien Generic English C
111 - Alien Generic English D
112 - Alien Generic English E
113 - Alien Generic English F
114 - Alien Generic No English 1
115 - Alien Generic No English 2
116 - Alien Generic No English 3
117 - Alien Destroyer
118 - Alien Dreadnought
119 - Alien Corvette
120 - Alien Carrier
121 - Alien Cruiser
122 - Alien Transport
123 - Alien Ship Killer
124 - Alien Comm Array
125 - GROUP (unknown)
126 - GROUP (unknown)
127 - GROUP (unknown)
128 - GROUP (unknown)
129 - GROUP (unknown)
130 - Blair
131 - Callisto Station
132 - Marine LC 1 (again?)
133 - Marine LC 2 (again?)
134 - Recon 1
135 - Sim Coach
136 - Bitchin' Betty (unused?)
137 - Jackie (unknown)
138 - Steel (Sim?)
139 - Professor (Sim?)
140 - Royal (Sim?)
141 - Giant (Sim?)
142 - Majestic (Sim?)
143 - Sunflower (Sim?)
144 - Zombie (Sim?)
145 - Pops (Sim?)
146 - Drago (Sim?)
147 - Cowboy (Sim?)
148 - Amazon (Sim?)
149 - Bookworm (Sim?)
150 - Duke (Sim?)
151 - Rogue (Sim?)
152 - Snake (Sim?)
153 - Blair (MP?)
154 - Maestro (MP?)
155 - Maniac (MP?)
156 - Spyder (MP?)
157 - Stiletto (MP?)
158 - Zero (MP?)
159 - Kilrathi Generic 1
160 - Kilrathi Generic 3
161 - Kilrathi Generic 5
162 - TCS Cerberus
163 - Twilight Purchase
164 - Shy Meadows
165 - Babylonia
166 - Santa Ana
167 - Confed Generic Capship Male 1
168 - Confed Generic Capship Male 2
169 - Confed Generic Capship Female 1
170 - Confed Generic Capship Female 2
171 - Confed Generic Station Male 1
172 - Confed Generic Station Male 2
173 - Confed Generic Station Female 1
174 - Confed Generic Station Female 2
175 - Cheryl's Song
176 - Kyoto Rose

The comm audio files are managed by the files inside comms\ - 
each file handles one pilot or a series of special comms. For 
example, amazon.iff handles Amazon's comms. For pilots, this 
file must first be declared inside pilots.iff, so the game knows 
which file to open. For series of special comms this is different, 
and will be covered later.
Basically, you can have as many audio files and comm lines as you 
like attached to a pilot (Maestro in WCP has over 150, so the limit
must be pretty high), provided they're all declared inside the right
comms\*.iff file, and named appropriately. You store audio files 
inside the ifcomms\ folder, and you store the related text strings 
inside language\pilots\*.eng. For example, language\pilots\amazon.eng
contains all the text strings for Amazon's comms.
Here is the basic structure of the iff file inside comms\ :
{
       FORM "COMM"
       {
       CHUNK "MOBJ"
       {
       long 1 // Type of video (see later on)
       long 0 // comm number - this refers to the last four digits 
       // of the audio filename;
       // it is also a reference to a text line inside the string file
       long 1 // unknown
       float 2.0 // the lenght of the audio file, in seconds (image 
       // will be cut when this time runs out
       long 16 // another unknown
       long 0 // the type of the comm - this determines when the game
       // will use the comm (in the case of pilots; in the case of 
       // special comms, it should be 57); see below
       long 0 // unknown
       long 0 // unknown
       }
       // Another comm example:
       CHUNK "MOBJ"
       {
       long 1 // 1 means standard helmet video
       long 1 // audio file number 1. In Amazon's case, this means 
              // 00010001.XA
       long 155
       float 2.0 // exactly 2 seconds long
       long 16
       long 2 // 2 means the file is used when reporting light 
              //enemy presence
       long 0
       long 0
       }
       }
       }
The types of videos (line 1) are as follows (many thanks to Mario 
"HCl" Brito for working these out):

       0 - text only, no video
       1 - helmet video; the type of helmet is determined by the 
       squadron, race, and comm type
       2 - WVE comm; instead of using a UV2 video plus XA audio, 
       the game will use a WVE file
       3 - agsrange; generic short range video
       4 - aglrange; generic long range video
       5 - agcapitl; generic capital ship video
       6 - dgsrange; same as #3, but the "dying" version
       7 - dglrange; same as #4, but the "dying" version
       8 - dgcapitl; same as #5, but the "dying" version
Attention: It is very important to note that unless the game finds an 
XA or WVE file corresponding to the comm's number, the comm will be 
text-only REGARDLESS of what you put into line 1. Take the example 
above, Amazon's comm number 1. This comm uses the standard helmet 
video (1). However, if you remove the file 00010001.XA from the 
\ifcomms directory, the comm will become text-only.
The types of comms (line 6) are as follows. Note that I will not 
bother explaining these individually, because there's too many of 
them. Instead, I am copying their individual labels from the file
language\category.eng. Most of them are self-explanatory anyway.
       
       0 - "Action Sphere Clear"
       1 - "Action sphere enemies destroyed"
       2 - "Enemies light"
       3 - "Enemies heavy"
       4 - "Congrats on kill"
       5 - "Death"
       6 - "Ejecting"
       7 - "Hit by player one"
       8 - "Hit by player again"
       9 - "Leader report accepting handoff"
       10 - "Leader report arriving"
       11 - "Leader report casualty"
       12 - "Leader report destroyed bridge"
       13 - "Leader report destroyed shields"
       14 - "Leader report disabled engines"
       15 - "Leader report hand off mission"
       16 - "Leader report mission objective"
       17 - "Leader report no objective"
       18 - "Mission accomplished"
       19 - "Mission failed"
       20 - "No"
       21 - "Order attack turrets"
       22 - "Order break and attack"
       23 - "Order cover us"
       24 - "Order follow player order"
       25 - "Order form up"
       26 - "Order return to base"
       27 - "Order status check"
       28 - "Order wing status check"
       29 - "Order attack my target"
       30 - "Pilot report attacking"
       31 - "Pilot report awaiting orders"
       32 - "Pilot report big event or surprise"
       33 - "Pilot report enemies inbound"
       34 - "Pilot report firing missile"
       35 - "Pilot report firing torpedo"
       36 - "Pilot report large target destroyed"
       37 - "Pilot report need help"
       38 - "Pilot report on my way"
       39 - "Pilot report returning to base"
       40 - "Pilot report small target destroyed"
       41 - "Pilot report something wrong"
       42 - "Pilot report shot at"
       43 - "Pilot report turret fire"
       44 - "Pilot status damaged"
       45 - "Pilot status great"
       46 - "Pilot status terrible"
       47 - "Player is traitor"
       48 - "Taking over wing"
       49 - "Taunt"
       50 - "Thanks for help"
       51 - "Welcome"
       52 - "Welcome kilrathi"
       53 - "Wing status great"
       54 - "Wing status ok"
       55 - "Wing status terrible"
       56 - "Yes"
       57 - "Special comm"
       58 - "Order request clearance"
       59 - "Order radio silence"
       60 - "Order lift radio silence"
You can have more than one comm of the same type (naturally, 
otherwise you'be limited to one taunt). In this case, the game
chooses one randomly.

There is one final component which is needed for any comm to work 
properly. This component is the file times.iff, stored inside \ifcomms. 
Times.iff is a database listing ALL the comms of the game. If you try to
use a comm which is not listed here, the game will crash.
The structure of times.iff is very simple. It contains a single form
(TIME), which contains a single chunk (also called TIME). The chunk
contains a single line for every comm.
The lines look like this:

long 10001 float 1.959
The first long (10001) is the number of the XA file.
The zeroes at the start of the XA's number are clipped, so 10001 is 
in fact 00010001.XA. The second number (float 1.959) is the length 
(in seconds) of the audio file. This length determines how long the 
text and video are displayed, and it seems to take precedence over the 
lengths listed inside the \comms\*.iff files.
 

Tutorial by Quarto