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