2025/09/07 Update
Added Amulet of Mighty Fists +1 thru +5. Added Greenbound template. Fixed Evolved & Paragon templates. Updated several area names.
This commit is contained in:
@@ -64,9 +64,11 @@
|
||||
|
||||
///// FUNCTION DECLARATIONS ////////////////////////////////////////////////////
|
||||
|
||||
string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF);
|
||||
//:: Function to get the class type with the highest level
|
||||
int GetHighestClassType(object oCreature);
|
||||
|
||||
int GetHighestClassLevel(object oCreature = OBJECT_SELF);
|
||||
//:: Returns class level based NPC titles
|
||||
string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF);
|
||||
|
||||
// Generates a Random First Name
|
||||
// based on Race and Gender
|
||||
@@ -103,7 +105,10 @@ void ms_Nomenclature(object oNPC = OBJECT_SELF)
|
||||
//:: Handles class level based NPC titles
|
||||
if (bClassTitle)
|
||||
{
|
||||
sClassTitle = GetClassLevelTitle(GetHighestClassLevel(oNPC), oNPC);
|
||||
int nClassType = GetHighestClassType(oNPC);
|
||||
sClassTitle = GetClassLevelTitle(nClassType, oNPC);
|
||||
|
||||
FloatingTextStringOnCreature("Title: " + sClassTitle, oNPC);
|
||||
}
|
||||
|
||||
//:: Handles class based Henchman titles
|
||||
@@ -972,7 +977,7 @@ void ms_Nomenclature(object oNPC = OBJECT_SELF)
|
||||
|
||||
if (bClassTitle)
|
||||
{
|
||||
sRandomName = sBaseRace +" "+ sTitle;
|
||||
sRandomName = sBaseRace +" "+ sClassTitle;
|
||||
}
|
||||
|
||||
SetName(oNPC, (sRandomName));
|
||||
@@ -1048,34 +1053,38 @@ string ms_RandomLastName(object oNPC = OBJECT_SELF)
|
||||
return Name;
|
||||
}
|
||||
|
||||
//:: Function to get the highest class level of an object, excluding racialtype classes
|
||||
int GetHighestClassLevel(object oCreature)
|
||||
//:: Function to get the class type with the highest level
|
||||
int GetHighestClassType(object oCreature)
|
||||
{
|
||||
int nHighestLevel = -1;
|
||||
int nClassTypes = 254; // Maximum number of class types
|
||||
int i;
|
||||
int nHighestClass = -1;
|
||||
int nClassTypes = 254; // maximum
|
||||
|
||||
for (i = 0; i <= nClassTypes; i++)
|
||||
int i = 0;
|
||||
while (i <= nClassTypes)
|
||||
{
|
||||
// Check if the class type is excluded
|
||||
// Exclude racial/monster pseudo-classes
|
||||
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)
|
||||
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)
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
int nLevel = GetLevelByClass(i, oCreature);
|
||||
if (nLevel > 0)
|
||||
@@ -1083,27 +1092,29 @@ int GetHighestClassLevel(object oCreature)
|
||||
if (nLevel > nHighestLevel)
|
||||
{
|
||||
nHighestLevel = nLevel;
|
||||
nHighestClass = i;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break; // Reached an invalid class level, exit the loop
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
return nHighestLevel;
|
||||
if (nHighestClass != -1)
|
||||
{
|
||||
FloatingTextStringOnCreature("Highest Level class is " + IntToString(nHighestClass) +
|
||||
" at level " + IntToString(nHighestLevel) + ".", oCreature);
|
||||
}
|
||||
|
||||
return nHighestClass;
|
||||
}
|
||||
|
||||
|
||||
//:: Handles class level based NPC titles
|
||||
//:: Returns class level based NPC titles
|
||||
string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
{
|
||||
string sTitle;
|
||||
int nHighClass = GetHighestClassLevel(oNPC);
|
||||
int nLevel = GetLevelByClass(nHighClass, oNPC);
|
||||
int nGender = GetGender(oNPC);
|
||||
|
||||
switch (nHighClass)
|
||||
string sTitle;
|
||||
int nLevel = GetLevelByClass(nClassType, oNPC);
|
||||
int nGender = GetGender(oNPC);
|
||||
|
||||
switch (nClassType)
|
||||
{
|
||||
case CLASS_TYPE_BARBARIAN:
|
||||
switch(nLevel)
|
||||
@@ -1174,8 +1185,8 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
{sTitle = "Conqueress"; break;}
|
||||
else
|
||||
{sTitle = "Conqueror"; break;}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case CLASS_TYPE_ROGUE:
|
||||
switch(nLevel)
|
||||
@@ -1236,6 +1247,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
sTitle = "Master Rogue"; break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case CLASS_TYPE_BARD:
|
||||
switch(nLevel)
|
||||
@@ -1335,6 +1347,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
sTitle = "Master Bard"; break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case CLASS_TYPE_SORCERER:
|
||||
case CLASS_TYPE_WIZARD:
|
||||
@@ -1396,6 +1409,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
sTitle = "Archmage"; break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case CLASS_TYPE_CLERIC:
|
||||
switch(nLevel)
|
||||
@@ -1468,6 +1482,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
{sTitle = "High Priest"; break;}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case CLASS_TYPE_DRUID:
|
||||
switch(nLevel)
|
||||
@@ -1528,6 +1543,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
sTitle = "Archdruid"; break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case CLASS_TYPE_FIGHTER:
|
||||
switch(nLevel)
|
||||
@@ -1588,6 +1604,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
sTitle = "Grandmaster"; break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case CLASS_TYPE_MONK:
|
||||
switch(nLevel)
|
||||
@@ -1659,6 +1676,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
sTitle = "High Master"; break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case CLASS_TYPE_PALADIN:
|
||||
switch(nLevel)
|
||||
@@ -1730,7 +1748,8 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
sTitle = "High Master"; break;
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case CLASS_TYPE_RANGER:
|
||||
switch(nLevel)
|
||||
{
|
||||
@@ -1817,7 +1836,7 @@ string GetClassLevelTitle(int nClassType, object oNPC = OBJECT_SELF)
|
||||
sTitle = "Ranger Lord"; break;
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return sTitle;
|
||||
|
Reference in New Issue
Block a user