53 lines
1.3 KiB
Plaintext
53 lines
1.3 KiB
Plaintext
//Script: cal_level_up
|
|
//Author: Albert Shih (Calidarien)
|
|
//Version: v1.0, 2002-06-21
|
|
//Usage: Calling this script from a conversation will set the speaker's
|
|
// experience and gold to the next level
|
|
//Notes: I used DMG values for the gold appropriate for each level.
|
|
//
|
|
//Convert experience to effective level
|
|
int XPtoLevel(int nXP) {
|
|
return FloatToInt((1+sqrt(1+4.*nXP/500))/2);
|
|
}
|
|
//
|
|
//Retrieve the DMG values of starting gold appropriate for a certain level
|
|
int Gold(int nLevel) {
|
|
switch (nLevel) {
|
|
case 1: return 100;
|
|
case 2: return 900;
|
|
case 3: return 2700;
|
|
case 4: return 5400;
|
|
case 5: return 9000;
|
|
case 6: return 13000;
|
|
case 7: return 19000;
|
|
case 8: return 27000;
|
|
case 9: return 36000;
|
|
case 10: return 49000;
|
|
case 11: return 66000;
|
|
case 12: return 49000;
|
|
case 13: return 110000;
|
|
case 14: return 150000;
|
|
case 15: return 200000;
|
|
case 16: return 260000;
|
|
case 17: return 340000;
|
|
case 18: return 440000;
|
|
case 19: return 580000;
|
|
case 20: return 760000;
|
|
}
|
|
return 0;
|
|
}
|
|
//
|
|
void main()
|
|
{
|
|
object player = GetPCSpeaker();
|
|
int nLevel = XPtoLevel(GetXP(player));
|
|
if (nLevel != 20) {
|
|
SetXP(player, nLevel*(nLevel+1)*500);
|
|
GiveGoldToCreature(player, Gold(nLevel+1)-Gold(nLevel));
|
|
} else {
|
|
GiveXPToCreature(player, 1);
|
|
GiveGoldToCreature(player, 1);
|
|
}
|
|
}
|
|
|