Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system. Added PC deleter. Added ACP 4.1. Full compile. Updated release archive.
2471 lines
46 KiB
Plaintext
2471 lines
46 KiB
Plaintext
////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Markshire's Nomenclature //
|
|
// ms_name_inc.nss //
|
|
// //
|
|
// By Thrym of Markshire 5/21/06 //
|
|
// Updated by: Jaysyn 2021/12/03 //
|
|
// //
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/*
|
|
// FUNCTION:
|
|
// The Nomenclature is an include file placed in the spawn script
|
|
// nw_c2_default9 designed to assign a name to a generic NPC who may
|
|
// wander towns, roads, shops, etc.
|
|
//
|
|
// Utilizing both SetName and RandomName the system will name the NPC in
|
|
// one of two ways ...
|
|
//
|
|
// "SET_NAME": By setting the variable "SET_NAME" on the NPC and
|
|
// assigning it a string the creature will rename itself upon spawning.
|
|
// This is handy for DM's and builders to create more precisely named
|
|
// creatures for the palette and then generize them upon spawn.
|
|
//
|
|
// eg. Ancient White Dragon in the Creator becomes White Dragon on Spawn.
|
|
//
|
|
// "SET_NAME" = "RANDOM": By setting the same variable to the name "RANDOM"
|
|
// the NPC then is given a random name generated by RACE and GENDER using
|
|
// the RandomName function.
|
|
//
|
|
// eg. Male Dwarven Villager in the Aurora Toolset becomes Gloigan on spawn
|
|
// this time and perhaps Rufus on the next spawned Villager.
|
|
//
|
|
// "NAME_TYPE": Setting this int variable to "1" will cause a Full Name
|
|
// to be generated if the "SET_NAME" is set to "RANDOM".
|
|
//
|
|
// eg. Male Dwarven Villager becomes Gloigan Stonecutter or Rufus Mason.
|
|
//
|
|
// "TITLE": Prepends the defined string to the NPCs name.
|
|
//
|
|
// eg. "Lord" Brown
|
|
//
|
|
// "POSTFIX": Appends the defind string after the NPC's name.
|
|
//
|
|
// eg. Ralph "the Guard"
|
|
//
|
|
|
|
|
|
"RND_ROGUE"
|
|
"RND_BARBARIAN"
|
|
"RND_FIGHTER"
|
|
"RND_CLERIC" : Setting these to "1" will give the NPC a randomized class
|
|
"RND_MAGE" : appropriate postfix
|
|
"RND_DRUID"
|
|
"RND_RANGER"
|
|
|
|
|
|
//
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////*/
|
|
|
|
#include "prc_inc_racial"
|
|
|
|
|
|
|
|
///// FUNCTION DECLARATIONS ////////////////////////////////////////////////////
|
|
|
|
string GetClassLevelTitle(int nClassType);
|
|
|
|
int GetHighestClassLevel(object oCreature = OBJECT_SELF);
|
|
|
|
// Generates a Random First Name
|
|
// based on Race and Gender
|
|
// For all Standard PC Races and Animals
|
|
string ms_RandomFirstName(object oNPC = OBJECT_SELF);
|
|
|
|
// Generates a Random Last Name
|
|
// based on Race For all
|
|
// Standard PC Races and Animals
|
|
string ms_RandomLastName(object oNPC = OBJECT_SELF);
|
|
|
|
// Function designed to read the variable
|
|
// "SET_NAME" and assign a new name to the NPC
|
|
// If the variable is set to "RANDOM" a
|
|
// random name is assigned.
|
|
// A second variable can be assigned to
|
|
// have the random name be a random Full Name.
|
|
void ms_Nomenclature(object oNPC = OBJECT_SELF);
|
|
|
|
|
|
///// FUNCTIONS ////////////////////////////////////////////////////////////////
|
|
|
|
void ms_Nomenclature(object oNPC = OBJECT_SELF)
|
|
{
|
|
string sRandomName = GetLocalString(oNPC, "SET_NAME");
|
|
string sTitle = GetLocalString(oNPC, "TITLE");
|
|
string sPostfix = GetLocalString(oNPC, "POSTFIX");
|
|
string sBaseRace = GetLocalString(oNPC, "BASE_RACE");
|
|
|
|
int nGender = GetGender(oNPC);
|
|
int bClassTitle = GetLocalInt(oNPC,"CLASS_TITLE");
|
|
int nHighClass = GetHighestClassLevel(oNPC);
|
|
int nLevel = GetLevelByClass(nHighClass, oNPC);
|
|
|
|
//:: Handles class level based NPC titles
|
|
if (bClassTitle)
|
|
{
|
|
string sTitle;
|
|
|
|
switch (nHighClass)
|
|
{
|
|
case CLASS_TYPE_BARBARIAN:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Brute" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Vandal"; break;
|
|
|
|
case 6:
|
|
if (nGender == 1)
|
|
{sTitle = "Plunderess"; break;}
|
|
else
|
|
{sTitle = "Plunderer"; break;}
|
|
|
|
case 7:
|
|
sTitle = "Pillager"; break;
|
|
|
|
case 8:
|
|
sTitle = "Marauder"; break;
|
|
|
|
case 9:
|
|
sTitle = "Reaver"; break;
|
|
|
|
case 10:
|
|
sTitle = "Barbarian"; break;
|
|
|
|
case 11:
|
|
sTitle = "Mauler"; break;
|
|
|
|
case 12:
|
|
sTitle = "Ravager"; break;
|
|
|
|
case 13:
|
|
sTitle = "Slaughterer"; break;
|
|
|
|
case 14:
|
|
sTitle = "Destroyer"; break;
|
|
|
|
case 15:
|
|
if (nGender == 1)
|
|
{sTitle = "Chieftainess"; break;}
|
|
else
|
|
{sTitle = "Chieftain"; break;}
|
|
|
|
case 16:
|
|
sTitle = "Bloodletter"; break;
|
|
|
|
case 17:
|
|
sTitle = "Rampager"; break;
|
|
|
|
case 18:
|
|
sTitle = "Slayer"; break;
|
|
|
|
case 19:
|
|
sTitle = "Warmonger"; break;
|
|
|
|
case 20:
|
|
if (nGender == 1)
|
|
{sTitle = "High Chieftainess"; break;}
|
|
else
|
|
{sTitle = "High Chieftain"; break;}
|
|
|
|
default:
|
|
if (nGender == 1)
|
|
{sTitle = "Conqueress"; break;}
|
|
else
|
|
{sTitle = "Conqueror"; break;}
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_ROGUE:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Lookout" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Outlaw"; break;
|
|
|
|
case 6:
|
|
sTitle = "Scalawag"; break;
|
|
|
|
case 7:
|
|
sTitle = "Creeper"; break;
|
|
|
|
case 8:
|
|
sTitle = "Larker"; break;
|
|
|
|
case 9:
|
|
sTitle = "Footpad"; break;
|
|
|
|
case 10:
|
|
sTitle = "Rogue"; break;
|
|
|
|
case 11:
|
|
sTitle = "Cutpurse"; break;
|
|
|
|
case 12:
|
|
sTitle = "Thief"; break;
|
|
|
|
case 13:
|
|
sTitle = "Pilferer"; break;
|
|
|
|
case 14:
|
|
sTitle = "Robber"; break;
|
|
|
|
case 15:
|
|
sTitle = "Sharper"; break;
|
|
|
|
case 16:
|
|
sTitle = "Burglar"; break;
|
|
|
|
case 17:
|
|
sTitle = "Filcher"; break;
|
|
|
|
case 18:
|
|
sTitle = "Scoundrel"; break;
|
|
|
|
case 19:
|
|
sTitle = "Knave"; break;
|
|
|
|
case 20:
|
|
sTitle = "Prowler"; break;
|
|
|
|
default:
|
|
sTitle = "Master Rogue"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_BARD:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Crier" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
if (nGender == 1)
|
|
{sTitle = "Chantress"; break;}
|
|
else
|
|
{sTitle = "Chanter"; break;}
|
|
|
|
case 6:
|
|
sTitle = "Skop"; break;
|
|
|
|
case 7:
|
|
sTitle = "Accompanist"; break;
|
|
|
|
case 8:
|
|
sTitle = "Rhymer"; break;
|
|
|
|
case 9:
|
|
sTitle = "Singer"; break;
|
|
|
|
case 10:
|
|
sTitle = "Balladeer"; break;
|
|
|
|
case 11:
|
|
if (nGender == 1)
|
|
{sTitle = "Cantoress"; break;}
|
|
else
|
|
{sTitle = "Cantor"; break;}
|
|
|
|
case 12:
|
|
sTitle = "Lutenist"; break;
|
|
|
|
case 13:
|
|
sTitle = "Melodist"; break;
|
|
|
|
case 14:
|
|
sTitle = "Lyrist"; break;
|
|
|
|
case 15:
|
|
sTitle = "Jongleur"; break;
|
|
|
|
case 16:
|
|
sTitle = "Loreweaver"; break;
|
|
|
|
case 17:
|
|
sTitle = "Chronicler"; break;
|
|
|
|
case 18:
|
|
sTitle = "Muse"; break;
|
|
|
|
case 19:
|
|
if (nGender == 1)
|
|
{sTitle = "Rhapsode"; break;}
|
|
else
|
|
{sTitle = "Rhapsodist"; break;}
|
|
|
|
case 20:
|
|
sTitle = "Bard"; break;
|
|
|
|
case 21:
|
|
sTitle = "Raconteur"; break;
|
|
|
|
case 22:
|
|
sTitle = "Siren"; break;
|
|
|
|
case 23:
|
|
sTitle = "Songsmith"; break;
|
|
|
|
case 24:
|
|
sTitle = "Versifer"; break;
|
|
|
|
case 25:
|
|
sTitle = "Minstrel"; break;
|
|
|
|
case 26:
|
|
sTitle = "Sonneteer"; break;
|
|
|
|
case 27:
|
|
if (nGender == 1)
|
|
{sTitle = "Trobairitz"; break;}
|
|
else
|
|
{sTitle = "Troubadour"; break;}
|
|
|
|
case 28:
|
|
sTitle = "Citharist"; break;
|
|
|
|
case 29:
|
|
sTitle = "High Minstrel"; break;
|
|
|
|
default:
|
|
sTitle = "Master Bard"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_SORCERER:
|
|
case CLASS_TYPE_WIZARD:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Apprentice" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Adept"; break;
|
|
|
|
case 6:
|
|
sTitle = "Journeymage"; break;
|
|
|
|
case 7:
|
|
sTitle = "Hedge Mage"; break;
|
|
|
|
case 8:
|
|
sTitle = "Magician"; break;
|
|
|
|
case 9:
|
|
sTitle = "Prestidigitator"; break;
|
|
|
|
case 10:
|
|
sTitle = "Wizard"; break;
|
|
|
|
case 11:
|
|
sTitle = "Sage"; break;
|
|
|
|
case 12:
|
|
sTitle = "Visionary"; break;
|
|
|
|
case 13:
|
|
sTitle = "Loremaster"; break;
|
|
|
|
case 14:
|
|
sTitle = "Mage"; break;
|
|
|
|
case 15:
|
|
sTitle = "Fatespinner"; break;
|
|
|
|
case 16:
|
|
sTitle = "Cabalist"; break;
|
|
|
|
case 17:
|
|
sTitle = "Thaumaturge"; break;
|
|
|
|
case 18:
|
|
sTitle = "Theurgist"; break;
|
|
|
|
case 19:
|
|
sTitle = "Augur"; break;
|
|
|
|
case 20:
|
|
sTitle = "Spellbinder"; break;
|
|
|
|
default:
|
|
sTitle = "Archmage"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_CLERIC:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Candidate" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Aspirant"; break;
|
|
|
|
case 6:
|
|
sTitle = "Novice"; break;
|
|
|
|
case 7:
|
|
sTitle = "Acolyte"; break;
|
|
|
|
case 8:
|
|
sTitle = "Initiate"; break;
|
|
|
|
case 9:
|
|
if (nGender == 1)
|
|
{sTitle = "Priestess"; break;}
|
|
else
|
|
{sTitle = "Priest"; break;}
|
|
|
|
case 10:
|
|
sTitle = "Cleric"; break;
|
|
|
|
case 11:
|
|
sTitle = "Curate"; break;
|
|
|
|
case 12:
|
|
sTitle = "Apostle"; break;
|
|
|
|
case 13:
|
|
sTitle = "Ovate"; break;
|
|
|
|
case 14:
|
|
sTitle = "Missionary"; break;
|
|
|
|
case 15:
|
|
if (nGender == 1)
|
|
{sTitle = "Canoness"; break;}
|
|
else
|
|
{sTitle = "Canon"; break;}
|
|
|
|
case 16:
|
|
if (nGender == 1)
|
|
{sTitle = "Abbotess"; break;}
|
|
else
|
|
{sTitle = "Abbot"; break;}
|
|
|
|
case 17:
|
|
sTitle = "Bishop"; break;
|
|
|
|
case 18:
|
|
if (nGender == 1)
|
|
{sTitle = "Matriarch"; break;}
|
|
else
|
|
{sTitle = "Patriarch"; break;}
|
|
|
|
case 19:
|
|
sTitle = "Preacher"; break;
|
|
|
|
default:
|
|
if (nGender == 1)
|
|
{sTitle = "High Priestess"; break;}
|
|
else
|
|
{sTitle = "High Priest"; break;}
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_DRUID:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Initiate" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Devotee"; break;
|
|
|
|
case 6:
|
|
sTitle = "Beastling"; break;
|
|
|
|
case 7:
|
|
sTitle = "Grovelurker"; break;
|
|
|
|
case 8:
|
|
sTitle = "Shaper"; break;
|
|
|
|
case 9:
|
|
sTitle = "Springwalker"; break;
|
|
|
|
case 10:
|
|
sTitle = "Druid"; break;
|
|
|
|
case 11:
|
|
sTitle = "Naturekin"; break;
|
|
|
|
case 12:
|
|
sTitle = "Treewarden"; break;
|
|
|
|
case 13:
|
|
sTitle = "Auspex"; break;
|
|
|
|
case 14:
|
|
sTitle = "Haruspex"; break;
|
|
|
|
case 15:
|
|
sTitle = "Student of Stones"; break;
|
|
|
|
case 16:
|
|
sTitle = "Student of Waters"; break;
|
|
|
|
case 17:
|
|
sTitle = "Student of Forests"; break;
|
|
|
|
case 18:
|
|
sTitle = "Student of Winds"; break;
|
|
|
|
case 19:
|
|
sTitle = "Student of Changes"; break;
|
|
|
|
case 20:
|
|
sTitle = "Pathwarden"; break;
|
|
|
|
default:
|
|
sTitle = "Archdruid"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_FIGHTER:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Guard";
|
|
break;
|
|
|
|
case 4:
|
|
sTitle = "Elite Guard"; break;
|
|
|
|
case 5: case 6:
|
|
sTitle = "Warrior"; break;
|
|
|
|
case 7:
|
|
sTitle = "Elite Warrior"; break;
|
|
|
|
case 8:
|
|
sTitle = "Soldier"; break;
|
|
|
|
case 9:
|
|
sTitle = "Enforcer"; break;
|
|
|
|
case 10:
|
|
sTitle = "Fighter"; break;
|
|
|
|
case 11:
|
|
sTitle = "Skirmisher"; break;
|
|
|
|
case 12:
|
|
sTitle = "Veteran"; break;
|
|
|
|
case 13:
|
|
sTitle = "Armiger"; break;
|
|
|
|
case 14:
|
|
sTitle = "Myrmidon"; break;
|
|
|
|
case 15:
|
|
sTitle = "Hero"; break;
|
|
|
|
case 16:
|
|
sTitle = "Vanguard"; break;
|
|
|
|
case 17:
|
|
sTitle = "Sentinel"; break;
|
|
|
|
case 18:
|
|
sTitle = "Dominator"; break;
|
|
|
|
case 19:
|
|
sTitle = "Warmonger"; break;
|
|
|
|
case 20:
|
|
sTitle = "Champion"; break;
|
|
|
|
default:
|
|
sTitle = "Grandmaster"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_MONK:
|
|
switch(nLevel)
|
|
{
|
|
case 1:
|
|
sTitle = "Trainee"; break;
|
|
|
|
case 2:
|
|
sTitle = "Initiate"; break;
|
|
|
|
case 3:
|
|
sTitle = "Novice"; break;
|
|
|
|
case 4:
|
|
sTitle = "Neophyte"; break;
|
|
|
|
case 5:
|
|
sTitle = "Aspirant"; break;
|
|
|
|
case 6:
|
|
sTitle = "Acolyte"; break;
|
|
|
|
case 7:
|
|
sTitle = "Devotee"; break;
|
|
|
|
case 8:
|
|
sTitle = "Disciple"; break;
|
|
|
|
case 9:
|
|
sTitle = "Adept"; break;
|
|
|
|
case 10:
|
|
sTitle = "Ascetic"; break;
|
|
|
|
case 11:
|
|
sTitle = "Pilgrim"; break;
|
|
|
|
case 12:
|
|
sTitle = "Master"; break;
|
|
|
|
case 13:
|
|
sTitle = "Anchorite"; break;
|
|
|
|
case 14:
|
|
sTitle = "Mystic"; break;
|
|
|
|
case 15:
|
|
sTitle = "Meditator"; break;
|
|
|
|
case 16:
|
|
sTitle = "Seeker"; break;
|
|
|
|
case 17:
|
|
sTitle = "Guru"; break;
|
|
|
|
case 18:
|
|
sTitle = "Sensei"; break;
|
|
|
|
case 19:
|
|
sTitle = "Sannyasi"; break;
|
|
|
|
case 20:
|
|
sTitle = "Exemplar"; break;
|
|
|
|
case 21:
|
|
sTitle = "Transcendent"; break;
|
|
|
|
default:
|
|
sTitle = "High Master"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_PALADIN:
|
|
switch(nLevel)
|
|
{
|
|
case 1:
|
|
sTitle = "Advocate"; break;
|
|
|
|
case 2:
|
|
sTitle = "Initiate"; break;
|
|
|
|
case 3:
|
|
sTitle = "Squire"; break;
|
|
|
|
case 4:
|
|
sTitle = "Gallant"; break;
|
|
|
|
case 5:
|
|
sTitle = "Emissary"; break;
|
|
|
|
case 6:
|
|
sTitle = "Guardian"; break;
|
|
|
|
case 7:
|
|
sTitle = "Devotee"; break;
|
|
|
|
case 8:
|
|
sTitle = "Disciple"; break;
|
|
|
|
case 9:
|
|
sTitle = "Adept"; break;
|
|
|
|
case 10:
|
|
sTitle = "Ascetic"; break;
|
|
|
|
case 11:
|
|
sTitle = "Pilgrim"; break;
|
|
|
|
case 12:
|
|
sTitle = "Master"; break;
|
|
|
|
case 13:
|
|
sTitle = "Anchorite"; break;
|
|
|
|
case 14:
|
|
sTitle = "Mystic"; break;
|
|
|
|
case 15:
|
|
sTitle = "Meditator"; break;
|
|
|
|
case 16:
|
|
sTitle = "Seeker"; break;
|
|
|
|
case 17:
|
|
sTitle = "Guru"; break;
|
|
|
|
case 18:
|
|
sTitle = "Sensei"; break;
|
|
|
|
case 19:
|
|
sTitle = "Sannyasi"; break;
|
|
|
|
case 20:
|
|
sTitle = "Exemplar"; break;
|
|
|
|
case 21:
|
|
sTitle = "Transcendent"; break;
|
|
|
|
default:
|
|
sTitle = "High Master"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_RANGER:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Greenhorn" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Tenderfoot"; break;
|
|
|
|
case 6:
|
|
sTitle = "Vagrant"; break;
|
|
|
|
case 7:
|
|
sTitle = "Tramp"; break;
|
|
|
|
case 8:
|
|
sTitle = "Nomad"; break;
|
|
|
|
case 9:
|
|
sTitle = "Wanderer"; break;
|
|
|
|
case 10:
|
|
sTitle = "Ranger"; break;
|
|
|
|
case 11:
|
|
sTitle = "Rambler"; break;
|
|
|
|
case 12:
|
|
sTitle = "Traveler"; break;
|
|
|
|
case 13:
|
|
sTitle = "Sojourner"; break;
|
|
|
|
case 14:
|
|
sTitle = "Outrider"; break;
|
|
|
|
case 15:
|
|
sTitle = "Wayfarer"; break;
|
|
|
|
case 16:
|
|
sTitle = "Excursionist"; break;
|
|
|
|
case 17:
|
|
sTitle = "Trekker"; break;
|
|
|
|
case 18:
|
|
sTitle = "Trailblazer"; break;
|
|
|
|
case 19:
|
|
sTitle = "Woodsman"; break;
|
|
|
|
case 20:
|
|
sTitle = "High Ranger"; break;
|
|
|
|
case 21:
|
|
sTitle = "Ranger"; break;
|
|
|
|
case 22:
|
|
sTitle = "Rambler"; break;
|
|
|
|
case 23:
|
|
sTitle = "Traveler"; break;
|
|
|
|
case 24:
|
|
sTitle = "Sojourner"; break;
|
|
|
|
case 25:
|
|
sTitle = "Outrider"; break;
|
|
|
|
case 26:
|
|
sTitle = "Wayfarer"; break;
|
|
|
|
case 27:
|
|
sTitle = "Excursionist"; break;
|
|
|
|
case 28:
|
|
sTitle = "Trekker"; break;
|
|
|
|
case 29:
|
|
sTitle = "Trailblazer"; break;
|
|
|
|
default:
|
|
sTitle = "Ranger Lord"; break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//return sTitle;
|
|
}
|
|
|
|
//:: Handles class based Henchman titles
|
|
int nRndRogue = GetLocalInt(OBJECT_SELF,"RND_ROGUE");
|
|
if (nRndRogue == 1)
|
|
{
|
|
int nResult = Random(30) + 1; // Generate a random number between 1 and 30
|
|
switch (nResult)
|
|
{
|
|
case 1:
|
|
sPostfix = "the Quick";
|
|
break;
|
|
case 2:
|
|
sPostfix = "the Quiet";
|
|
break;
|
|
case 3:
|
|
sPostfix = "the Sharp";
|
|
break;
|
|
case 4:
|
|
sPostfix = "the Sneak";
|
|
break;
|
|
case 5:
|
|
sPostfix = "the Rogue";
|
|
break;
|
|
case 6:
|
|
sPostfix = "the Footpad";
|
|
break;
|
|
case 7:
|
|
sPostfix = "the Shadow";
|
|
break;
|
|
case 8:
|
|
sPostfix = "the Nimble";
|
|
break;
|
|
case 9:
|
|
sPostfix = "the Swift";
|
|
break;
|
|
case 10:
|
|
sPostfix = "the Silent";
|
|
break;
|
|
case 11:
|
|
sPostfix = "the Sly";
|
|
break;
|
|
case 12:
|
|
sPostfix = "the Crafty";
|
|
break;
|
|
case 13:
|
|
sPostfix = "the Cunning";
|
|
break;
|
|
case 14:
|
|
sPostfix = "the Elusive";
|
|
break;
|
|
case 15:
|
|
sPostfix = "the Deft";
|
|
break;
|
|
case 16:
|
|
sPostfix = "the Guileful";
|
|
break;
|
|
case 17:
|
|
sPostfix = "the Lurker";
|
|
break;
|
|
case 18:
|
|
sPostfix = "the Trickster";
|
|
break;
|
|
case 19:
|
|
sPostfix = "the Prowler";
|
|
break;
|
|
case 20:
|
|
sPostfix = "the Skulker";
|
|
break;
|
|
case 21:
|
|
sPostfix = "the Phantom";
|
|
break;
|
|
case 22:
|
|
sPostfix = "the Wily";
|
|
break;
|
|
case 23:
|
|
sPostfix = "the Mysterious";
|
|
break;
|
|
case 24:
|
|
sPostfix = "the Furtive";
|
|
break;
|
|
case 25:
|
|
sPostfix = "the Discreet";
|
|
break;
|
|
case 26:
|
|
sPostfix = "the Spy";
|
|
break;
|
|
case 27:
|
|
sPostfix = "the Veiled";
|
|
break;
|
|
case 28:
|
|
sPostfix = "the Artful";
|
|
break;
|
|
case 29:
|
|
sPostfix = "the Sleuth";
|
|
break;
|
|
case 30:
|
|
sPostfix = "the Masked";
|
|
break;
|
|
}
|
|
}
|
|
|
|
int nRndBarb = GetLocalInt(OBJECT_SELF,"RND_BARBARIAN");
|
|
if (nRndBarb == 1)
|
|
{
|
|
int nResult = Random(30) + 1; // Generate a random number between 1 and 30
|
|
switch (nResult)
|
|
{
|
|
case 1:
|
|
sPostfix = "the Barbarian";
|
|
break;
|
|
case 2:
|
|
sPostfix = "the Destroyer";
|
|
break;
|
|
case 3:
|
|
sPostfix = "of the Plains";
|
|
break;
|
|
case 4:
|
|
sPostfix = "of Klar Clan";
|
|
break;
|
|
case 5:
|
|
sPostfix = "the Rampager";
|
|
break;
|
|
case 6:
|
|
sPostfix = "the Reaver";
|
|
break;
|
|
case 7:
|
|
sPostfix = "the Savage";
|
|
break;
|
|
case 8:
|
|
sPostfix = "the Berserker";
|
|
break;
|
|
case 9:
|
|
sPostfix = "the Untamed";
|
|
break;
|
|
case 10:
|
|
sPostfix = "the Fierce";
|
|
break;
|
|
case 11:
|
|
sPostfix = "the Warbringer";
|
|
break;
|
|
case 12:
|
|
sPostfix = "the Wild";
|
|
break;
|
|
case 13:
|
|
sPostfix = "the Raider";
|
|
break;
|
|
case 14:
|
|
sPostfix = "the Vicious";
|
|
break;
|
|
case 15:
|
|
sPostfix = "the Ruthless";
|
|
break;
|
|
case 16:
|
|
sPostfix = "the Savage";
|
|
break;
|
|
case 17:
|
|
sPostfix = "the Bloodthirsty";
|
|
break;
|
|
case 18:
|
|
sPostfix = "the Warlord";
|
|
break;
|
|
case 19:
|
|
sPostfix = "the Brute";
|
|
break;
|
|
case 20:
|
|
sPostfix = "the Fierce";
|
|
break;
|
|
case 21:
|
|
sPostfix = "the Marauder";
|
|
break;
|
|
case 22:
|
|
sPostfix = "the Howler";
|
|
break;
|
|
case 23:
|
|
sPostfix = "the Ravager";
|
|
break;
|
|
case 24:
|
|
sPostfix = "the Crusher";
|
|
break;
|
|
case 25:
|
|
sPostfix = "the Frenzied";
|
|
break;
|
|
case 26:
|
|
sPostfix = "the Beast";
|
|
break;
|
|
case 27:
|
|
sPostfix = "the Juggernaut";
|
|
break;
|
|
case 28:
|
|
sPostfix = "the Slayer";
|
|
break;
|
|
case 29:
|
|
sPostfix = "the Rager";
|
|
break;
|
|
case 30:
|
|
sPostfix = "the Conqueror";
|
|
break;
|
|
}
|
|
}
|
|
|
|
int nRndFight = GetLocalInt(OBJECT_SELF,"RND_FIGHTER");
|
|
if (nRndFight == 1)
|
|
{
|
|
int nResult = Random(30) + 1; // Generate a random number between 1 and 30
|
|
switch (nResult)
|
|
{
|
|
case 1:
|
|
sPostfix = "the Strong";
|
|
break;
|
|
case 2:
|
|
sPostfix = "the Stout";
|
|
break;
|
|
case 3:
|
|
sPostfix = "of the Blade";
|
|
break;
|
|
case 4:
|
|
sPostfix = "of Tyr";
|
|
break;
|
|
case 5:
|
|
sPostfix = "of Urik";
|
|
break;
|
|
case 6:
|
|
sPostfix = "the Swordhand";
|
|
break;
|
|
case 7:
|
|
sPostfix = "the Valiant";
|
|
break;
|
|
case 8:
|
|
sPostfix = "the Brave";
|
|
break;
|
|
case 9:
|
|
sPostfix = "the Defender";
|
|
break;
|
|
case 10:
|
|
sPostfix = "the Just";
|
|
break;
|
|
case 11:
|
|
sPostfix = "the Noble";
|
|
break;
|
|
case 12:
|
|
sPostfix = "the Gallant";
|
|
break;
|
|
case 13:
|
|
sPostfix = "the Protector";
|
|
break;
|
|
case 14:
|
|
sPostfix = "the Shield";
|
|
break;
|
|
case 15:
|
|
sPostfix = "the Champion";
|
|
break;
|
|
case 16:
|
|
sPostfix = "the Guardian";
|
|
break;
|
|
case 17:
|
|
sPostfix = "the Sentinel";
|
|
break;
|
|
case 18:
|
|
sPostfix = "the Warrior";
|
|
break;
|
|
case 19:
|
|
sPostfix = "the Stalwart";
|
|
break;
|
|
case 20:
|
|
sPostfix = "the Ironclad";
|
|
break;
|
|
case 21:
|
|
sPostfix = "the Blade";
|
|
break;
|
|
case 22:
|
|
sPostfix = "the Swordsman";
|
|
break;
|
|
case 23:
|
|
sPostfix = "the Vanguard";
|
|
break;
|
|
case 24:
|
|
sPostfix = "the Lancer";
|
|
break;
|
|
case 25:
|
|
sPostfix = "the Spearhead";
|
|
break;
|
|
case 26:
|
|
sPostfix = "the Battlemaster";
|
|
break;
|
|
case 27:
|
|
sPostfix = "the Blademaster";
|
|
break;
|
|
case 28:
|
|
sPostfix = "the Warlord";
|
|
break;
|
|
case 29:
|
|
sPostfix = "the Vanquisher";
|
|
break;
|
|
case 30:
|
|
sPostfix = "the Swordmaster";
|
|
break;
|
|
}
|
|
}
|
|
|
|
int nRndCleric = GetLocalInt(OBJECT_SELF,"RND_CLERIC");
|
|
if (nRndCleric == 1)
|
|
{
|
|
int nResult = Random(30) + 1; // Generate a random number between 1 and 30
|
|
if (nResult == 1)
|
|
{
|
|
sPostfix = "the Pious";
|
|
}
|
|
else if (nResult == 2)
|
|
{
|
|
sPostfix = "the Holy";
|
|
}
|
|
else if (nResult == 3)
|
|
{
|
|
sPostfix = "the Priest";
|
|
}
|
|
else if (nResult == 4)
|
|
{
|
|
sPostfix = "the Zealous";
|
|
}
|
|
else if (nResult == 5)
|
|
{
|
|
sPostfix = "of Salt View";
|
|
}
|
|
else if (nResult == 6)
|
|
{
|
|
sPostfix = "the Wise";
|
|
}
|
|
else if (nResult == 7)
|
|
{
|
|
sPostfix = "the Devout";
|
|
}
|
|
else if (nResult == 8)
|
|
{
|
|
sPostfix = "the Faithful";
|
|
}
|
|
else if (nResult == 9)
|
|
{
|
|
sPostfix = "the Righteous";
|
|
}
|
|
else if (nResult == 10)
|
|
{
|
|
sPostfix = "the Blessed";
|
|
}
|
|
else if (nResult == 11)
|
|
{
|
|
sPostfix = "the Pure";
|
|
}
|
|
else if (nResult == 12)
|
|
{
|
|
sPostfix = "the Sacred";
|
|
}
|
|
else if (nResult == 13)
|
|
{
|
|
sPostfix = "the Benevolent";
|
|
}
|
|
else if (nResult == 14)
|
|
{
|
|
sPostfix = "the Virtuous";
|
|
}
|
|
else if (nResult == 15)
|
|
{
|
|
sPostfix = "the Saintly";
|
|
}
|
|
else if (nResult == 16)
|
|
{
|
|
sPostfix = "the Healer";
|
|
}
|
|
else if (nResult == 17)
|
|
{
|
|
sPostfix = "the Anointed";
|
|
}
|
|
else if (nResult == 18)
|
|
{
|
|
sPostfix = "the Protector";
|
|
}
|
|
else if (nResult == 19)
|
|
{
|
|
sPostfix = "the Merciful";
|
|
}
|
|
else if (nResult == 20)
|
|
{
|
|
sPostfix = "the Revered";
|
|
}
|
|
else if (nResult == 21)
|
|
{
|
|
sPostfix = "the Graceful";
|
|
}
|
|
else if (nResult == 22)
|
|
{
|
|
sPostfix = "the Watchful";
|
|
}
|
|
else if (nResult == 23)
|
|
{
|
|
sPostfix = "the Forgiving";
|
|
}
|
|
else if (nResult == 24)
|
|
{
|
|
sPostfix = "the Humble";
|
|
}
|
|
else if (nResult == 25)
|
|
{
|
|
sPostfix = "the Divine";
|
|
}
|
|
else if (nResult == 26)
|
|
{
|
|
sPostfix = "the Preacher";
|
|
}
|
|
else if (nResult == 27)
|
|
{
|
|
sPostfix = "the Illuminated";
|
|
}
|
|
else if (nResult == 28)
|
|
{
|
|
sPostfix = "the Mystic";
|
|
}
|
|
else if (nResult == 29)
|
|
{
|
|
sPostfix = "the Herald";
|
|
}
|
|
else // nResult == 30
|
|
{
|
|
sPostfix = "the Exalted";
|
|
}
|
|
}
|
|
|
|
int nRndMage = GetLocalInt(OBJECT_SELF,"RND_MAGE");
|
|
if (nRndMage == 1)
|
|
{
|
|
int nResult = Random(30) + 1; // Generate a random number between 1 and 30
|
|
switch (nResult)
|
|
{
|
|
case 1:
|
|
sPostfix = "the Mad";
|
|
break;
|
|
case 2:
|
|
sPostfix = "the Arcane";
|
|
break;
|
|
case 3:
|
|
sPostfix = "the Black";
|
|
break;
|
|
case 4:
|
|
sPostfix = "the Wizard";
|
|
break;
|
|
case 5:
|
|
sPostfix = "of Ur-Draxa";
|
|
break;
|
|
case 6:
|
|
sPostfix = "the Mage";
|
|
break;
|
|
case 7:
|
|
sPostfix = "the Enigmatic";
|
|
break;
|
|
case 8:
|
|
sPostfix = "the Mystical";
|
|
break;
|
|
case 9:
|
|
sPostfix = "the Eldritch";
|
|
break;
|
|
case 10:
|
|
sPostfix = "the Runeweaver";
|
|
break;
|
|
case 11:
|
|
sPostfix = "the Sorcerous";
|
|
break;
|
|
case 12:
|
|
sPostfix = "the Seer";
|
|
break;
|
|
case 13:
|
|
sPostfix = "the Arcanist";
|
|
break;
|
|
case 14:
|
|
sPostfix = "the Illustrious";
|
|
break;
|
|
case 15:
|
|
sPostfix = "the Sage";
|
|
break;
|
|
case 16:
|
|
sPostfix = "the Sorcerous";
|
|
break;
|
|
case 17:
|
|
sPostfix = "the Occult";
|
|
break;
|
|
case 18:
|
|
sPostfix = "the Arcane Adept";
|
|
break;
|
|
case 19:
|
|
sPostfix = "the Spellbinder";
|
|
break;
|
|
case 20:
|
|
sPostfix = "the Occultist";
|
|
break;
|
|
case 21:
|
|
sPostfix = "the Conjurer";
|
|
break;
|
|
case 22:
|
|
sPostfix = "the Seer";
|
|
break;
|
|
case 23:
|
|
sPostfix = "the Invoker";
|
|
break;
|
|
case 24:
|
|
sPostfix = "the Mysterious";
|
|
break;
|
|
case 25:
|
|
sPostfix = "the Shrouded";
|
|
break;
|
|
case 26:
|
|
sPostfix = "the Visionary";
|
|
break;
|
|
case 27:
|
|
sPostfix = "the Spellweaver";
|
|
break;
|
|
case 28:
|
|
sPostfix = "the Willbreaker";
|
|
break;
|
|
case 29:
|
|
sPostfix = "the Charmer";
|
|
break;
|
|
case 30:
|
|
sPostfix = "the Elementalist";
|
|
break;
|
|
}
|
|
}
|
|
|
|
int nRndBard = GetLocalInt(OBJECT_SELF,"RND_BARD");
|
|
if (nRndBard == 1)
|
|
{
|
|
int nResult = Random(25) + 1; // Generate a random number between 1 and 25
|
|
switch (nResult)
|
|
{
|
|
case 1:
|
|
sPostfix = "the Subtle";
|
|
break;
|
|
case 2:
|
|
sPostfix = "the Veiled";
|
|
break;
|
|
case 3:
|
|
sPostfix = "the Shadowed";
|
|
break;
|
|
case 4:
|
|
sPostfix = "the Intriguer";
|
|
break;
|
|
case 5:
|
|
sPostfix = "of Altaruk";
|
|
break;
|
|
case 6:
|
|
sPostfix = "the Elusive";
|
|
break;
|
|
case 7:
|
|
sPostfix = "the Mysterious";
|
|
break;
|
|
case 8:
|
|
sPostfix = "the Cryptic";
|
|
break;
|
|
case 9:
|
|
sPostfix = "the Insidious";
|
|
break;
|
|
case 10:
|
|
sPostfix = "the Quiet";
|
|
break;
|
|
case 11:
|
|
sPostfix = "the Sly";
|
|
break;
|
|
case 12:
|
|
sPostfix = "the Covert";
|
|
break;
|
|
case 13:
|
|
sPostfix = "the Furtive";
|
|
break;
|
|
case 14:
|
|
sPostfix = "the Discreet";
|
|
break;
|
|
case 15:
|
|
sPostfix = "the Subversive";
|
|
break;
|
|
case 16:
|
|
sPostfix = "the Shrouded";
|
|
break;
|
|
case 17:
|
|
sPostfix = "the Obscured";
|
|
break;
|
|
case 18:
|
|
sPostfix = "the Clever";
|
|
break;
|
|
case 19:
|
|
sPostfix = "the Enigmatic";
|
|
break;
|
|
case 20:
|
|
sPostfix = "of Balic";
|
|
break;
|
|
case 21:
|
|
sPostfix = "of Tyr";
|
|
break;
|
|
case 22:
|
|
sPostfix = "of Raam";
|
|
break;
|
|
case 23:
|
|
sPostfix = "of Urik";
|
|
break;
|
|
case 24:
|
|
sPostfix = "the Crafty";
|
|
break;
|
|
case 25:
|
|
sPostfix = "of Draj";
|
|
break;
|
|
}
|
|
}
|
|
|
|
int nRndDruid = GetLocalInt(OBJECT_SELF,"RND_DRUID");
|
|
if (nRndDruid == 1)
|
|
{
|
|
int nResult = Random(25) + 1; // Generate a random number between 1 and 25
|
|
switch (nResult)
|
|
{
|
|
case 1:
|
|
sPostfix = "the Druid";
|
|
break;
|
|
case 2:
|
|
sPostfix = "of the Forest";
|
|
break;
|
|
case 3:
|
|
sPostfix = "of the Wild";
|
|
break;
|
|
case 4:
|
|
sPostfix = "the Wolflord";
|
|
break;
|
|
case 5:
|
|
sPostfix = "the Treelord";
|
|
break;
|
|
case 6:
|
|
sPostfix = "the Verdant";
|
|
break;
|
|
case 7:
|
|
sPostfix = "the Earthshaker";
|
|
break;
|
|
case 8:
|
|
sPostfix = "the Feral";
|
|
break;
|
|
case 9:
|
|
sPostfix = "of the Glade";
|
|
break;
|
|
case 10:
|
|
sPostfix = "of the Crystal Forest";
|
|
break;
|
|
case 11:
|
|
sPostfix = "the Thorned";
|
|
break;
|
|
case 12:
|
|
sPostfix = "the Greenwarden";
|
|
break;
|
|
case 13:
|
|
sPostfix = "the Naturebound";
|
|
break;
|
|
case 14:
|
|
sPostfix = "the Forestborn";
|
|
break;
|
|
case 15:
|
|
sPostfix = "the Spiritcaller";
|
|
break;
|
|
case 16:
|
|
sPostfix = "the Leafblade";
|
|
break;
|
|
case 17:
|
|
sPostfix = "the Mossy";
|
|
break;
|
|
case 18:
|
|
sPostfix = "the Grovekeeper";
|
|
break;
|
|
case 19:
|
|
sPostfix = "the Stormbringer";
|
|
break;
|
|
case 20:
|
|
sPostfix = "the Earthshaper";
|
|
break;
|
|
case 21:
|
|
sPostfix = "the Bramble";
|
|
break;
|
|
case 22:
|
|
sPostfix = "of the Black Sands";
|
|
break;
|
|
case 23:
|
|
sPostfix = "of the Silt Sea";
|
|
break;
|
|
case 24:
|
|
sPostfix = "the Spiritbinder";
|
|
break;
|
|
case 25:
|
|
sPostfix = "the Wildheart";
|
|
break;
|
|
}
|
|
}
|
|
|
|
int nRndRanger = GetLocalInt(OBJECT_SELF,"RND_RANGER");
|
|
if (nRndRanger == 1)
|
|
{
|
|
int nResult = Random(25) + 1; // Generate a random number between 1 and 25
|
|
switch (nResult)
|
|
{
|
|
case 1:
|
|
sPostfix = "the Ranger";
|
|
break;
|
|
case 2:
|
|
sPostfix = "of the Forest";
|
|
break;
|
|
case 3:
|
|
sPostfix = "of the Wild";
|
|
break;
|
|
case 4:
|
|
sPostfix = "the Strider";
|
|
break;
|
|
case 5:
|
|
sPostfix = "the Venger";
|
|
break;
|
|
case 6:
|
|
sPostfix = "the Pathfinder";
|
|
break;
|
|
case 7:
|
|
sPostfix = "the Woodsman";
|
|
break;
|
|
case 8:
|
|
sPostfix = "the Trailblazer";
|
|
break;
|
|
case 9:
|
|
sPostfix = "the Hunter";
|
|
break;
|
|
case 10:
|
|
sPostfix = "the Scout";
|
|
break;
|
|
case 11:
|
|
sPostfix = "the Wayfarer";
|
|
break;
|
|
case 12:
|
|
sPostfix = "the Outrider";
|
|
break;
|
|
case 13:
|
|
sPostfix = "the Seeker";
|
|
break;
|
|
case 14:
|
|
sPostfix = "the Sentinel";
|
|
break;
|
|
case 15:
|
|
sPostfix = "the Forestborn";
|
|
break;
|
|
case 16:
|
|
sPostfix = "the Survivalist";
|
|
break;
|
|
case 17:
|
|
sPostfix = "the Tracker";
|
|
break;
|
|
case 18:
|
|
sPostfix = "the Forager";
|
|
break;
|
|
case 19:
|
|
sPostfix = "the Warder";
|
|
break;
|
|
case 20:
|
|
sPostfix = "the Greenblade";
|
|
break;
|
|
case 21:
|
|
sPostfix = "the Beastmaster";
|
|
break;
|
|
case 22:
|
|
sPostfix = "the Thornhunter";
|
|
break;
|
|
case 23:
|
|
sPostfix = "of the Deepwood";
|
|
break;
|
|
case 24:
|
|
sPostfix = "of the Roughlands";
|
|
break;
|
|
case 25:
|
|
sPostfix = "the Wilderness Guide";
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
if (sRandomName != "")
|
|
{
|
|
if (sRandomName == "RANDOM")
|
|
{
|
|
switch (GetLocalInt(oNPC, "NAME_TYPE"))
|
|
{
|
|
case 1: sRandomName = sTitle + " " + ms_RandomFirstName(oNPC) + " " + ms_RandomLastName(oNPC)+ " " + sPostfix; break;
|
|
default: sRandomName = sTitle + " " + ms_RandomFirstName(oNPC) + " " + sPostfix; break;
|
|
}
|
|
}
|
|
|
|
if (bClassTitle)
|
|
{
|
|
sRandomName = sBaseRace +" "+ sTitle;
|
|
}
|
|
|
|
SetName(oNPC, (sRandomName));
|
|
return;
|
|
}
|
|
}
|
|
|
|
string ms_RandomFirstName(object oNPC = OBJECT_SELF)
|
|
{
|
|
int Gender = GetGender(oNPC);
|
|
int Race = MyPRCGetRacialType(oNPC);
|
|
|
|
string Name;
|
|
|
|
switch (Race)
|
|
{
|
|
case RACIAL_TYPE_ANIMAL: Name = RandomName(0); break;
|
|
case RACIAL_TYPE_DWARF:
|
|
switch (Gender)
|
|
{ default: Name = RandomName(2); break;
|
|
case GENDER_FEMALE: Name = RandomName(3); break; } break;
|
|
case RACIAL_TYPE_ELF:
|
|
switch (Gender)
|
|
{ default: Name = RandomName(5); break;
|
|
case GENDER_FEMALE: Name = RandomName(6); break; } break;
|
|
case RACIAL_TYPE_GNOME:
|
|
switch (Gender)
|
|
{ default: Name = RandomName(8); break;
|
|
case GENDER_FEMALE: Name = RandomName(9); break; } break;
|
|
case RACIAL_TYPE_HALFELF:
|
|
switch (Gender)
|
|
{ default: Name = RandomName(11); break;
|
|
case GENDER_FEMALE: Name = RandomName(12); break; } break;
|
|
case RACIAL_TYPE_HALFLING:
|
|
switch (Gender)
|
|
{ default: Name = RandomName(14); break;
|
|
case GENDER_FEMALE: Name = RandomName(15); break; } break;
|
|
case RACIAL_TYPE_HALFORC:
|
|
switch (Gender)
|
|
{ default: Name = RandomName(17); break;
|
|
case GENDER_FEMALE: Name = RandomName(18); break; } break;
|
|
case RACIAL_TYPE_HUMAN:
|
|
switch (Gender)
|
|
{ default: Name = RandomName(20); break;
|
|
case GENDER_FEMALE: Name = RandomName(21); break; } break;
|
|
default:
|
|
switch (Gender)
|
|
{ default: Name = RandomName(-1); break;
|
|
case GENDER_FEMALE: Name = RandomName(0); break; } break;
|
|
}
|
|
|
|
return Name;
|
|
}
|
|
|
|
string ms_RandomLastName(object oNPC = OBJECT_SELF)
|
|
{
|
|
int Race = MyPRCGetRacialType(oNPC);
|
|
|
|
string Name;
|
|
|
|
switch (Race)
|
|
{
|
|
case RACIAL_TYPE_DWARF: Name = RandomName(4); break;
|
|
case RACIAL_TYPE_ELF: Name = RandomName(7); break;
|
|
case RACIAL_TYPE_GNOME: Name = RandomName(10); break;
|
|
case RACIAL_TYPE_HALFELF: Name = RandomName(13); break;
|
|
case RACIAL_TYPE_HALFLING: Name = RandomName(16); break;
|
|
case RACIAL_TYPE_HALFORC: Name = RandomName(19); break;
|
|
case RACIAL_TYPE_HUMAN: Name = RandomName(22); break;
|
|
default: Name = RandomName(1); break;
|
|
}
|
|
|
|
return Name;
|
|
}
|
|
|
|
// Function to get the class-based level title based on the class type
|
|
string GetClassLevelTitle(int nClassType)
|
|
{
|
|
object oCreature = OBJECT_SELF; // Assuming this function is called on a creature object
|
|
|
|
int nLevel = GetLevelByClass(nClassType, oCreature);
|
|
int nGender = GetGender(oCreature);
|
|
|
|
string sTitle;
|
|
|
|
switch (nClassType)
|
|
{
|
|
case CLASS_TYPE_BARBARIAN:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Brute" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Vandal"; break;
|
|
|
|
case 6:
|
|
if (nGender == 1)
|
|
{sTitle = "Plunderess"; break;}
|
|
else
|
|
{sTitle = "Plunderer"; break;}
|
|
|
|
case 7:
|
|
sTitle = "Pillager"; break;
|
|
|
|
case 8:
|
|
sTitle = "Marauder"; break;
|
|
|
|
case 9:
|
|
sTitle = "Reaver"; break;
|
|
|
|
case 10:
|
|
sTitle = "Barbarian"; break;
|
|
|
|
case 11:
|
|
sTitle = "Mauler"; break;
|
|
|
|
case 12:
|
|
sTitle = "Ravager"; break;
|
|
|
|
case 13:
|
|
sTitle = "Slaughterer"; break;
|
|
|
|
case 14:
|
|
sTitle = "Destroyer"; break;
|
|
|
|
case 15:
|
|
if (nGender == 1)
|
|
{sTitle = "Chieftainess"; break;}
|
|
else
|
|
{sTitle = "Chieftain"; break;}
|
|
|
|
case 16:
|
|
sTitle = "Bloodletter"; break;
|
|
|
|
case 17:
|
|
sTitle = "Rampager"; break;
|
|
|
|
case 18:
|
|
sTitle = "Slayer"; break;
|
|
|
|
case 19:
|
|
sTitle = "Warmonger"; break;
|
|
|
|
case 20:
|
|
if (nGender == 1)
|
|
{sTitle = "High Chieftainess"; break;}
|
|
else
|
|
{sTitle = "High Chieftain"; break;}
|
|
|
|
default:
|
|
if (nGender == 1)
|
|
{sTitle = "Conqueress"; break;}
|
|
else
|
|
{sTitle = "Conqueror"; break;}
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_ROGUE:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Lookout" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Outlaw"; break;
|
|
|
|
case 6:
|
|
sTitle = "Scalawag"; break;
|
|
|
|
case 7:
|
|
sTitle = "Creeper"; break;
|
|
|
|
case 8:
|
|
sTitle = "Larker"; break;
|
|
|
|
case 9:
|
|
sTitle = "Footpad"; break;
|
|
|
|
case 10:
|
|
sTitle = "Rogue"; break;
|
|
|
|
case 11:
|
|
sTitle = "Cutpurse"; break;
|
|
|
|
case 12:
|
|
sTitle = "Thief"; break;
|
|
|
|
case 13:
|
|
sTitle = "Pilferer"; break;
|
|
|
|
case 14:
|
|
sTitle = "Robber"; break;
|
|
|
|
case 15:
|
|
sTitle = "Sharper"; break;
|
|
|
|
case 16:
|
|
sTitle = "Burglar"; break;
|
|
|
|
case 17:
|
|
sTitle = "Filcher"; break;
|
|
|
|
case 18:
|
|
sTitle = "Scoundrel"; break;
|
|
|
|
case 19:
|
|
sTitle = "Knave"; break;
|
|
|
|
case 20:
|
|
sTitle = "Prowler"; break;
|
|
|
|
default:
|
|
sTitle = "Master Rogue"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_BARD:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Crier" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
if (nGender == 1)
|
|
{sTitle = "Chantress"; break;}
|
|
else
|
|
{sTitle = "Chanter"; break;}
|
|
|
|
case 6:
|
|
sTitle = "Skop"; break;
|
|
|
|
case 7:
|
|
sTitle = "Accompanist"; break;
|
|
|
|
case 8:
|
|
sTitle = "Rhymer"; break;
|
|
|
|
case 9:
|
|
sTitle = "Singer"; break;
|
|
|
|
case 10:
|
|
sTitle = "Balladeer"; break;
|
|
|
|
case 11:
|
|
if (nGender == 1)
|
|
{sTitle = "Cantoress"; break;}
|
|
else
|
|
{sTitle = "Cantor"; break;}
|
|
|
|
case 12:
|
|
sTitle = "Lutenist"; break;
|
|
|
|
case 13:
|
|
sTitle = "Melodist"; break;
|
|
|
|
case 14:
|
|
sTitle = "Lyrist"; break;
|
|
|
|
case 15:
|
|
sTitle = "Jongleur"; break;
|
|
|
|
case 16:
|
|
sTitle = "Loreweaver"; break;
|
|
|
|
case 17:
|
|
sTitle = "Chronicler"; break;
|
|
|
|
case 18:
|
|
sTitle = "Muse"; break;
|
|
|
|
case 19:
|
|
if (nGender == 1)
|
|
{sTitle = "Rhapsode"; break;}
|
|
else
|
|
{sTitle = "Rhapsodist"; break;}
|
|
|
|
case 20:
|
|
sTitle = "Bard"; break;
|
|
|
|
case 21:
|
|
sTitle = "Raconteur"; break;
|
|
|
|
case 22:
|
|
sTitle = "Siren"; break;
|
|
|
|
case 23:
|
|
sTitle = "Songsmith"; break;
|
|
|
|
case 24:
|
|
sTitle = "Versifer"; break;
|
|
|
|
case 25:
|
|
sTitle = "Minstrel"; break;
|
|
|
|
case 26:
|
|
sTitle = "Sonneteer"; break;
|
|
|
|
case 27:
|
|
if (nGender == 1)
|
|
{sTitle = "Trobairitz"; break;}
|
|
else
|
|
{sTitle = "Troubadour"; break;}
|
|
|
|
case 28:
|
|
sTitle = "Citharist"; break;
|
|
|
|
case 29:
|
|
sTitle = "High Minstrel"; break;
|
|
|
|
default:
|
|
sTitle = "Master Bard"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_SORCERER:
|
|
case CLASS_TYPE_WIZARD:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Apprentice" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Adept"; break;
|
|
|
|
case 6:
|
|
sTitle = "Journeymage"; break;
|
|
|
|
case 7:
|
|
sTitle = "Hedge Mage"; break;
|
|
|
|
case 8:
|
|
sTitle = "Magician"; break;
|
|
|
|
case 9:
|
|
sTitle = "Prestidigitator"; break;
|
|
|
|
case 10:
|
|
sTitle = "Wizard"; break;
|
|
|
|
case 11:
|
|
sTitle = "Sage"; break;
|
|
|
|
case 12:
|
|
sTitle = "Visionary"; break;
|
|
|
|
case 13:
|
|
sTitle = "Loremaster"; break;
|
|
|
|
case 14:
|
|
sTitle = "Mage"; break;
|
|
|
|
case 15:
|
|
sTitle = "Fatespinner"; break;
|
|
|
|
case 16:
|
|
sTitle = "Cabalist"; break;
|
|
|
|
case 17:
|
|
sTitle = "Thaumaturge"; break;
|
|
|
|
case 18:
|
|
sTitle = "Theurgist"; break;
|
|
|
|
case 19:
|
|
sTitle = "Augur"; break;
|
|
|
|
case 20:
|
|
sTitle = "Spellbinder"; break;
|
|
|
|
default:
|
|
sTitle = "Archmage"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_CLERIC:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Candidate" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Aspirant"; break;
|
|
|
|
case 6:
|
|
sTitle = "Novice"; break;
|
|
|
|
case 7:
|
|
sTitle = "Acolyte"; break;
|
|
|
|
case 8:
|
|
sTitle = "Initiate"; break;
|
|
|
|
case 9:
|
|
if (nGender == 1)
|
|
{sTitle = "Priestess"; break;}
|
|
else
|
|
{sTitle = "Priest"; break;}
|
|
|
|
case 10:
|
|
sTitle = "Cleric"; break;
|
|
|
|
case 11:
|
|
sTitle = "Curate"; break;
|
|
|
|
case 12:
|
|
sTitle = "Apostle"; break;
|
|
|
|
case 13:
|
|
sTitle = "Ovate"; break;
|
|
|
|
case 14:
|
|
sTitle = "Missionary"; break;
|
|
|
|
case 15:
|
|
if (nGender == 1)
|
|
{sTitle = "Canoness"; break;}
|
|
else
|
|
{sTitle = "Canon"; break;}
|
|
|
|
case 16:
|
|
if (nGender == 1)
|
|
{sTitle = "Abbotess"; break;}
|
|
else
|
|
{sTitle = "Abbot"; break;}
|
|
|
|
case 17:
|
|
sTitle = "Bishop"; break;
|
|
|
|
case 18:
|
|
if (nGender == 1)
|
|
{sTitle = "Matriarch"; break;}
|
|
else
|
|
{sTitle = "Patriarch"; break;}
|
|
|
|
case 19:
|
|
sTitle = "Preacher"; break;
|
|
|
|
default:
|
|
if (nGender == 1)
|
|
{sTitle = "High Priestess"; break;}
|
|
else
|
|
{sTitle = "High Priest"; break;}
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_DRUID:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Initiate" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Devotee"; break;
|
|
|
|
case 6:
|
|
sTitle = "Beastling"; break;
|
|
|
|
case 7:
|
|
sTitle = "Grovelurker"; break;
|
|
|
|
case 8:
|
|
sTitle = "Shaper"; break;
|
|
|
|
case 9:
|
|
sTitle = "Springwalker"; break;
|
|
|
|
case 10:
|
|
sTitle = "Druid"; break;
|
|
|
|
case 11:
|
|
sTitle = "Naturekin"; break;
|
|
|
|
case 12:
|
|
sTitle = "Treewarden"; break;
|
|
|
|
case 13:
|
|
sTitle = "Auspex"; break;
|
|
|
|
case 14:
|
|
sTitle = "Haruspex"; break;
|
|
|
|
case 15:
|
|
sTitle = "Student of Stones"; break;
|
|
|
|
case 16:
|
|
sTitle = "Student of Waters"; break;
|
|
|
|
case 17:
|
|
sTitle = "Student of Forests"; break;
|
|
|
|
case 18:
|
|
sTitle = "Student of Winds"; break;
|
|
|
|
case 19:
|
|
sTitle = "Student of Changes"; break;
|
|
|
|
case 20:
|
|
sTitle = "Pathwarden"; break;
|
|
|
|
default:
|
|
sTitle = "Archdruid"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_FIGHTER:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Guard";
|
|
break;
|
|
|
|
case 4:
|
|
sTitle = "Elite Guard"; break;
|
|
|
|
case 5: case 6:
|
|
sTitle = "Warrior"; break;
|
|
|
|
case 7:
|
|
sTitle = "Elite Warrior"; break;
|
|
|
|
case 8:
|
|
sTitle = "Soldier"; break;
|
|
|
|
case 9:
|
|
sTitle = "Enforcer"; break;
|
|
|
|
case 10:
|
|
sTitle = "Fighter"; break;
|
|
|
|
case 11:
|
|
sTitle = "Skirmisher"; break;
|
|
|
|
case 12:
|
|
sTitle = "Veteran"; break;
|
|
|
|
case 13:
|
|
sTitle = "Armiger"; break;
|
|
|
|
case 14:
|
|
sTitle = "Myrmidon"; break;
|
|
|
|
case 15:
|
|
sTitle = "Hero"; break;
|
|
|
|
case 16:
|
|
sTitle = "Vanguard"; break;
|
|
|
|
case 17:
|
|
sTitle = "Sentinel"; break;
|
|
|
|
case 18:
|
|
sTitle = "Dominator"; break;
|
|
|
|
case 19:
|
|
sTitle = "Warmonger"; break;
|
|
|
|
case 20:
|
|
sTitle = "Champion"; break;
|
|
|
|
default:
|
|
sTitle = "Grandmaster"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_MONK:
|
|
switch(nLevel)
|
|
{
|
|
case 1:
|
|
sTitle = "Trainee"; break;
|
|
|
|
case 2:
|
|
sTitle = "Initiate"; break;
|
|
|
|
case 3:
|
|
sTitle = "Novice"; break;
|
|
|
|
case 4:
|
|
sTitle = "Neophyte"; break;
|
|
|
|
case 5:
|
|
sTitle = "Aspirant"; break;
|
|
|
|
case 6:
|
|
sTitle = "Acolyte"; break;
|
|
|
|
case 7:
|
|
sTitle = "Devotee"; break;
|
|
|
|
case 8:
|
|
sTitle = "Disciple"; break;
|
|
|
|
case 9:
|
|
sTitle = "Adept"; break;
|
|
|
|
case 10:
|
|
sTitle = "Ascetic"; break;
|
|
|
|
case 11:
|
|
sTitle = "Pilgrim"; break;
|
|
|
|
case 12:
|
|
sTitle = "Master"; break;
|
|
|
|
case 13:
|
|
sTitle = "Anchorite"; break;
|
|
|
|
case 14:
|
|
sTitle = "Mystic"; break;
|
|
|
|
case 15:
|
|
sTitle = "Meditator"; break;
|
|
|
|
case 16:
|
|
sTitle = "Seeker"; break;
|
|
|
|
case 17:
|
|
sTitle = "Guru"; break;
|
|
|
|
case 18:
|
|
sTitle = "Sensei"; break;
|
|
|
|
case 19:
|
|
sTitle = "Sannyasi"; break;
|
|
|
|
case 20:
|
|
sTitle = "Exemplar"; break;
|
|
|
|
case 21:
|
|
sTitle = "Transcendent"; break;
|
|
|
|
default:
|
|
sTitle = "High Master"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_PALADIN:
|
|
switch(nLevel)
|
|
{
|
|
case 1:
|
|
sTitle = "Advocate"; break;
|
|
|
|
case 2:
|
|
sTitle = "Initiate"; break;
|
|
|
|
case 3:
|
|
sTitle = "Squire"; break;
|
|
|
|
case 4:
|
|
sTitle = "Gallant"; break;
|
|
|
|
case 5:
|
|
sTitle = "Emissary"; break;
|
|
|
|
case 6:
|
|
sTitle = "Guardian"; break;
|
|
|
|
case 7:
|
|
sTitle = "Devotee"; break;
|
|
|
|
case 8:
|
|
sTitle = "Disciple"; break;
|
|
|
|
case 9:
|
|
sTitle = "Adept"; break;
|
|
|
|
case 10:
|
|
sTitle = "Ascetic"; break;
|
|
|
|
case 11:
|
|
sTitle = "Pilgrim"; break;
|
|
|
|
case 12:
|
|
sTitle = "Master"; break;
|
|
|
|
case 13:
|
|
sTitle = "Anchorite"; break;
|
|
|
|
case 14:
|
|
sTitle = "Mystic"; break;
|
|
|
|
case 15:
|
|
sTitle = "Meditator"; break;
|
|
|
|
case 16:
|
|
sTitle = "Seeker"; break;
|
|
|
|
case 17:
|
|
sTitle = "Guru"; break;
|
|
|
|
case 18:
|
|
sTitle = "Sensei"; break;
|
|
|
|
case 19:
|
|
sTitle = "Sannyasi"; break;
|
|
|
|
case 20:
|
|
sTitle = "Exemplar"; break;
|
|
|
|
case 21:
|
|
sTitle = "Transcendent"; break;
|
|
|
|
default:
|
|
sTitle = "High Master"; break;
|
|
|
|
}
|
|
|
|
case CLASS_TYPE_RANGER:
|
|
switch(nLevel)
|
|
{
|
|
case 1: case 2: case 3:
|
|
sTitle = "Greenhorn" ;
|
|
break;
|
|
|
|
case 4: case 5:
|
|
sTitle = "Tenderfoot"; break;
|
|
|
|
case 6:
|
|
sTitle = "Vagrant"; break;
|
|
|
|
case 7:
|
|
sTitle = "Tramp"; break;
|
|
|
|
case 8:
|
|
sTitle = "Nomad"; break;
|
|
|
|
case 9:
|
|
sTitle = "Wanderer"; break;
|
|
|
|
case 10:
|
|
sTitle = "Ranger"; break;
|
|
|
|
case 11:
|
|
sTitle = "Rambler"; break;
|
|
|
|
case 12:
|
|
sTitle = "Traveler"; break;
|
|
|
|
case 13:
|
|
sTitle = "Sojourner"; break;
|
|
|
|
case 14:
|
|
sTitle = "Outrider"; break;
|
|
|
|
case 15:
|
|
sTitle = "Wayfarer"; break;
|
|
|
|
case 16:
|
|
sTitle = "Excursionist"; break;
|
|
|
|
case 17:
|
|
sTitle = "Trekker"; break;
|
|
|
|
case 18:
|
|
sTitle = "Trailblazer"; break;
|
|
|
|
case 19:
|
|
sTitle = "Woodsman"; break;
|
|
|
|
case 20:
|
|
sTitle = "High Ranger"; break;
|
|
|
|
case 21:
|
|
sTitle = "Ranger"; break;
|
|
|
|
case 22:
|
|
sTitle = "Rambler"; break;
|
|
|
|
case 23:
|
|
sTitle = "Traveler"; break;
|
|
|
|
case 24:
|
|
sTitle = "Sojourner"; break;
|
|
|
|
case 25:
|
|
sTitle = "Outrider"; break;
|
|
|
|
case 26:
|
|
sTitle = "Wayfarer"; break;
|
|
|
|
case 27:
|
|
sTitle = "Excursionist"; break;
|
|
|
|
case 28:
|
|
sTitle = "Trekker"; break;
|
|
|
|
case 29:
|
|
sTitle = "Trailblazer"; break;
|
|
|
|
default:
|
|
sTitle = "Ranger Lord"; break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return sTitle;
|
|
}
|
|
|
|
//:: Function to get the highest class level of an object, excluding racialtype classes
|
|
int GetHighestClassLevel(object oCreature)
|
|
{
|
|
int nHighestLevel = -1;
|
|
int nClassTypes = 254; // Maximum number of class types
|
|
int i;
|
|
|
|
for (i = 0; i <= nClassTypes; i++)
|
|
{
|
|
// Check if the class type is excluded
|
|
if (i == CLASS_TYPE_ABERRATION ||
|
|
i == CLASS_TYPE_ANIMAL ||
|
|
i == CLASS_TYPE_BEAST ||
|
|
i == CLASS_TYPE_CONSTRUCT ||
|
|
i == CLASS_TYPE_DRAGON ||
|
|
i == CLASS_TYPE_ELEMENTAL ||
|
|
i == CLASS_TYPE_FEY ||
|
|
i == CLASS_TYPE_GIANT ||
|
|
i == CLASS_TYPE_HUMANOID ||
|
|
i == CLASS_TYPE_MAGICAL_BEAST ||
|
|
i == CLASS_TYPE_MONSTROUS ||
|
|
i == CLASS_TYPE_OOZE ||
|
|
i == CLASS_TYPE_OUTSIDER ||
|
|
i == CLASS_TYPE_PLANT ||
|
|
i == CLASS_TYPE_SHAPECHANGER ||
|
|
i == CLASS_TYPE_UNDEAD ||
|
|
i == CLASS_TYPE_VERMIN)
|
|
continue;
|
|
|
|
int nLevel = GetLevelByClass(i, oCreature);
|
|
if (nLevel > 0)
|
|
{
|
|
if (nLevel > nHighestLevel)
|
|
{
|
|
nHighestLevel = nLevel;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
break; // Reached an invalid class level, exit the loop
|
|
}
|
|
}
|
|
|
|
return nHighestLevel;
|
|
}
|
|
|
|
//::void main (){}
|