mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-27 22:49:25 +02:00
Changed experience needed for level formula to follow H3 one.
This commit is contained in:
@@ -380,37 +380,32 @@ void CHeroHandler::initHeroClasses()
|
|||||||
|
|
||||||
unsigned int CHeroHandler::level(unsigned int experience)
|
unsigned int CHeroHandler::level(unsigned int experience)
|
||||||
{
|
{
|
||||||
int add=0;
|
int i;
|
||||||
while(experience>=expPerLevel[expPerLevel.size()-1])
|
if(experience <= expPerLevel.back())
|
||||||
{
|
{
|
||||||
experience/=1.2;
|
for(i = expPerLevel.size()-1; experience < expPerLevel[i]; i--);
|
||||||
add+=1;
|
return i + 1;
|
||||||
}
|
}
|
||||||
for(int i=expPerLevel.size()-1; i>=0; --i)
|
else
|
||||||
{
|
{
|
||||||
if(experience>=expPerLevel[i])
|
for(i = expPerLevel.size(); experience > reqExp(i); i++);
|
||||||
return 1+i+add;
|
return i - 1;
|
||||||
}
|
}
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int CHeroHandler::reqExp(unsigned int level)
|
unsigned int CHeroHandler::reqExp(unsigned int level)
|
||||||
{
|
{
|
||||||
level-=1;
|
if(!level)
|
||||||
if(level<expPerLevel.size())
|
return 0;
|
||||||
return expPerLevel[level];
|
|
||||||
|
if(level<=expPerLevel.size())
|
||||||
|
{
|
||||||
|
return expPerLevel[level - 1];
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
unsigned int exp = expPerLevel[expPerLevel.size()-1];
|
return reqExp(level - 1) + (reqExp(level - 1) - reqExp(level - 2)) * 1.2; //inefficient but follows exactly H3 values
|
||||||
level-=(expPerLevel.size()-1);
|
|
||||||
while(level>0)
|
|
||||||
{
|
|
||||||
--level;
|
|
||||||
exp*=1.2;
|
|
||||||
}
|
|
||||||
return exp;
|
|
||||||
}
|
}
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHeroHandler::initTerrainCosts()
|
void CHeroHandler::initTerrainCosts()
|
||||||
|
|||||||
Reference in New Issue
Block a user