Merge branch 'invalideffects' into 'master'

Allow loading invalid effects again (#9069)

Closes #9069

See merge request OpenMW/openmw!5284
This commit is contained in:
jvoisin
2026-04-19 01:13:36 +00:00
3 changed files with 4 additions and 8 deletions
+2 -3
View File
@@ -156,9 +156,8 @@ namespace
int effectIdx = ESM::MagicEffect::refIdToIndex(effect.mData.mEffectID);
int skillIdx = ESM::Skill::refIdToIndex(effect.mData.mSkill);
int attributeIdx = ESM::Attribute::refIdToIndex(effect.mData.mAttribute);
if (effectIdx != -1)
std::cout << " Effect[" << i << "]: " << magicEffectLabel(effectIdx) << " (" << effectIdx << ")"
<< std::endl;
std::cout << " Effect[" << i << "]: " << magicEffectLabel(effectIdx) << " (" << effectIdx << ")"
<< std::endl;
if (skillIdx != -1)
std::cout << " Skill: " << skillLabel(skillIdx) << " (" << skillIdx << ")" << std::endl;
if (attributeIdx != -1)
+1 -1
View File
@@ -175,7 +175,7 @@ namespace
if (!mgef)
{
Log(Debug::Verbose) << RecordType::getRecordType() << " " << spell.mId
<< ": dropping invalid effect (index " << iter->mData.mEffectID << ")";
<< ": dropping invalid effect (" << iter->mData.mEffectID << ")";
iter = spell.mEffects.mList.erase(iter);
changed = true;
continue;
+1 -4
View File
@@ -45,10 +45,7 @@ namespace ESM
void fromBinary(const EsmENAMstruct& src, ENAMstruct& dst)
{
int16_t index = src.mEffectID;
if (index < 0 || index >= ESM::MagicEffect::Length)
throw std::runtime_error(std::format("Cannot deserialize effect into ENAM with index {}.", index));
dst.mEffectID = ESM::MagicEffect::indexToRefId(index);
dst.mEffectID = ESM::MagicEffect::indexToRefId(src.mEffectID);
dst.mSkill = ESM::Skill::indexToRefId(src.mSkill);
dst.mAttribute = ESM::Attribute::indexToRefId(src.mAttribute);
dst.mRange = src.mRange;