mirror of
https://github.com/OpenMW/openmw.git
synced 2025-06-21 08:11:36 +00:00
Replace more instances of ESM::Skill::Length
This commit is contained in:
parent
47c1569961
commit
28025e84f7
2 changed files with 12 additions and 15 deletions
|
@ -111,20 +111,18 @@ namespace
|
||||||
{
|
{
|
||||||
float modifierSum = 0;
|
float modifierSum = 0;
|
||||||
|
|
||||||
for (int j = 0; j < ESM::Skill::Length; ++j)
|
for (const ESM::Skill& skill : MWBase::Environment::get().getESMStore()->get<ESM::Skill>())
|
||||||
{
|
{
|
||||||
const ESM::Skill* skill = MWBase::Environment::get().getESMStore()->get<ESM::Skill>().find(j);
|
if (skill.mData.mAttribute != attribute)
|
||||||
|
|
||||||
if (skill->mData.mAttribute != attribute)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// is this a minor or major skill?
|
// is this a minor or major skill?
|
||||||
float add = 0.2f;
|
float add = 0.2f;
|
||||||
for (const auto& skills : class_->mData.mSkills)
|
for (const auto& skills : class_->mData.mSkills)
|
||||||
{
|
{
|
||||||
if (skills[0] == j)
|
if (skills[0] == skill.mIndex)
|
||||||
add = 0.5;
|
add = 0.5;
|
||||||
if (skills[1] == j)
|
if (skills[1] == skill.mIndex)
|
||||||
add = 1.0;
|
add = 1.0;
|
||||||
}
|
}
|
||||||
modifierSum += add;
|
modifierSum += add;
|
||||||
|
@ -189,7 +187,7 @@ namespace
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int skillIndex = 0; skillIndex < ESM::Skill::Length; ++skillIndex)
|
for (const ESM::Skill& skill : MWBase::Environment::get().getESMStore()->get<ESM::Skill>())
|
||||||
{
|
{
|
||||||
float majorMultiplier = 0.1f;
|
float majorMultiplier = 0.1f;
|
||||||
float specMultiplier = 0.0f;
|
float specMultiplier = 0.0f;
|
||||||
|
@ -198,14 +196,14 @@ namespace
|
||||||
int specBonus = 0;
|
int specBonus = 0;
|
||||||
|
|
||||||
auto bonusIt = std::find_if(race->mData.mBonus.begin(), race->mData.mBonus.end(),
|
auto bonusIt = std::find_if(race->mData.mBonus.begin(), race->mData.mBonus.end(),
|
||||||
[skillIndex](const auto& bonus) { return bonus.mSkill == skillIndex; });
|
[&](const auto& bonus) { return bonus.mSkill == skill.mIndex; });
|
||||||
if (bonusIt != race->mData.mBonus.end())
|
if (bonusIt != race->mData.mBonus.end())
|
||||||
raceBonus = bonusIt->mBonus;
|
raceBonus = bonusIt->mBonus;
|
||||||
|
|
||||||
for (const auto& skills : class_->mData.mSkills)
|
for (const auto& skills : class_->mData.mSkills)
|
||||||
{
|
{
|
||||||
// is this a minor or major skill?
|
// is this a minor or major skill?
|
||||||
if (std::find(skills.begin(), skills.end(), skillIndex) != skills.end())
|
if (std::find(skills.begin(), skills.end(), skill.mIndex) != skills.end())
|
||||||
{
|
{
|
||||||
majorMultiplier = 1.0f;
|
majorMultiplier = 1.0f;
|
||||||
break;
|
break;
|
||||||
|
@ -213,15 +211,14 @@ namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
// is this skill in the same Specialization as the class?
|
// is this skill in the same Specialization as the class?
|
||||||
const ESM::Skill* skill = MWBase::Environment::get().getESMStore()->get<ESM::Skill>().find(skillIndex);
|
if (skill.mData.mSpecialization == class_->mData.mSpecialization)
|
||||||
if (skill->mData.mSpecialization == class_->mData.mSpecialization)
|
|
||||||
{
|
{
|
||||||
specMultiplier = 0.5f;
|
specMultiplier = 0.5f;
|
||||||
specBonus = 5;
|
specBonus = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
npcStats.getSkill(skill->mId)
|
npcStats.getSkill(skill.mId).setBase(
|
||||||
.setBase(std::min(round_ieee_754(npcStats.getSkill(skill->mId).getBase() + 5 + raceBonus + specBonus
|
std::min(round_ieee_754(npcStats.getSkill(skill.mId).getBase() + 5 + raceBonus + specBonus
|
||||||
+ (int(level) - 1) * (majorMultiplier + specMultiplier)),
|
+ (int(level) - 1) * (majorMultiplier + specMultiplier)),
|
||||||
100)); // Must gracefully handle level 0
|
100)); // Must gracefully handle level 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -221,7 +221,7 @@ namespace MWWorld
|
||||||
creatureStats.mAiSettings[i].mMod = 0.f;
|
creatureStats.mAiSettings[i].mMod = 0.f;
|
||||||
if (npcStats)
|
if (npcStats)
|
||||||
{
|
{
|
||||||
for (std::size_t i = 0; i < ESM::Skill::Length; ++i)
|
for (std::size_t i = 0; i < npcStats->mSkills.size(); ++i)
|
||||||
npcStats->mSkills[i].mMod = 0.f;
|
npcStats->mSkills[i].mMod = 0.f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue