119 lines
1.9 KiB
C++
119 lines
1.9 KiB
C++
#include "stdafx.h"
|
|
#include "L2Experience.h"
|
|
|
|
double L2Experience::getExpPercent( long long exp )
|
|
{
|
|
double ret = 0.0;
|
|
#ifndef __GNUC__
|
|
const long long int exp_at_level[] =
|
|
#else
|
|
const double exp_at_level[] =
|
|
#endif
|
|
{
|
|
-1, // level 0 (unreachable)
|
|
0,
|
|
68,
|
|
363,
|
|
1168,
|
|
2884,
|
|
6038,
|
|
11287,
|
|
19423,
|
|
31378,
|
|
48229, //level 10
|
|
71201,
|
|
101676,
|
|
141192,
|
|
191452,
|
|
254327,
|
|
331864,
|
|
426284,
|
|
539995,
|
|
675590,
|
|
835854, //level 20
|
|
1023775,
|
|
1242536,
|
|
1495531,
|
|
1786365,
|
|
2118860,
|
|
2497059,
|
|
2925229,
|
|
3407873,
|
|
3949727,
|
|
4555766, //level 30
|
|
5231213,
|
|
5981539,
|
|
6812472,
|
|
7729999,
|
|
8740372,
|
|
9850111,
|
|
11066012,
|
|
12395149,
|
|
13844879,
|
|
15422851, //level 40
|
|
17137002,
|
|
18995573,
|
|
21007103,
|
|
23180442,
|
|
25524751,
|
|
28049509,
|
|
30764519,
|
|
33679907,
|
|
36806133,
|
|
40153995, //level 50
|
|
45524865,
|
|
51262204,
|
|
57383682,
|
|
63907585,
|
|
70852742,
|
|
80700339,
|
|
91162131,
|
|
102265326,
|
|
114038008,
|
|
126509030, //level 60
|
|
146307211,
|
|
167243291,
|
|
189363788,
|
|
212716741,
|
|
237351413,
|
|
271973532,
|
|
308441375,
|
|
346825235,
|
|
387197529,
|
|
429632402, //level 70
|
|
474205751,
|
|
532692055,
|
|
606319094,
|
|
696376867,
|
|
804219972,
|
|
931275828,
|
|
1151275834,
|
|
1511275834,
|
|
#ifdef __GNUC__
|
|
2099275834.0,
|
|
4200000000.0, //level 80
|
|
6300000000.0, //level 81
|
|
8820000000.0, //level 82
|
|
11844000000.0, //level 83
|
|
15472800000.0, //level 84
|
|
19827360000.0, //level 85
|
|
25314000000.0
|
|
#else
|
|
2099275834,
|
|
4200000000, //level 80
|
|
6300000000, //level 81
|
|
8820000000, //level 82
|
|
11844000000, //level 83
|
|
15472800000, //level 84
|
|
19827360000, //level 85
|
|
25314000000
|
|
#endif
|
|
};
|
|
int i = 0;
|
|
//int cur_level = 0;
|
|
for( i=0; i<86; i++ ) if( exp_at_level[i+1] > exp ) break;
|
|
//cur_level = i;
|
|
ret = 100.0 * (exp - exp_at_level[i]) / (exp_at_level[i+1] - exp_at_level[i]);
|
|
return ret;
|
|
}
|