Added Corrected Char Sheet XP script by -=HA=-

Added Corrected Char Sheet XP script by -=HA=-.  Updated a few NPC onDeath scripts to use point at the correct XP scripts.  Full compile.  Updated release archive.
This commit is contained in:
Jaysyn904 2024-10-21 15:19:44 -04:00
parent 3e6f2fee03
commit 6685b7ca0d
31 changed files with 395 additions and 318 deletions

View File

@ -861,7 +861,7 @@
},
"Tile_ID": {
"type": "int",
"value": 166
"value": 5
},
"Tile_MainLight1": {
"type": "byte",
@ -873,15 +873,15 @@
},
"Tile_Orientation": {
"type": "int",
"value": 3
"value": 2
},
"Tile_SrcLight1": {
"type": "byte",
"value": 3
"value": 2
},
"Tile_SrcLight2": {
"type": "byte",
"value": 3
"value": 2
}
},
{
@ -2194,7 +2194,7 @@
},
"Tile_ID": {
"type": "int",
"value": 38
"value": 118
},
"Tile_MainLight1": {
"type": "byte",
@ -2237,7 +2237,7 @@
},
"Tile_ID": {
"type": "int",
"value": 154
"value": 39
},
"Tile_MainLight1": {
"type": "byte",
@ -2245,7 +2245,7 @@
},
"Tile_MainLight2": {
"type": "byte",
"value": 0
"value": 1
},
"Tile_Orientation": {
"type": "int",
@ -2296,11 +2296,11 @@
},
"Tile_SrcLight1": {
"type": "byte",
"value": 2
"value": 3
},
"Tile_SrcLight2": {
"type": "byte",
"value": 2
"value": 3
}
},
{
@ -3629,11 +3629,11 @@
},
"Tile_SrcLight1": {
"type": "byte",
"value": 3
"value": 2
},
"Tile_SrcLight2": {
"type": "byte",
"value": 3
"value": 2
}
},
{
@ -44197,7 +44197,7 @@
},
"Version": {
"type": "dword",
"value": 32
"value": 34
},
"Width": {
"type": "int",

View File

@ -31592,7 +31592,7 @@
},
"XPosition": {
"type": "float",
"value": 165.8017883300781
"value": 165.0381317138672
},
"YOrientation": {
"type": "float",
@ -31600,7 +31600,7 @@
},
"YPosition": {
"type": "float",
"value": 13.92373180389404
"value": 14.20234966278076
},
"ZPosition": {
"type": "float",
@ -34406,7 +34406,7 @@
},
"XPosition": {
"type": "float",
"value": 164.9021759033203
"value": 164.8339538574219
},
"YOrientation": {
"type": "float",
@ -34414,11 +34414,11 @@
},
"YPosition": {
"type": "float",
"value": 19.68864059448242
"value": 20.38010215759277
},
"ZPosition": {
"type": "float",
"value": 0.2000000029802322
"value": 0.199998140335083
}
},
{

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -466,7 +466,7 @@ if(GetLocalInt(GetModule(), "COLORS_OK")==1)
//Turn their channel to talk..
SetPCChatVolume(TALKVOLUME_TALK);
//Tell the PC the DMs are not recieving messages..
SetPCChatMessage("The DM has turned off Party Chat temporarialy.");
SetPCChatMessage("The DM has turned off Party Chat temporarily.");
}
}
@ -480,7 +480,7 @@ if(GetLocalInt(GetModule(), "COLORS_OK")==1)
//Turn their channel to talk..
SetPCChatVolume(TALKVOLUME_TALK);
//Tell the PC the DMs are not recieving messages..
SetPCChatMessage("The DM has turned off DM tells temporarialy.");
SetPCChatMessage("The DM has turned off DM tells temporarily.");
}
}

View File

@ -29,22 +29,41 @@ location bTarget;
//Required Include For Color Messages(Read include to learn more)
#include "gen_inc_color"
#include "inc_utility"
#include "nwnx_player"
//Required Include for SimTools
//#include "fky_chat_inc"
void SetTlkOverrideForMaximumLevel(object oPC)
{
int nLevel = GetHitDice(oPC);
if (nLevel < 40)
{
NWNX_Player_SetTlkOverride(oPC, 315, "");
}
else
{
NWNX_Player_SetTlkOverride(oPC, 315, "Next Level: " + IntToString((nLevel + 1) * nLevel * 500) + "\n");
}
}
//Main Script
void main()
{
ExecuteScript("prc_onenter", OBJECT_SELF);
//Declare Major Variables..
object oPC;
oPC = GetEnteringObject();
object oTarget;
oTarget = oPC;
object oPlayer = oPC;
object oPP = oPC;
string sCDKey = GetPCPublicCDKey(oPC, FALSE);
//Declare Major Variables
object oPC;
oPC = GetEnteringObject();
object oTarget;
oTarget = oPC;
object oPlayer = oPC;
object oPP = oPC;
string sCDKey = GetPCPublicCDKey(oPC, FALSE);
SetTlkOverrideForMaximumLevel(GetEnteringObject());
//IMPORTANT, please set the Nap Time Below!
//If changed here you must open the script "kopcwand" and adjust it there!

View File

@ -9,10 +9,24 @@ Created On: 3/03/09
Intergrated SimTools to the OnPlayerLevelUp Event
----------------------------------------------------------*/
#include "nwnx_player"
//Required Include for SimTools
//#include "fky_chat_inc"
void SetTlkOverrideForMaximumLevel(object oPC)
{
int nLevel = GetHitDice(oPC);
if (nLevel < 40)
{
NWNX_Player_SetTlkOverride(oPC, 315, "");
}
else
{
NWNX_Player_SetTlkOverride(oPC, 315, "Next Level: " + IntToString((nLevel + 1) * nLevel * 500) + "\n");
}
}
void SendMessageToAllPC(string sMessage)
{
object oPC = GetFirstPC();
@ -25,11 +39,14 @@ void SendMessageToAllPC(string sMessage)
void main()
{
ExecuteScript("prc_levelup", OBJECT_SELF);
object oPC = GetPCLevellingUp();
int nHD = GetHitDice(oPC);
location lSaved = GetLocation(oPC);
int MULTI_PLAYER = GetLocalInt(GetModule(), "multi");
ExecuteScript("prc_levelup", OBJECT_SELF);
object oPC = GetPCLevellingUp();
int nHD = GetHitDice(oPC);
location lSaved = GetLocation(oPC);
int MULTI_PLAYER = GetLocalInt(GetModule(), "multi");
SetTlkOverrideForMaximumLevel(GetPCLevellingUp());
///////LOCATION SAVING OPTION////////
//Delete the /* above to activate

View File

@ -13,5 +13,4 @@ void main()
//ExecuteScript("sf_xp", OBJECT_SELF);
ExecuteScript("prc_npc_death", OBJECT_SELF);
ExecuteScript("prc_pwondeath", OBJECT_SELF);
}
}

View File

@ -1,5 +1,9 @@
#include "nwnx_player"
//Created By Guile 5/5/08
//:: NWNxEE / 60 lvl support by Jaysyn & HA
//IMPORTANT////////////////////////////////////////////////////////////////////
//This is an include not an actual script (It has prototype functions in it!)
//Function which you can use in any script!! Just.....
@ -37,156 +41,172 @@ Relevel(oPC);
//you should double check this yourself to verify it.
///////////////////////////////////////////////////////////////////////////////
void SetTlkOverrideForMaximumLevel(object oPC)
{
int nLevel = GetHitDice(oPC);
if (nLevel < 40)
{
NWNX_Player_SetTlkOverride(oPC, 315, "");
}
else
{
NWNX_Player_SetTlkOverride(oPC, 315, "Next Level: " + IntToString((nLevel + 1) * nLevel * 500) + "\n");
}
}
//This function Take1Level(oTarget); will take 1 level from the Target.
//It set's thier xp to the base required XP for the next lowest level.
//
void Take1Level(object oTarget)
{
int cLvl = GetHitDice(oTarget);
int nXP;
int cLvl = GetHitDice(oTarget);
int nXP;
switch (cLvl)
{
case 1: nXP = 0; break;
case 2: nXP = 0; break;
case 3: nXP = 1000; break;
case 4: nXP = 3000; break;
case 5: nXP = 6000; break;
case 6: nXP = 10000; break;
case 7: nXP = 15000; break;
case 8: nXP = 21000; break;
case 9: nXP = 28000; break;
case 10: nXP = 36000; break;
case 11: nXP = 45000; break;
case 12: nXP = 55000; break;
case 13: nXP = 66000; break;
case 14: nXP = 78000; break;
case 15: nXP = 91000; break;
case 16: nXP = 105000; break;
case 17: nXP = 120000; break;
case 18: nXP = 136000; break;
case 19: nXP = 153000; break;
case 20: nXP = 171000; break;
case 21: nXP = 190000; break;
case 22: nXP = 210000; break;
case 23: nXP = 231000; break;
case 24: nXP = 263000; break;
case 25: nXP = 276000; break;
case 26: nXP = 300000; break;
case 27: nXP = 325000; break;
case 28: nXP = 351000; break;
case 29: nXP = 378000; break;
case 30: nXP = 406000; break;
case 31: nXP = 435000; break;
case 32: nXP = 465000; break;
case 33: nXP = 496000; break;
case 34: nXP = 528000; break;
case 35: nXP = 561000; break;
case 36: nXP = 595000; break;
case 37: nXP = 630000; break;
case 38: nXP = 666000; break;
case 39: nXP = 703000; break;
case 40: nXP = 741000; break;
case 41: nXP = 780000; break;
case 42: nXP = 820000; break;
case 43: nXP = 861000; break;
case 44: nXP = 903000; break;
case 45: nXP = 946000; break;
case 46: nXP = 990000; break;
case 47: nXP = 1035000; break;
case 48: nXP = 1081000; break;
case 49: nXP = 1128000; break;
case 50: nXP = 1176000; break;
case 51: nXP = 1225000; break;
case 52: nXP = 1275000; break;
case 53: nXP = 1326000; break;
case 54: nXP = 1378000; break;
case 55: nXP = 1431000; break;
case 56: nXP = 1485000; break;
case 57: nXP = 1540000; break;
case 58: nXP = 1596000; break;
case 59: nXP = 1653000; break;
case 60: nXP = 1711000; break;
}
SetXP(oTarget, nXP);
switch (cLvl)
{
case 1: nXP = 0; break;
case 2: nXP = 0; break;
case 3: nXP = 1000; break;
case 4: nXP = 3000; break;
case 5: nXP = 6000; break;
case 6: nXP = 10000; break;
case 7: nXP = 15000; break;
case 8: nXP = 21000; break;
case 9: nXP = 28000; break;
case 10: nXP = 36000; break;
case 11: nXP = 45000; break;
case 12: nXP = 55000; break;
case 13: nXP = 66000; break;
case 14: nXP = 78000; break;
case 15: nXP = 91000; break;
case 16: nXP = 105000; break;
case 17: nXP = 120000; break;
case 18: nXP = 136000; break;
case 19: nXP = 153000; break;
case 20: nXP = 171000; break;
case 21: nXP = 190000; break;
case 22: nXP = 210000; break;
case 23: nXP = 231000; break;
case 24: nXP = 263000; break;
case 25: nXP = 276000; break;
case 26: nXP = 300000; break;
case 27: nXP = 325000; break;
case 28: nXP = 351000; break;
case 29: nXP = 378000; break;
case 30: nXP = 406000; break;
case 31: nXP = 435000; break;
case 32: nXP = 465000; break;
case 33: nXP = 496000; break;
case 34: nXP = 528000; break;
case 35: nXP = 561000; break;
case 36: nXP = 595000; break;
case 37: nXP = 630000; break;
case 38: nXP = 666000; break;
case 39: nXP = 703000; break;
case 40: nXP = 741000; break;
case 41: nXP = 780000; break;
case 42: nXP = 820000; break;
case 43: nXP = 861000; break;
case 44: nXP = 903000; break;
case 45: nXP = 946000; break;
case 46: nXP = 990000; break;
case 47: nXP = 1035000; break;
case 48: nXP = 1081000; break;
case 49: nXP = 1128000; break;
case 50: nXP = 1176000; break;
case 51: nXP = 1225000; break;
case 52: nXP = 1275000; break;
case 53: nXP = 1326000; break;
case 54: nXP = 1378000; break;
case 55: nXP = 1431000; break;
case 56: nXP = 1485000; break;
case 57: nXP = 1540000; break;
case 58: nXP = 1596000; break;
case 59: nXP = 1653000; break;
case 60: nXP = 1711000; break;
}
SetXP(oTarget, nXP);
SetTlkOverrideForMaximumLevel(oTarget);
}
//The Function Below Give1Level(oTarget); gives the Target one level.
//IMPORTANT: This function cannot be used with Take1Level(oTarget);
//or it will delevel the target!!!!
//I created this exlusively for the purose of my DM wand
//I created this exlusively for the purpose of my DM wand
//and other scripts which only give the PC one level as a reward.
void Give1Level(object oTarget)
{
int cLvl = GetHitDice(oTarget);
int nXP;
int cLvl = GetHitDice(oTarget);
int nXP;
switch (cLvl)
{
case 1: nXP = 1000; break;
case 2: nXP = 3000; break;
case 3: nXP = 6000; break;
case 4: nXP = 10000; break;
case 5: nXP = 15000; break;
case 6: nXP = 21000; break;
case 7: nXP = 28000; break;
case 8: nXP = 36000; break;
case 9: nXP = 45000; break;
case 10: nXP = 55000; break;
case 11: nXP = 66000; break;
case 12: nXP = 78000; break;
case 13: nXP = 91000; break;
case 14: nXP = 105000; break;
case 15: nXP = 120000; break;
case 16: nXP = 136000; break;
case 17: nXP = 153000; break;
case 18: nXP = 171000; break;
case 19: nXP = 190000; break;
case 20: nXP = 210000; break;
case 21: nXP = 231000; break;
case 22: nXP = 263000; break;
case 23: nXP = 276000; break;
case 24: nXP = 300000; break;
case 25: nXP = 325000; break;
case 26: nXP = 351000; break;
case 27: nXP = 378000; break;
case 28: nXP = 406000; break;
case 29: nXP = 435000; break;
case 30: nXP = 465000; break;
case 31: nXP = 496000; break;
case 32: nXP = 528000; break;
case 33: nXP = 561000; break;
case 34: nXP = 595000; break;
case 35: nXP = 630000; break;
case 36: nXP = 666000; break;
case 37: nXP = 703000; break;
case 38: nXP = 741000; break;
case 39: nXP = 780000; break;
case 40: nXP = 820000; break;
case 41: nXP = 861000; break;
case 42: nXP = 903000; break;
case 43: nXP = 946000; break;
case 44: nXP = 990000; break;
case 45: nXP = 1035000; break;
case 46: nXP = 1081000; break;
case 47: nXP = 1128000; break;
case 48: nXP = 1176000; break;
case 49: nXP = 1225000; break;
case 50: nXP = 1275000; break;
case 51: nXP = 1326000; break;
case 52: nXP = 1378000; break;
case 53: nXP = 1431000; break;
case 54: nXP = 1485000; break;
case 55: nXP = 1540000; break;
case 56: nXP = 1596000; break;
case 57: nXP = 1653000; break;
case 58: nXP = 1711000; break;
case 59: nXP = 1770000; break;
case 60: nXP = 1830000; break;
}
switch (cLvl)
{
case 1: nXP = 1000; break;
case 2: nXP = 3000; break;
case 3: nXP = 6000; break;
case 4: nXP = 10000; break;
case 5: nXP = 15000; break;
case 6: nXP = 21000; break;
case 7: nXP = 28000; break;
case 8: nXP = 36000; break;
case 9: nXP = 45000; break;
case 10: nXP = 55000; break;
case 11: nXP = 66000; break;
case 12: nXP = 78000; break;
case 13: nXP = 91000; break;
case 14: nXP = 105000; break;
case 15: nXP = 120000; break;
case 16: nXP = 136000; break;
case 17: nXP = 153000; break;
case 18: nXP = 171000; break;
case 19: nXP = 190000; break;
case 20: nXP = 210000; break;
case 21: nXP = 231000; break;
case 22: nXP = 263000; break;
case 23: nXP = 276000; break;
case 24: nXP = 300000; break;
case 25: nXP = 325000; break;
case 26: nXP = 351000; break;
case 27: nXP = 378000; break;
case 28: nXP = 406000; break;
case 29: nXP = 435000; break;
case 30: nXP = 465000; break;
case 31: nXP = 496000; break;
case 32: nXP = 528000; break;
case 33: nXP = 561000; break;
case 34: nXP = 595000; break;
case 35: nXP = 630000; break;
case 36: nXP = 666000; break;
case 37: nXP = 703000; break;
case 38: nXP = 741000; break;
case 39: nXP = 780000; break;
case 40: nXP = 820000; break;
case 41: nXP = 861000; break;
case 42: nXP = 903000; break;
case 43: nXP = 946000; break;
case 44: nXP = 990000; break;
case 45: nXP = 1035000; break;
case 46: nXP = 1081000; break;
case 47: nXP = 1128000; break;
case 48: nXP = 1176000; break;
case 49: nXP = 1225000; break;
case 50: nXP = 1275000; break;
case 51: nXP = 1326000; break;
case 52: nXP = 1378000; break;
case 53: nXP = 1431000; break;
case 54: nXP = 1485000; break;
case 55: nXP = 1540000; break;
case 56: nXP = 1596000; break;
case 57: nXP = 1653000; break;
case 58: nXP = 1711000; break;
case 59: nXP = 1770000; break;
case 60: nXP = 1830000; break;
}
SetXP(oTarget, nXP);
SetXP(oTarget, nXP);
}
@ -198,77 +218,83 @@ SetXP(oTarget, nXP);
//Example: Relevel(oPC); (That's all you need to relevel the PC!)
void Relevel(object oTarget)
{
int nLvl = GetHitDice(oTarget);
int nGold = nLvl * 50;
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
int nLvl = GetHitDice(oTarget);
int nGold = nLvl * 50;
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
if(GetGold(oTarget)>nGold)
{
TakeGoldFromCreature(nGold, oTarget, TRUE);
SetXP(oTarget, 0);
DelayCommand(1.0, GiveXPToCreature(oTarget, gXP));
if(GetGold(oTarget)>nGold)
{
TakeGoldFromCreature(nGold, oTarget, TRUE);
SetXP(oTarget, 0);
DelayCommand(1.0, GiveXPToCreature(oTarget, gXP));
DelayCommand(1.3, SetTlkOverrideForMaximumLevel(oTarget));
}
else
{
SendMessageToPC(oTarget, "You do not have enough gold to relevel!");
}
}
else
{
SendMessageToPC(oTarget, "You do not have enough gold to relevel!");
}
}
//The Function Relevel1(oTarget) will take 1 level from the Target and give
//back thier orginal XP. This script does not cause xp loss whatsoever.
void Relevel1(object oTarget)
{
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
Take1Level(oTarget);
DelayCommand(1.0, SetXP(oTarget, gXP));
}
//The Function Relevel3(oTarget) will take 3 levels from the Target and give
//back thier orginal XP. This script does not cause xp loss whatsoever.
void Relevel5(object oTarget)
{
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
DelayCommand(1.0, SetXP(oTarget, gXP));
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
Take1Level(oTarget);
DelayCommand(1.0, SetXP(oTarget, gXP));
DelayCommand(1.3, SetTlkOverrideForMaximumLevel(oTarget));
}
//The Function Relevel5(oTarget) will take 5 levels from the Target and give
//back thier orginal XP. This script does not cause xp loss whatsoever.
//back their orginal XP. This script does not cause xp loss whatsoever.
void Relevel5(object oTarget)
{
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
DelayCommand(1.0, SetXP(oTarget, gXP));
}
//The Function Relevel10(oTarget) will take 10 levels from the Target and give
//back their orginal XP. This script does not cause xp loss whatsoever.
void Relevel10(object oTarget)
{
int nGold = GetHitDice(oTarget) * 50;
if(GetGold(oTarget) >= nGold)
{
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
DelayCommand(1.0, SetXP(oTarget, gXP));
}
int nGold = GetHitDice(oTarget) * 50;
if(GetGold(oTarget) >= nGold)
{
int nCCXP;
nCCXP = GetXP(oTarget);
SetLocalInt(oTarget, "pc_exact_xp", nCCXP);
int gXP = GetLocalInt(oTarget, "pc_exact_xp");
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
Take1Level(oTarget);
DelayCommand(1.0, SetXP(oTarget, gXP));
}
}
//This function penalizes a the person repsawning it goes in the (see below)
@ -279,96 +305,96 @@ DelayCommand(1.0, SetXP(oTarget, gXP));
//Note This is a good script if your using Legendary Levels :)
void ApplyRespawnPenalty(object oPlayer)
{
int cLvl = GetHitDice(oPlayer);
int nXP;
//We need this switch to determine what xp they must keep..
switch (cLvl)
{
case 1: nXP = 0; break;
case 2: nXP = 1000; break;
case 3: nXP = 3000; break;
case 4: nXP = 6000; break;
case 5: nXP = 10000; break;
case 6: nXP = 15000; break;
case 7: nXP = 21000; break;
case 8: nXP = 28000; break;
case 9: nXP = 36000; break;
case 10: nXP = 45000; break;
case 11: nXP = 55000; break;
case 12: nXP = 66000; break;
case 13: nXP = 78000; break;
case 14: nXP = 91000; break;
case 15: nXP = 105000; break;
case 16: nXP = 120000; break;
case 17: nXP = 136000; break;
case 18: nXP = 153000; break;
case 19: nXP = 171000; break;
case 20: nXP = 190000; break;
case 21: nXP = 210000; break;
case 22: nXP = 231000; break;
case 23: nXP = 263000; break;
case 24: nXP = 276000; break;
case 25: nXP = 300000; break;
case 26: nXP = 325000; break;
case 27: nXP = 351000; break;
case 28: nXP = 378000; break;
case 29: nXP = 406000; break;
case 30: nXP = 435000; break;
case 31: nXP = 465000; break;
case 32: nXP = 496000; break;
case 33: nXP = 528000; break;
case 34: nXP = 561000; break;
case 35: nXP = 595000; break;
case 36: nXP = 630000; break;
case 37: nXP = 666000; break;
case 38: nXP = 703000; break;
case 39: nXP = 741000; break;
case 40: nXP = 780000; break;
case 41: nXP = 820000; break;
case 42: nXP = 861000; break;
case 43: nXP = 903000; break;
case 44: nXP = 946000; break;
case 45: nXP = 990000; break;
case 46: nXP = 1035000; break;
case 47: nXP = 1081000; break;
case 48: nXP = 1128000; break;
case 49: nXP = 1176000; break;
case 50: nXP = 1225000; break;
case 51: nXP = 1275000; break;
case 52: nXP = 1326000; break;
case 53: nXP = 1378000; break;
case 54: nXP = 1431000; break;
case 55: nXP = 1485000; break;
case 56: nXP = 1540000; break;
case 57: nXP = 1596000; break;
case 58: nXP = 1653000; break;
case 59: nXP = 1711000; break;
case 60: nXP = 1770000; break;
int cLvl = GetHitDice(oPlayer);
int nXP;
//We need this switch to determine what xp they must keep..
switch (cLvl)
{
case 1: nXP = 0; break;
case 2: nXP = 1000; break;
case 3: nXP = 3000; break;
case 4: nXP = 6000; break;
case 5: nXP = 10000; break;
case 6: nXP = 15000; break;
case 7: nXP = 21000; break;
case 8: nXP = 28000; break;
case 9: nXP = 36000; break;
case 10: nXP = 45000; break;
case 11: nXP = 55000; break;
case 12: nXP = 66000; break;
case 13: nXP = 78000; break;
case 14: nXP = 91000; break;
case 15: nXP = 105000; break;
case 16: nXP = 120000; break;
case 17: nXP = 136000; break;
case 18: nXP = 153000; break;
case 19: nXP = 171000; break;
case 20: nXP = 190000; break;
case 21: nXP = 210000; break;
case 22: nXP = 231000; break;
case 23: nXP = 263000; break;
case 24: nXP = 276000; break;
case 25: nXP = 300000; break;
case 26: nXP = 325000; break;
case 27: nXP = 351000; break;
case 28: nXP = 378000; break;
case 29: nXP = 406000; break;
case 30: nXP = 435000; break;
case 31: nXP = 465000; break;
case 32: nXP = 496000; break;
case 33: nXP = 528000; break;
case 34: nXP = 561000; break;
case 35: nXP = 595000; break;
case 36: nXP = 630000; break;
case 37: nXP = 666000; break;
case 38: nXP = 703000; break;
case 39: nXP = 741000; break;
case 40: nXP = 780000; break;
case 41: nXP = 820000; break;
case 42: nXP = 861000; break;
case 43: nXP = 903000; break;
case 44: nXP = 946000; break;
case 45: nXP = 990000; break;
case 46: nXP = 1035000; break;
case 47: nXP = 1081000; break;
case 48: nXP = 1128000; break;
case 49: nXP = 1176000; break;
case 50: nXP = 1225000; break;
case 51: nXP = 1275000; break;
case 52: nXP = 1326000; break;
case 53: nXP = 1378000; break;
case 54: nXP = 1431000; break;
case 55: nXP = 1485000; break;
case 56: nXP = 1540000; break;
case 57: nXP = 1596000; break;
case 58: nXP = 1653000; break;
case 59: nXP = 1711000; break;
case 60: nXP = 1770000; break;
}
int aXP = GetXP(oPlayer);
int bXP = aXP - nXP; //Subtract thier minimum XP needed for the level
int dXP = bXP + 100; //Give 100 XP to Prevent the divide by 0 error
int mXP = dXP / 100; //Break thier xp up into a percentile
int oXP = mXP * 80; //Returns thier 80% of their XP (-20%)
int pXP = oXP - 100; //This subtracts the 100 given earlier
int zXP = pXP + nXP; //The 20% Loss + Min XP For Their Current Level.
int nGold = GetGold(oPlayer);
int oGold = nGold / 100;
int pGold = oGold * 10; //(calculate 10%)
if(pXP >0)//Saftey in case they didn't have enough XP over level required
{
SetXP(oPlayer, zXP);
TakeGoldFromCreature(pGold, oPlayer, TRUE); //Take 10% of their gold.
}
else
{
SetXP(oPlayer, nXP); //Set them to the minimum required for level.
TakeGoldFromCreature(pGold, oPlayer, TRUE); //Take 10% of their gold.
}
}
int aXP = GetXP(oPlayer);
int bXP = aXP - nXP; //Subtract thier minimum XP needed for the level
int dXP = bXP + 100; //Give 100 XP to Prevent the divide by 0 error
int mXP = dXP / 100; //Break thier xp up into a percentile
int oXP = mXP * 80; //Returns thier 80% of their XP (-20%)
int pXP = oXP - 100; //This subtracts the 100 given earlier
int zXP = pXP + nXP; //The 20% Loss + Min XP For Their Current Level.
int nGold = GetGold(oPlayer);
int oGold = nGold / 100;
int pGold = oGold * 10; //(calculate 10%)
if(pXP >0)//Saftey in case they didn't have enough XP over level required
{
SetXP(oPlayer, zXP);
TakeGoldFromCreature(pGold, oPlayer, TRUE); //Take 10% of their gold.
}
else
{
SetXP(oPlayer, nXP); //Set them to the minimum required for level.
TakeGoldFromCreature(pGold, oPlayer, TRUE); //Take 10% of their gold.
}
}
//:: void main (){}

View File

@ -15,6 +15,20 @@ character.
*/
////////////////////////////////////
#include "nwnx_player"
void SetTlkOverrideForMaximumLevel(object oPC)
{
int nLevel = GetHitDice(oPC);
if (nLevel < 40)
{
NWNX_Player_SetTlkOverride(oPC, 315, "");
}
else
{
NWNX_Player_SetTlkOverride(oPC, 315, "Next Level: " + IntToString((nLevel + 1) * nLevel * 500) + "\n");
}
}
void main()
{
@ -51,6 +65,8 @@ int tXP = cXP + rXP; //rXP + pXP;
//Take all the player's XP
SetXP(oPC, 0);
SetTlkOverrideForMaximumLevel(oPC);
//Let's make sure the character is saved!!!!
DelayCommand(1.0, ExportSingleCharacter(oPC));
@ -74,7 +90,7 @@ else
//In case of errors..
else
{
FloatingTextStringOnCreature("Please notify a DM's there is an error" +
FloatingTextStringOnCreature("Please notify a DM that there is an error" +
" with the XP Bank.", oPC);
}
}

View File

@ -361,7 +361,7 @@ void GiveXP(object oKiller, int nXPToGive, float fKillerBonus, int nDiff, int nP
}
}
GiveXPToCreature(oParty, (nXPToGive + FloatToInt(fKillerBonus)));
//GiveXPToCreature(oParty, (nXPToGive + FloatToInt(fKillerBonus)));
}
//:: Reward other party members
else
@ -407,7 +407,7 @@ void GiveXP(object oKiller, int nXPToGive, float fKillerBonus, int nDiff, int nP
GiveGoldToCreature(oParty, FloatToInt((IntToFloat(nXPToGive) + fKillerBonus) * GP_REWARD_MULTIPLIER));
} */
GiveXPToCreature(oParty, nXPToGive);
//GiveXPToCreature(oParty, nXPToGive);
}
}
}