CREATE CUSTOM FACE & VOICE Thanks go to Wodan & The_Hairy_Vlad among many others. The process is pretty easy, just complicated by the amount of work needed to accomplish this first task. This first part deals with creating faces. Decide which character you are going to work on. Example: Hamous (Postie in UC), which is character number 63. NOTE: NON-recruitable characters use images with a ‘B’ in front, eg b63.sti Mercs use images without anything in front, eg 63.sti Recruitable characters, like Hamous, need all of them. For the faces of character #63, you will need: /data/faces/63.sti (48x43 pixel image) /data/faces/B63.sti (90x100 pixel image)=the one you see when talking to someone. /data/faces/33face/63.sti (15x14 pixel image) /data/faces/33face/B63.sti (29x33 pixel image) /data/faces/65face/63.sti (31x27 pixel image) /data/faces/65face/B63.sti (58x65 pixel image) /data/faces/bigfaces/63.sti (106x122 pixel image)=the one in AIM profile with background or terrorist intel page. Check the Ja2/data/faces folder with UC installed for examples. Create a face image. Use the graphics program of your choice. Tip: Make it 106x122 pixels or bigger, this way, you only have to cut/scale down for all the others. Check in Ja2/data/faces folder to see how the faces fit the images. When the image is finished and the correct size, convert the image to 256 colors and export the color palette for later use. It is possible to simply copy(CTRL+C) and paste(CTRL+V) the image into STI-EDIT, but may lose some quality. Mouth and eye movements.
1
Some face sti’s have moving mouths and eyes. Prime among these are the 90x100, 48x43 and the 58x65. The others, as far as I can tell, do not need them. There are 8 pages in one sti-file. The 106x122.sti is the exception, it is single page. Each page is: * Full face image * Eyes closed * Eyes half closed * Eyes, angry frown * Eyes, eyebrows up * Mouth ee * Mouth aa * Mouth oo These are the order of appearance in the multi-page sti and must be placed as such. NOTE: Try to make the three eye details the same size and the same for the mouth. This will save a lot of ‘tweaking’ of the x-y coordinates in STI-EDIT. Importing into STI-EDIT. Open STI-EDIT. Here you can do two things that have the same effect. EITHER, open a face image you want to overwrite, and paste your homemade image (from your graphic program) onto the image in STI-EDIT. Press the RED ARROW pointing to the right to go to the next image in the sti file and copy/paste your first eye detail over the present image (image will be replaced with yours). Do this for the other 6 images. OR, create a new sti file in STI-EDIT using the white page icon (neue data einstellen), and choose the second option (collection). Here, you can start with the standard palette, which will be overwritten by the first image you paste into it, or load the palette you exported for a better matching result. Click on “neue data einstellen” (read:create) and you get a nice black square empty sti collection. Now copy your face image from your graphic program and paste it in STI-EDIT. Press the RED ARROW pointing to the right with GREEN background to CREATE the second page in the sti file. Copy/paste your first eye image and continue until you have 7 pages, thus, 8 images – the first image is on page 0. Save file to appropriate folder. Remember that there are several face sti files with the same name (63.sti or B63.sti), so you may want to duplicate the folder structure as above (/data/faces/etc…..) Repeat until you have all 7 face sti’s for your merc. Place them in the appropriate folder.
2
Mouth and eye movements. You still have to get the eye and mouth movements in the correct spot. Open prof.dat with ProEdit located in binary data. In the bottom left, you can enter the mouth and eye image coordinates. These coordinates measure, in pixels, the distance from the TOP LEFT CORNER of your face image to the TOP LEFT CORNER of your eye/mouth image. You can look up these coordinates by checking the placement of the detailed images in your advanced graphic program or in paint, by pasting the detailed image over the big one and move them to the correct position. The coordinates appear in the bottom window. Use ProEdit Add-On by Arael, to open the exe you are using. Edit the coordinates for the 48x43 face eye and mouth images. If for some reason your 4 eye detail images are not the same pixelsize, they will look distorted in the game, since they will be offset with the first set of coordinates you entered into ProEdit or the add-on. This can be solved by making the images the same size, or by tweaking their position using the x and y offsets in sti-edit. If your first image is 20x38 and your second is 14x30, aligning to the center of the other one, then you will have to adjust x and y to 3,4. NOTE: Sometimes, pasting a new page into the sti file can cause the other pages palette to corrupt – so save often!!!
VOICE Below is the table data for voices used by AIM, MERC, RPC and IMP, extracted from .slf files. NPC speech is in a different file. These list(s) will help to identify those you may wish to alter/edit for your custom character(s). Tools you may need are : Unslf, EDT Editor, Ja2 Voice Ripper. 000 – sees enemy 002 – sees lots of enemies 004 – sees bug for 1st.time 006 – hears something 008 – expects trouble 010 – sees too many bugs 012 – sees item 014 – badly injured/deathspeech 016 – friend 2 dies 018 – (empty) 020 – gets shot repeatedly 022 – avoids a bullet/explosion
001 – sees enemy 003 – sees bug 005 – sees signs of bugs 007 – smells signs of bugs 009 – hopes the bugs are gone 011 – sees item 013 – out of ammo 015 – friend 1 dies 017 – friend 3 dies 019 – weapon jams 021 – complains about injury 023 – warns cannot hit target 3
024 – is injured 026 – out of breath/needs break 028 – killed a bug 030 – complains about disliked merc 2 032 – killed Mike 034 – won’t go in water 036 – refuses to obey order 038 – has killed bug queen 040 – complains about team/job/deal 042 – sees airstrike 044 – would prefer to work alone 046 – just gained a point/level 048 – disagrees with strategy 050 – finds out in team with disliked merc 052 – congratulates friend 2 054 – would prefer to discuss contract later 056 – is blinded 058 – appreciates an npc’s personality 060 – knows enemies are left 062 – killed an enemy 064 – responds reassuringly to Miguel 066 – items missing/Bobby Rays shipment 068 – sees bloodcat 070 – all enemies have fled sector 072 – (empty) 074 – complains about quality of equipment 076 – discovers mine in ground 078 – has arrived at chosen destination 080 – refuses to join(casualty rate) 082 – refuses to extend contract 084 – video-phone greeting 086 – refuses to join due to dislike of merc 088 – refuses to join due to dislike of merc 090 – accepts contract extension 092 – reluctantly accepts to join due to friend 1 influence 094 – reluctantly accepts to join due to friend 3 influence 096 – repeats 098 – accepts dismissal
025 – is tired 027 – killed an enemy 029 – complains about disliked merc 1 031 – complains about disliked merc 3 033 – sees gruesome death 035 – has finished task 037 – has a drink of alcohol 039 – complains about npc 041 – thinks enemies are inferior 043 – complains about quality of equipment 045 – complains about other merc 047 – disagrees with strategy 049 – finds out in team with disliked merc 051 – congratulates friend 1 053 – congratulates friend 3 055 – sees Mike 057 – fails repeatedly at task/refuses to continue 059 – detects enemies in sector 061 – finds cool item? 063 – sees Joey 065 – all enemies defeated 067 – killed Doreen 069 – victory speech 071 – (empty) 073 – seconds someone’s comment 075 – discovers mine in ground 077 – (empty) 079 – (empty) 081 – refuses to join(casualty rate) 083 – refuses to extend contract due to short notice 085 – accepts dismissal pleased and willing to work again 087 – refuses to join due to dislike of merc 089 – notifies that contract is ending soon 091 – accepts to join 093 – reluctantly accepts to join due to friend 2 influence 095 – refuses to join due to casualty rate 097 – you cannot afford this mercenary 099 – refuses to join because of casualty 4
100 – refuses to join due to disliked merc (repeated) 102 – refuses to join due to disliked merc (repeated) 104 – reluctantly accepts to join due to friend 2 influence 106 – repeats 108 – video-phone greeting (alternate) 110 – comments on your delay while using video-phone 112 – comments on your delay while using video-phone 114 – comments about another mercenary while using video-phone 116 – asks for higher pay grades
rate(repeated) 101 – refuses to join due to disliked merc (repeated) 103 – reluctantly accepts to join due to friend 1 influence 105 – reluctantly accepts to join due to friend 3 influence 107 – you cannot afford this mercenary 109 – make comment about video-phone technology 111 – asks how long and if you buy equipment etc..(payment options) 113 – comments about another mercenary while using video-phone 115 – notifies that contract ends soon
The speech.slf file contains a series of dual-number files in both .gap and .wav format. The basic filename template looks like this: 036_020.wav The first number represents the playable character, in this case, Scope. The second number represents what she says. Both corresponding .wav and .gap files have the exact same name and differ only in extension and file content. The .gap files, for those not in the know, contain values which express the delay between each movement of the lips on your character portrait, so it moves along perfectly in sync with the speech. If you choose not to include a .gap file, the computer just moves the lips at the same interval. The first list deals with individual quotes. This second list is about the characters. The file speech.slf has its characters numbered: 000 – Barry 003 – Grizzly 006 – Grunty 009 – Igor 012 – Reaper 015 – Sydney 018 – Ice 021 – Bull 024 – Raider 027 – Len
001 – Blood 004 – Vicky 007 – Ivan 010 – Shadow 013 – Fidel 016 – Gus 019 – Spider 022 – Hitman 025 – Raven 028 – Danny
002 – Lynx 005 – Trevor 008 – Steroid 011 – Red 014 – Fox 017 – Buns 020 – Highball 023 – Buzz 026 – Static 029 – Magic 5
030 – Stephen 031 – Scully 032 – Malice 033 – Dr.Q 034 – Nails 035 – Thor 036 – Scope 037 – Wolf 038 – MD 039 – Meltdown 040 – Biff 041 – Haywire 042 – Gasket 043 – Razor 044 – Flo 045 – Gumpy 046 – Larry(sober) 047 – Larry(stoned) 048 – Cougar 049 – Numb 050 – Bubba 051 – Male IMP1 052 – Male IMP2 053 – Male IMP3 054 – Female IMP1 055 – Female IMP2 056 – Female IMP3 057 – Miguel 058 – Carlos 059 – Ira 060 – Dimitri 061 – Devin 062 – Madlab robot – no speech 063 – Hamous 064 – Slay 065 – (open slot) 066 – Dynamo 067 – Shank 068 – Iggy 069 – Vince 070 – Conrad 071 – Maddog All these files are in the same folder (.slf file) with their corresponding .gap files. NOTE: Not all mercs have all the speech lines in the list. Some speech lines/quotes are exclusive to certain merc personalities. Danny, for example, will bitch about other mercs more than others and will mention that he prefers to work alone. This is because of his ‘Loner’ personality trait (that you may get from the IMP quiz), for example. Gus is another merc who displays this sort of attitude. Some of them have more friends and disliked mercs than others, and their speech lines reflect this. Don’t feel the need to include all 117 of them when you create a sound collection for new characters. Remember, you can also change likes/dislikes/traits etc… within ProEdit, to further enhance your custom work. Addendum: Additional to the 113
165 – Gaston 166 – Stogie 167 – Tex 168 – Biggins
163, 164 and 169 are unused. NPC_Speech.slf 057 – Miguel(pre hire) 059 – Ira(pre hire) 061 – Devin(pre hire) 063 – Hamous(pre hire) 065 – (unused) 067 – Shank(pre hire) 069 – Vince(pre hire) 071 – (unused)
058 – Carlos(pre hire) 060 – Dimitri(pre hire) 062 – Madlab robot(no speech) 064 – Slay(pre hire) 066 – Dynamo(pre hire) 068 – Iggy(pre hire) 070 – Conrad(pre hire) 072 – Maddog(pre hire) 6
073 – Darrel 074 – Perko 075 – Deidranna 076 – Auntie 077 – Enrico(cutscenes) 078 – Carmen 079 – Joe (queens bodyguard) 080 – Dr.Willis 081 – Rat 082 – M.O.M./Annie 083 – Imposter/Chris 084 – Bob 085 – Brenda 086 – Kingpin 087 – Darren 088 – Maria 089 – Angel 090 – Joey 091 – Joey 092 – Frank 093 – Spike 094 – Damon 095 – Kyle 096 – Mickey 097 – Skyrider 098 – Pablo 099 – Sal 100 – Father Walker 101 – Fatima 102 – Warden 103 – Gordon 104 – Gabby 105 – Ernest 106 – Fred 107 – Madame 108 – Yanni 109 – Martha 110 – Eddie/Joe 111 – T-Rex/Jasmin 112 – Druggist/Charlie 113 – Jake 114 – Pacos 115 – Dave 116 – Skipper 117 – Hans 118 – John 119 – Mary 120 – General 121 – Sergeant 122 – Armand Ricci 123 – Lora Ricci 124 – Franz 125 – Howard 126 – Sam 127 – Eldin 128 – Arnold 129 – Tina 130 – Fredo 131 – Walter 132 – Nurse Jenny 133 – Billy 134 – Brewster 135 – Elliot 136 – Derek (end cutscene) 137 – Oliver (end cutscene) 138 – Waldo 139 – Doreen 140 – Jim (KP goon) 141 – Jack (KP goon) 142 – Olaf (KP goon) 143 – Ray (KP goon) 144 – Olga (KP goon) 145 – Tyrone (KP goon) 146 – Madlab 147 – Keith(Cambria merchant)148 – Matt 149 – Mike 150 – Darryl 151 – Herve – contains all DeSantos(barmen) speech 152 – Peter (no sound files) 153 – Alberto (no sound files) 154 – Carlo (no sound files) 155 – Manny(apprentice bartender) 156 – Oswald (miner) 157 – Calvin (miner) 7
158 – Carl (miner) 159 – Speck (M.E.R.C.) 160 – Hummer 161 – El Dorado 162 – Ice Cream Truck 163 – NOT USABLE 164 – spare 165 – spare 166 – spare JOHN_000 to JOHN_029 – John Kulba E 057_001 to _003 – Miguels ending political speech DARREL 000 to 013 – Darrel Battle_SNDS.slf. These include all the speech for all the playable or escortable characters. Those speech lines are delivered in-game, without the characters portrait showing up, with subtitles at the upper left corner of the screen. Every number between 000(Barry) and 072(Maddog) has the following 17 sound files: _ATTN.wav = The sound made when you initially click on the character, or, when he/she is already selected at the beginning of a turn. _COOL.wav = A response to a good kill or finding an item by opening a container. _CURSE.wav = Cursing when missing a shot or failing at a task. _DYING.wav = Sound character makes when dying or falling unconscious. _ENEM.wav = Default sound when seeing enemy. _GOTIT.wav = When character has successfully picked up an item and placed it into his/her inventory. _HIT1.wav = Sound made when character gets hit or suffers from unbandaged wound. _HIT2.wav = Ditto. _HUMM.wav = Sound made when spotting an item or finding something in a container. _LAUGH.wav = Usually follows a kill using burst or autofire. _LMATTN.wav = Pissed-off ATTN (see above). _LMOK1.wav = Pissed-off OK1 (see below). _LMOK2.wav = Pissed-off OK2 (see below). _LOCKED.wav = Notifies that the door/container is locked. _NOTH.wav = Finds nothing on ground or in container. _OK1.wav = Acknowledges order. _OK2.wav = Acknowledges order. 073 (Darrel) has CURSE, DYING, HIT1, HIT2 and LAUGH. 074 (Perko) to 159 (Speck) have only DYING, HIT1 and HIT2. Being escortable NPCs, 088 (Maria), 090 (Joey), 097 (Skyrider), 118 (John) and 119 (Mary) have more speech than the other NPCs. 8
All escortables have ATTN, DYING, HIT1, HIT2, OK1 and OK2. Skyrider seems to have CRASH and END. Exact copies of speech already available in NPC_speech.slf. In addition to the numbered characters, the enemy codes BAD0, BAD1, BAD2, BAD3, BAD4, BAD5, BAD6, BAD7, BAD8 have CURSE, DYING, HIT1, HIT2 and LAUGH. Miguel, Carlos and Ira have second sets of DYING, HIT1 and HIT2 used when they are off your team or not hired yet. John Kulba seems to have an identical second set of sounds under JOHN. That covers most of what is currently available, detail wise. When recording, regard the following: If possible, do not use the Windows default sound recorder, I have found ‘Audacity’ to be more than up to the task. Use a decent microphone. Make sure no ambient sound(s) can interfere. Experiment to get the best results for your situation. Recordings should be: 88Kbps 16bit Mono 22Khz
9