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:
Jaysyn904
2025-09-07 17:32:31 -04:00
parent 1771fadbad
commit 0b5b6912d2
54 changed files with 5367 additions and 176 deletions

View File

@@ -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;