//////////////////////////////////////////////////////////////////////////////// // // // 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 (){}