Random NPC name generator
From NWNWiki
The random NPC name generator produces a random name for an NPC, customized to the NPC's race and gender. To use this in conjunction with the default OnSpawn event handler, the following script should be named "x3_name_gen". Each NPC whose name should be generated with this script needs to have a local variable set on them in the Toolset. The local variable's name must be "X2_NAME_RANDOM", its type must be "integer", and its value must be 1.
[edit] The script
//::///////////////////////////////////////////////
//:: Name Random Name OnSpawn Generator
//:: FileName x3_name_gen
//:://////////////////////////////////////////////
/*
Random name generator, with special support
for the seven playable races and animals.
Does not work on PC's.
To use: Name this script x3_name_gen and set
a local integer variable called X2_NAME_RANDOM
on those NPC's that should have random names.
*/
//:://////////////////////////////////////////////
//:: Created By: SpookyPl
//:: Created On: 21.09.2007, 12:27
//:: Revised By: The Krit
//:: Revised On: 21.09.2007
//:://////////////////////////////////////////////
void main()
{
string sName = "";
// Try to customize the name based on race.
switch ( GetRacialType(OBJECT_SELF) )
{
case RACIAL_TYPE_DWARF:
// Customize the first name based on gender.
if ( GetGender(OBJECT_SELF) == GENDER_FEMALE )
sName = RandomName(NAME_FIRST_DWARF_FEMALE);
else
sName = RandomName(NAME_FIRST_DWARF_MALE);
// Add a last name.
sName += " " + RandomName(NAME_LAST_DWARF);
break;
case RACIAL_TYPE_ELF:
// Customize the first name based on gender.
if ( GetGender(OBJECT_SELF) == GENDER_FEMALE )
sName = RandomName(NAME_FIRST_ELF_FEMALE);
else
sName = RandomName(NAME_FIRST_ELF_MALE);
// Add a last name.
sName += " " + RandomName(NAME_LAST_ELF);
break;
case RACIAL_TYPE_GNOME:
// Customize the first name based on gender.
if ( GetGender(OBJECT_SELF) == GENDER_FEMALE )
sName = RandomName(NAME_FIRST_GNOME_FEMALE);
else
sName = RandomName(NAME_FIRST_GNOME_MALE);
// Add a last name.
sName += " " + RandomName(NAME_LAST_GNOME);
break;
case RACIAL_TYPE_HALFELF:
// Customize the first name based on gender.
if ( GetGender(OBJECT_SELF) == GENDER_FEMALE )
sName = RandomName(NAME_FIRST_HALFELF_FEMALE);
else
sName = RandomName(NAME_FIRST_HALFELF_MALE);
// Add a last name.
sName += " " + RandomName(NAME_LAST_HALFELF);
break;
case RACIAL_TYPE_HALFLING:
// Customize the first name based on gender.
if ( GetGender(OBJECT_SELF) == GENDER_FEMALE )
sName = RandomName(NAME_FIRST_HALFLING_FEMALE);
else
sName = RandomName(NAME_FIRST_HALFLING_MALE);
// Add a last name.
sName += " " + RandomName(NAME_LAST_HALFLING);
break;
case RACIAL_TYPE_HALFORC:
// Customize the first name based on gender.
if ( GetGender(OBJECT_SELF) == GENDER_FEMALE )
sName = RandomName(NAME_FIRST_HALFORC_FEMALE);
else
sName = RandomName(NAME_FIRST_HALFORC_MALE);
// Add a last name.
sName += " " + RandomName(NAME_LAST_HALFORC);
break;
case RACIAL_TYPE_HUMAN:
// Customize the first name based on gender.
if ( GetGender(OBJECT_SELF) == GENDER_FEMALE )
sName = RandomName(NAME_FIRST_HUMAN_FEMALE);
else
sName = RandomName(NAME_FIRST_HUMAN_MALE);
// Add a last name.
sName += " " + RandomName(NAME_LAST_HUMAN);
break;
case RACIAL_TYPE_ANIMAL:
case RACIAL_TYPE_BEAST:
case RACIAL_TYPE_MAGICAL_BEAST:
case RACIAL_TYPE_VERMIN:
// Use an "animal" random name.
sName = RandomName(NAME_ANIMAL);
break;
default:// This NPC has a race without specialized naming support.
// Go with a generic name.
sName = RandomName(NAME_FIRST_GENERIC_MALE);
}
// Record the name for the OnSpawn event handler to find.
SetLocalString(OBJECT_SELF, "X3_S_RANDOM_NAME", sName);
}
