From 28025e84f764a26d31796bd8c602aa2caef02471 Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Mon, 5 Jun 2023 22:29:12 +0200 Subject: [PATCH] Replace more instances of ESM::Skill::Length --- apps/openmw/mwclass/npc.cpp | 25 +++++++++++-------------- apps/openmw/mwworld/magiceffects.cpp | 2 +- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index ebab5bfb9c..18d616de27 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -111,20 +111,18 @@ namespace { float modifierSum = 0; - for (int j = 0; j < ESM::Skill::Length; ++j) + for (const ESM::Skill& skill : MWBase::Environment::get().getESMStore()->get()) { - const ESM::Skill* skill = MWBase::Environment::get().getESMStore()->get().find(j); - - if (skill->mData.mAttribute != attribute) + if (skill.mData.mAttribute != attribute) continue; // is this a minor or major skill? float add = 0.2f; for (const auto& skills : class_->mData.mSkills) { - if (skills[0] == j) + if (skills[0] == skill.mIndex) add = 0.5; - if (skills[1] == j) + if (skills[1] == skill.mIndex) add = 1.0; } 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()) { float majorMultiplier = 0.1f; float specMultiplier = 0.0f; @@ -198,14 +196,14 @@ namespace int specBonus = 0; 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()) raceBonus = bonusIt->mBonus; for (const auto& skills : class_->mData.mSkills) { // 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; break; @@ -213,16 +211,15 @@ namespace } // is this skill in the same Specialization as the class? - const ESM::Skill* skill = MWBase::Environment::get().getESMStore()->get().find(skillIndex); - if (skill->mData.mSpecialization == class_->mData.mSpecialization) + if (skill.mData.mSpecialization == class_->mData.mSpecialization) { specMultiplier = 0.5f; specBonus = 5; } - npcStats.getSkill(skill->mId) - .setBase(std::min(round_ieee_754(npcStats.getSkill(skill->mId).getBase() + 5 + raceBonus + specBonus - + (int(level) - 1) * (majorMultiplier + specMultiplier)), + npcStats.getSkill(skill.mId).setBase( + std::min(round_ieee_754(npcStats.getSkill(skill.mId).getBase() + 5 + raceBonus + specBonus + + (int(level) - 1) * (majorMultiplier + specMultiplier)), 100)); // Must gracefully handle level 0 } diff --git a/apps/openmw/mwworld/magiceffects.cpp b/apps/openmw/mwworld/magiceffects.cpp index 77525ad3df..d3e6db10a7 100644 --- a/apps/openmw/mwworld/magiceffects.cpp +++ b/apps/openmw/mwworld/magiceffects.cpp @@ -221,7 +221,7 @@ namespace MWWorld creatureStats.mAiSettings[i].mMod = 0.f; 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; } }