1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-07 12:54:00 +00:00

Move some levelup logic from mwgui to mwmechanics

This commit is contained in:
Emanuel Guevel 2013-07-20 21:56:57 +02:00
parent 7837dcdc19
commit 2a0644a7c3
3 changed files with 18 additions and 13 deletions

View File

@ -173,12 +173,7 @@ namespace MWGui
attribute.setBase(100);
}
// "When you gain a level, in addition to increasing three primary attributes, your Health
// will automatically increase by 10% of your Endurance attribute. If you increased Endurance this level,
// the Health increase is calculated from the increased Endurance"
creatureStats.increaseLevelHealthBonus (creatureStats.getAttribute(ESM::Attribute::Endurance).getBase() * 0.1f);
creatureStats.setLevel (creatureStats.getLevel()+1);
creatureStats.levelUp();
pcStats.levelUp ();
MWBase::Environment::get().getWindowManager()->removeGuiMode (GM_Levelup);

View File

@ -18,16 +18,26 @@ namespace MWMechanics
mAiSettings[i] = 0;
}
void CreatureStats::increaseLevelHealthBonus (float value)
{
mLevelHealthBonus += value;
}
float CreatureStats::getLevelHealthBonus () const
{
return mLevelHealthBonus;
}
void CreatureStats::levelUp()
{
const MWWorld::Store<ESM::GameSetting> &gmst =
MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>();
const int endurance = getAttribute(ESM::Attribute::Endurance).getBase();
// "When you gain a level, in addition to increasing three primary attributes, your Health
// will automatically increase by 10% of your Endurance attribute. If you increased Endurance this level,
// the Health increase is calculated from the increased Endurance"
mLevelHealthBonus += endurance * gmst.find("fLevelUpHealthEndMult")->getFloat();
mLevel++;
}
const AiSequence& CreatureStats::getAiSequence() const
{
return mAiSequence;

View File

@ -95,10 +95,10 @@ namespace MWMechanics
float getFatigueTerm() const;
///< Return effective fatigue
// small hack to allow the fact that Health permanently increases by 10% of endurance on each level up
void increaseLevelHealthBonus(float value);
float getLevelHealthBonus() const;
void levelUp();
bool isDead() const;
bool hasDied() const;