#include common_scripts\utility; main() { } setup_names() { if ( isdefined( level._names ) ) return; nationalities = []; nationalities[ 0 ] = "american"; nationalities[ 1 ] = "seal"; nationalities[ 2 ] = "taskforce"; nationalities[ 3 ] = "secretservice"; nationalities[ 4 ] = "british"; nationalities[ 5 ] = "arab"; nationalities[ 6 ] = "russian"; nationalities[ 7 ] = "multilingual"; nationalities[ 8 ] = "portuguese"; nationalities[ 9 ] = "shadowcompany"; nationalities[ 10 ]= "indonesian"; nationalities[ 11 ]= "mexican"; for ( i = 0; i < nationalities.size; i++ ) level._names[ nationalities[ i ] ] = []; // American names will ideally match 1:1 with names that we've recorded, so the friendlies will more obviously talk to each other add_name( "american", "Abrahamsson" ); add_name( "american", "Alavi" ); add_name( "american", "Alderman" ); add_name( "american", "Arem" ); add_name( "american", "Arya" ); add_name( "american", "Baker" ); add_name( "american", "Barb" ); add_name( "american", "Bartolucci" ); add_name( "american", "Bell" ); add_name( "american", "Benitez" ); add_name( "american", "Berry" ); add_name( "american", "Blumel" ); add_name( "american", "Boon" ); add_name( "american", "Bowling" ); add_name( "american", "Capen" ); add_name( "american", "Casey" ); add_name( "american", "Chen" ); add_name( "american", "Cherubini" ); add_name( "american", "Cho" ); add_name( "american", "Cotterell" ); add_name( "american", "Cournoyer" ); add_name( "american", "Davis" ); add_name( "american", "Dionne" ); add_name( "american", "Dye" ); add_name( "american", "Eady" ); add_name( "american", "Emslie" ); add_name( "american", "Ferriz" ); add_name( "american", "Field" ); add_name( "american", "Fukuda" ); add_name( "american", "Gaines" ); add_name( "american", "Ganus" ); add_name( "american", "Giesler" ); add_name( "american", "Gigliotti" ); add_name( "american", "Gillis" ); add_name( "american", "Glasco" ); add_name( "american", "Glenn" ); add_name( "american", "Gompert" ); add_name( "american", "Grenier" ); add_name( "american", "Grigsby" ); add_name( "american", "Haggerty" ); add_name( "american", "Hammon" ); add_name( "american", "Harmer" ); add_name( "american", "Harris" ); add_name( "american", "Heath" ); add_name( "american", "Hirsh" ); add_name( "american", "Johnson" ); add_name( "american", "Kar" ); add_name( "american", "Keating" ); add_name( "american", "Kriegler" ); add_name( "american", "Kuhn" ); add_name( "american", "Lai" ); add_name( "american", "Lambert" ); add_name( "american", "Lastimosa" ); add_name( "american", "Lopez" ); add_name( "american", "Lor" ); add_name( "american", "Luo" ); add_name( "american", "McCandlish" ); add_name( "american", "McCord" ); add_name( "american", "McCoy" ); add_name( "american", "McLeod" ); add_name( "american", "Messerly" ); add_name( "american", "Miller" ); add_name( "american", "Neel" ); add_name( "american", "Onur" ); add_name( "american", "Peas" ); add_name( "american", "Pelayo" ); add_name( "american", "Penrod" ); add_name( "american", "Perez" ); add_name( "american", "Pierce" ); add_name( "american", "Porter" ); add_name( "american", "Rieke" ); add_name( "american", "Rote" ); add_name( "american", "Roycewicz" ); add_name( "american", "Rubin" ); add_name( "american", "Sandler" ); add_name( "american", "Sarkisyan" ); add_name( "american", "Seal" ); add_name( "american", "Shiring" ); add_name( "american", "Silvers" ); add_name( "american", "Slayback" ); add_name( "american", "Smith" ); //add_name( "american", "Song" ); add_name( "american", "Stone" ); add_name( "american", "Sue" ); add_name( "american", "Taehoon" ); add_name( "american", "Tee" ); add_name( "american", "Theodore" ); add_name( "american", "Turner" ); add_name( "american", "Vinson" ); add_name( "american", "Volker" ); add_name( "american", "Wang" ); add_name( "american", "Wapner" ); add_name( "american", "Wasilczyk" ); add_name( "american", "West" ); add_name( "american", "Wiederhold" ); add_name( "american", "Yang" ); add_name( "american", "Zampella" ); add_name( "seal", "Angel" ); add_name( "seal", "Apex" ); add_name( "seal", "Avatar" ); add_name( "seal", "Bearcat" ); add_name( "seal", "Bishop" ); add_name( "seal", "Boomer" ); add_name( "seal", "Boxer" ); add_name( "seal", "Canine" ); add_name( "seal", "Chemist" ); add_name( "seal", "Chemo" ); add_name( "seal", "Cherub" ); add_name( "seal", "Chino" ); add_name( "seal", "Coffin" ); add_name( "seal", "Coma" ); add_name( "seal", "Cyclops" ); add_name( "seal", "Cypher" ); add_name( "seal", "Doc" ); add_name( "seal", "Druid" ); add_name( "seal", "Exxon" ); add_name( "seal", "Gator" ); add_name( "seal", "Hannibal" ); add_name( "seal", "Hazard" ); add_name( "seal", "Hitman" ); add_name( "seal", "Jayhawk" ); add_name( "seal", "Jester" ); add_name( "seal", "Justice" ); add_name( "seal", "Klepto" ); add_name( "seal", "Kojak" ); add_name( "seal", "Langley" ); add_name( "seal", "Neptune" ); add_name( "seal", "Mamba" ); add_name( "seal", "Midnight" ); add_name( "seal", "Neon" ); add_name( "seal", "Nomad" ); add_name( "seal", "Ogre" ); add_name( "seal", "Ozone" ); add_name( "seal", "Patron" ); add_name( "seal", "Peasant" ); add_name( "seal", "Pharaoh" ); add_name( "seal", "Pieces" ); add_name( "seal", "Poet" ); add_name( "seal", "Preacher" ); add_name( "seal", "Reaper" ); add_name( "seal", "Redcell" ); add_name( "seal", "Roadie" ); add_name( "seal", "Robot" ); add_name( "seal", "Rocket" ); add_name( "seal", "Rooster" ); add_name( "seal", "Sandman" ); add_name( "seal", "Sparrow" ); add_name( "seal", "Taco" ); add_name( "seal", "Thumper" ); add_name( "seal", "Trojan" ); add_name( "seal", "Twister" ); add_name( "seal", "Undertone" ); add_name( "seal", "Utah" ); add_name( "seal", "Whiskey" ); add_name( "seal", "Worm" ); add_name( "seal", "Yankee" ); add_name( "seal", "Zero" ); // taskforce = seal, but the non-stealth version copy_names( "taskforce", "seal" ); add_name( "secretservice", "Smith" ); add_name( "secretservice", "Jones" ); add_name( "secretservice", "Jackson" ); add_name( "secretservice", "Johnson" ); add_name( "secretservice", "Thompson" ); add_name( "secretservice", "Ash" ); add_name( "secretservice", "Bird" ); add_name( "secretservice", "Finn" ); add_name( "secretservice", "Fine" ); add_name( "secretservice", "Brown" ); add_name( "secretservice", "White" ); add_name( "secretservice", "Gray" ); add_name( "secretservice", "Black" ); add_name( "secretservice", "Wylie" ); add_name( "secretservice", "Rosenhaus" ); add_name( "secretservice", "Boras" ); add_name( "secretservice", "McKinnis" ); add_name( "secretservice", "Duffy" ); add_name( "secretservice", "Falk" ); add_name( "secretservice", "Tellem" ); add_name( "secretservice", "Goodwin" ); add_name( "secretservice", "Condon" ); add_name( "secretservice", "Parker" ); add_name( "secretservice", "McGuire" ); add_name( "secretservice", "Steinberg" ); add_name( "british", "Abbot" ); add_name( "british", "Adams" ); add_name( "british", "Bartlett" ); add_name( "british", "Boyd" ); add_name( "british", "Boyle" ); add_name( "british", "Bremner" ); add_name( "british", "Carlyle" ); add_name( "british", "Carver" ); add_name( "british", "Cheek" ); add_name( "british", "Clarke" ); add_name( "british", "Collins" ); add_name( "british", "Compton" ); add_name( "british", "Connolly" ); add_name( "british", "Cook" ); add_name( "british", "Dowd" ); add_name( "british", "Field" ); add_name( "british", "Fleming" ); add_name( "british", "Fletcher" ); add_name( "british", "Flynn" ); add_name( "british", "Grant" ); add_name( "british", "Greaves" ); add_name( "british", "Griffin" ); add_name( "british", "Harris" ); add_name( "british", "Harrison" ); add_name( "british", "Heath" ); add_name( "british", "Henderson" ); add_name( "british", "Hopkins" ); add_name( "british", "Hoyt" ); add_name( "british", "Kent" ); add_name( "british", "Lewis" ); add_name( "british", "Lipton" ); add_name( "british", "Macdonald" ); add_name( "british", "Maxwell" ); add_name( "british", "McQuarrie" ); add_name( "british", "Miller" ); add_name( "british", "Mitchell" ); add_name( "british", "Moore" ); add_name( "british", "Murphy" ); add_name( "british", "Murray" ); add_name( "british", "Pearce" ); add_name( "british", "Plumber" ); add_name( "british", "Pritchard" ); add_name( "british", "Rankin" ); add_name( "british", "Reed" ); add_name( "british", "Ritchie" ); add_name( "british", "Ross" ); add_name( "british", "Roth" ); add_name( "british", "Smith" ); add_name( "british", "Stevenson" ); add_name( "british", "Stuart" ); add_name( "british", "Sullivan" ); add_name( "british", "Thompson" ); add_name( "british", "Veale" ); add_name( "british", "Wallace" ); add_name( "british", "Wallcroft" ); add_name( "british", "Wells" ); add_name( "british", "Welsh" ); add_name( "russian", "Sasha Ivanov" ); add_name( "russian", "Aleksei Vyshinskiy" ); add_name( "russian", "Boris Ryzhkov" ); add_name( "russian", "Dima Tikhonov" ); add_name( "russian", "Oleg Kosygin" ); add_name( "russian", "Pyotr Bulganin" ); add_name( "russian", "Petya Malenkov" ); add_name( "russian", "Alyosha Tarkovsky" ); add_name( "russian", "Sergei Grombyo" ); add_name( "russian", "Viktor Kuznetsov" ); add_name( "russian", "Misha Podgorniy" ); add_name( "russian", "Borya Mikoyan" ); add_name( "russian", "Anatoly Voroshilov" ); add_name( "russian", "Kolya Shvernik" ); add_name( "russian", "Nikolai Kalinin" ); add_name( "russian", "Vladimir Brezhnev" ); add_name( "russian", "Pavel Chernenko" ); add_name( "russian", "Volodya Andropov" ); add_name( "russian", "Yuri Nikitin" ); add_name( "russian", "Dmitri Petrenko" ); add_name( "russian", "Vanya Gerasimov" ); add_name( "russian", "Mikhail Zhuravlev" ); add_name( "russian", "Ivan Lukin" ); add_name( "russian", "Kostya Golubev" ); add_name( "russian", "Konstantin Lebedev" ); add_name( "russian", "Aleksandr Vasilev" ); add_name( "russian", "Yakov Glushenko" ); add_name( "russian", "Sasha Semenov" ); add_name( "russian", "Aleksei Ulyanov" ); add_name( "russian", "Boris Yefremov" ); add_name( "russian", "Dima Chernyshenko" ); add_name( "russian", "Oleg Stepanoshvili" ); add_name( "russian", "Pyotr Demchenko" ); add_name( "russian", "Petya Avagimov" ); add_name( "russian", "Alyosha Murzaev" ); add_name( "russian", "Sergei Shkuratov" ); add_name( "russian", "Viktor Yakimenko" ); add_name( "russian", "Misha Masijashvili" ); add_name( "russian", "Borya Shapovalov" ); add_name( "russian", "Anatoly Ivashenko" ); add_name( "russian", "Kolya Dovzhenko" ); add_name( "russian", "Nikolai Turdyev" ); add_name( "russian", "Vladimir Sabgaida" ); add_name( "russian", "Pavel Svirin" ); add_name( "russian", "Volodya Sarayev" ); add_name( "russian", "Yuri Kiselev" ); add_name( "russian", "Dmitri Bondarenko" ); add_name( "russian", "Vanya Chernogolov" ); add_name( "russian", "Mikhail Voronov" ); add_name( "russian", "Ivan Afanasyev" ); add_name( "russian", "Kostya Gridin" ); add_name( "russian", "Konstantin Petrov" ); add_name( "russian", "Aleksandr Rykov" ); add_name( "russian", "Yakov Shvedov" ); add_name( "arab", "Abdulaziz" ); add_name( "arab", "Abdullah" ); add_name( "arab", "Ali" ); add_name( "arab", "Amin" ); add_name( "arab", "Bassam" ); add_name( "arab", "Fahd" ); add_name( "arab", "Faris" ); add_name( "arab", "Fouad" ); add_name( "arab", "Habib" ); add_name( "arab", "Hakem" ); add_name( "arab", "Hassan" ); add_name( "arab", "Ibrahim" ); add_name( "arab", "Imad" ); add_name( "arab", "Jabbar" ); add_name( "arab", "Kareem" ); add_name( "arab", "Khalid" ); add_name( "arab", "Malik" ); add_name( "arab", "Muhammad" ); add_name( "arab", "Nasir" ); add_name( "arab", "Omar" ); add_name( "arab", "Rafiq" ); add_name( "arab", "Rami" ); add_name( "arab", "Said" ); add_name( "arab", "Salim" ); add_name( "arab", "Samir" ); add_name( "arab", "Talib" ); add_name( "arab", "Tariq" ); add_name( "arab", "Youssef" ); add_name( "arab", "Ziad" ); add_name( "portuguese", "Carlitos" ); add_name( "portuguese", "Antonio" ); add_name( "portuguese", "Gervasio" ); add_name( "portuguese", "Lois" ); add_name( "portuguese", "Xesus" ); add_name( "shadowcompany", "Lestat" ); add_name( "shadowcompany", "Nosferatu" ); add_name( "shadowcompany", "Lecter" ); add_name( "multilingual", "Kugelschreiber" ); add_name( "multilingual", "Flughafen" ); add_name( "indonesian", "Cho" ); add_name( "indonesian", "Fukuda" ); add_name( "indonesian", "Ganus" ); add_name( "indonesian", "Lai" ); add_name( "indonesian", "Rieke" ); add_name( "indonesian", "Song" ); add_name( "indonesian", "Sue" ); add_name( "indonesian", "Taehoon" ); add_name( "indonesian", "Wang" ); add_name( "indonesian", "Yang" ); add_name( "mexican", "Pablo" ); //this is a placeholder. game will assert otherwise w/o any names assigned. init_script_friendnames(); for ( i = 0; i < nationalities.size; i++ ) { remove_script_friendnames_from_list( nationalities[ i ] ); randomize_name_list( nationalities[ i ] ); level._nameIndex[ nationalities[ i ] ] = 0; } } copy_names( copyTo, copyFrom ) { ASSERT( IsDefined( level._names[ copyFrom ] ) && level._names[ copyFrom ].size ); level._names[ copyTo ] = level._names[ copyFrom ]; } add_name( nationality, thename ) { level._names[ nationality ][ level._names[ nationality ].size ] = thename; } remove_name( nationality, thename ) { level._names[ nationality ] = array_remove( level._names[ nationality ], thename ); } init_script_friendnames() { script_friendnames = []; spawners = GetSpawnerArray(); ais = GetAiArray(); foreach( spawner in spawners ) { if( IsDefined( spawner.script_friendname ) && spawner.script_friendname != "none" ) { name = normalize_script_friendname( spawner.script_friendname ); script_friendnames[ script_friendnames.size ] = name; } } foreach( ai in ais ) { if( IsDefined( ai.script_friendname ) && ai.script_friendname != "none" ) { name = normalize_script_friendname( ai.script_friendname ); script_friendnames[ script_friendnames.size ] = name; } } level._script_friendnames = script_friendnames; } normalize_script_friendname( name ) { tokens = StrTok( name, " " ); if( tokens.size > 1 ) { name = tokens[ 1 ]; } return name; } remove_script_friendnames_from_list( nationality ) { foreach( scriptedName in level._script_friendnames ) { foreach( staticName in level._names[ nationality ] ) { if( scriptedName == staticName ) { remove_name( nationality, staticName ); } } } } randomize_name_list( nationality ) { size = level._names[ nationality ].size; for ( i = 0; i < size; i++ ) { switchwith = randomint( size ); temp = level._names[ nationality ][ i ]; level._names[ nationality ][ i ] = level._names[ nationality ][ switchwith ]; level._names[ nationality ][ switchwith ] = temp; } } get_name( override ) { if ( ( isdefined( self.team ) ) && ( self.team == "neutral" ) ) { return; } if ( !isdefined( override ) && level._script == "credits" ) { self.airank = "private"; return; } if ( isdefined( self.script_friendname ) ) { if ( self.script_friendname == "none" ) return; self.name = self.script_friendname; getRankFromName( self.name ); self notify( "set name and rank" ); return; } assert( isdefined( level._names ) ); get_name_for_nationality( self.voice ); self notify( "set name and rank" ); } get_name_for_nationality( nationality ) { assertex( isdefined( level._nameIndex[ nationality ] ), nationality ); level._nameIndex[ nationality ] = ( level._nameIndex[ nationality ] + 1 ) % level._names[ nationality ].size; lastname = level._names[ nationality ][ level._nameIndex[ nationality ] ]; rank = randomint( 10 ); if( nationality == "seal" || nationality == "taskforce" ) { fullname = lastname; // TF141 soldiers just get a callsign self.airank = "private"; } else if( nationality == "secretservice" ) { fullname = "Agent " + lastname; // Secret Service guys are all "Agents" self.airank = "private"; } else if ( rank > 5 ) { fullname = "Pvt. " + lastname; self.airank = "private"; } else if ( rank > 2 ) { fullname = "Cpl. " + lastname; self.airank = "private"; } else { fullname = "Sgt. " + lastname; self.airank = "sergeant"; } if ( ( isAi( self ) ) && ( self isBadGuy() ) ) { self.ainame = fullname; } else { self.name = fullname; } } getRankFromName( name ) { if ( !isdefined( name ) ) self.airank = ( "private" ); tokens = strtok( name, " " ); assert( tokens.size ); shortRank = tokens[ 0 ]; switch( shortRank ) { case "Pvt.": self.airank = "private"; break; case "Pfc.": self.airank = "private"; break; case "Agent": self.airank = "private"; break; case "Cpl.": self.airank = "corporal"; break; case "Sgt.": self.airank = "sergeant"; break; case "Lt.": self.airank = "lieutenant"; break; case "Cpt.": self.airank = "captain"; break; default: // SRS 02/01/09: this is more annoying than useful now that we have lots of friendlies // whose names are callsigns. we may want to ditch rank references altogether in the scripts. //println( "sentient has invalid rank " + shortRank + "!" ); self.airank = "private"; break; } }