int fnLevel(object oPC) { int nRet=GetLevelByPosition(1,oPC); nRet=nRet+GetLevelByPosition(2,oPC); nRet=nRet+GetLevelByPosition(3,oPC); return nRet; } // fnLevel() int fnLowestLevel() { int nRet=41; object oPC=GetFirstPC(); while(oPC!=OBJECT_INVALID) { if (GetLocalString(oPC,"sTeamID")!=""&&fnLevel(oPC)<nRet&&GetIsDM(oPC)==FALSE&&oPC!=GetPCSpeaker()) nRet=fnLevel(oPC); oPC=GetNextPC(); } return nRet; } // fnLowestLevel() int fnXP(int nLevel) { int nRet=0; switch (nLevel) { case 1: { nRet=0; break; } case 2: { nRet=1000; break; } case 3: { nRet=3000; break; } case 4: { nRet=6000; break; } case 5: { nRet=10000; break; } case 6: { nRet=15000; break; } case 7: { nRet=21000; break; } case 8: { nRet=28000; break; } case 9: { nRet=36000; break; } case 10: { nRet=45000; break; } case 11: { nRet=55000; break; } case 12: { nRet=66000; break; } case 13: { nRet=78000; break; } case 14: { nRet=91000; break; } case 15: { nRet=105000; break; } case 16: { nRet=120000; break; } case 17: { nRet=136000; break; } case 18: { nRet=153000; break; } case 19: { nRet=171000; break; } case 20: { nRet=190000; break; } default: break; } return nRet; } // level up to 1 less than lowest level void main() { object oPC=GetPCSpeaker(); int nLevel=fnLowestLevel()-1; if (nLevel<1) nLevel=1; if (nLevel>20) nLevel=20; SetXP(oPC,fnXP(nLevel)); }