70 lines
2.6 KiB
Plaintext
70 lines
2.6 KiB
Plaintext
#include "nc_inc_levelup"
|
|
|
|
void main()
|
|
{
|
|
object oLeveling = GetPCLevellingUp();
|
|
int nHD = GetHitDice(oLeveling);
|
|
if (nHD <= 3)
|
|
{
|
|
int nStr = GetAbilityScore(oLeveling, ABILITY_STRENGTH, TRUE);
|
|
int nDex = GetAbilityScore(oLeveling, ABILITY_DEXTERITY, TRUE);
|
|
int nCon = GetAbilityScore(oLeveling, ABILITY_CONSTITUTION, TRUE);
|
|
int nWis = GetAbilityScore(oLeveling, ABILITY_WISDOM, TRUE);
|
|
int nInt = GetAbilityScore(oLeveling, ABILITY_INTELLIGENCE, TRUE);
|
|
int nCha = GetAbilityScore(oLeveling, ABILITY_CHARISMA, TRUE);
|
|
|
|
if ((nStr <= 3) ||
|
|
(nDex <= 3) ||
|
|
(nCon <= 3) ||
|
|
(nWis <= 3) ||
|
|
(nInt <= 3) ||
|
|
(nCha <= 3))
|
|
{
|
|
FloatingTextStringOnCreature("Invalid PC Ability Scores: All ability scores must be 3 or higher.", oLeveling, TRUE);
|
|
DelayCommand(2.0f, FloatingTextStringOnCreature("You will have to delete this character & create another one with valid scores.", oLeveling, TRUE));
|
|
NC_RelevelPC(oLeveling);
|
|
}
|
|
}
|
|
|
|
int nClericLevel = GetLevelByClass(CLASS_TYPE_CLERIC, oLeveling);
|
|
|
|
if (NC_GetHasClass(CLASS_TYPE_CLERIC, oLeveling)==TRUE)
|
|
{
|
|
NC_SendMessage(oLeveling, NC_RESPONSE_FOUND_CLERIC);
|
|
NC_SendMessage(oLeveling, NC_RESPONSE_CHECK_CLERIC);
|
|
if (NC_GetIsTemplar(oLeveling))
|
|
{
|
|
if (NC_TemplarCheck(oLeveling)==TRUE)
|
|
{
|
|
NC_RelevelPC(oLeveling);
|
|
}
|
|
}
|
|
else if (!NC_CheckClericElementalDomains(oLeveling) || !NC_CheckClericBasicDomains(oLeveling))
|
|
{
|
|
NC_SendMessage(oLeveling,NC_RESPONSE_RELEVEL_DOMAIN);
|
|
NC_RelevelPC(oLeveling);
|
|
}
|
|
else if (NC_CheckClassRestrictions(oLeveling))
|
|
{
|
|
NC_RelevelPC(oLeveling);
|
|
}
|
|
if (nHD > 2)
|
|
{
|
|
int nMin = ((nHD * (nHD - 1)) / 2) * 1000;
|
|
SetXP(oLeveling, nMin);
|
|
}
|
|
NC_GiveClericSymbol(oLeveling);
|
|
}
|
|
|
|
else if (NC_CheckClassRestrictions(oLeveling))
|
|
{
|
|
NC_RelevelPC(oLeveling);
|
|
}
|
|
//Set total xp cap after 2nd level.
|
|
else if (nHD > 2)
|
|
{
|
|
int nMin = ((nHD * (nHD - 1)) / 2) * 1000;
|
|
SetXP(oLeveling, nMin);
|
|
}
|
|
}
|