47 lines
1.4 KiB
Plaintext
47 lines
1.4 KiB
Plaintext
|
|
|
|
void main()
|
|
{
|
|
object oPC = GetPCLevellingUp(); //Get the PC
|
|
if (GetItemPossessedBy(oPC, "nordock_token")!=OBJECT_INVALID)return;
|
|
int nInt;
|
|
int nInt2;
|
|
|
|
if (!GetIsPC(oPC))
|
|
return; //Ignore NPCs
|
|
// Dissallow Dev Crit on all Weapon Focuses
|
|
|
|
int nExitLoop = 0;
|
|
if (GetHasFeat(955, oPC))
|
|
nExitLoop = 1; //Dwarven Waraxe
|
|
if (GetHasFeat(996, oPC))
|
|
nExitLoop = 1; //Whip
|
|
SetLocalInt(oPC, "henchlev", 0);
|
|
int nFeat = 495; //495 is the first dev. crit. feat
|
|
while ((!nExitLoop) && (nFeat<532)) //531 is the last dev. crit. feat, repeat for all dev. crits between 495 and 531
|
|
{
|
|
if (GetHasFeat(nFeat, oPC))
|
|
{
|
|
nExitLoop = 1;
|
|
}
|
|
else
|
|
{
|
|
nFeat++;
|
|
}
|
|
}
|
|
|
|
if (nExitLoop) //If a Dev. Crit. was chosen
|
|
{
|
|
string sString = "Devastating Critical is not a usable feat here";
|
|
AssignCommand(oPC,SpeakString(sString,TALKVOLUME_WHISPER)); //Send warning message
|
|
int nLevel = GetHitDice(oPC); //Get level
|
|
int nXP = GetXP(oPC); //Save XP so we can restore it afterwards
|
|
int nDelevelXP = (nLevel-1) * (nLevel - 2) * 500; //Work out how much XP will delevel the PC
|
|
SetXP(oPC, nDelevelXP); //Set that level
|
|
DelayCommand(3.5,GiveXPToCreature(oPC, nXP - nDelevelXP)); //Restore the XP so the player can relevel
|
|
}
|
|
|
|
|
|
}
|
|
|