1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2026-01-20 06:00:55 +00:00

- Fixed OpenMW-CS incorrectly passing magic effect ids

- Resolved merge conflicts with !4323
- Minor refactor of affectsSkill helper function
- Removed redundant class definition
This commit is contained in:
Telvanni 4Life 2026-01-07 15:12:34 -05:00
parent 9159788c9b
commit c6cc1be347
5 changed files with 12 additions and 18 deletions

View file

@ -319,9 +319,7 @@ namespace CSMWorld
switch (subColIndex)
{
case 0:
if (effect.mEffectID.empty())
return QVariant();
return QString::fromStdString(effect.mEffectID.getRefIdString());
return ESM::MagicEffect::refIdToIndex(effect.mEffectID);
case 1:
{
if (effect.mEffectID == ESM::MagicEffect::DrainSkill
@ -373,7 +371,7 @@ namespace CSMWorld
{
case 0:
{
effect.mEffectID = ESM::RefId::deserializeText(value.toString().toStdString());
effect.mEffectID = ESM::MagicEffect::indexToRefId(value.toInt());
if (effect.mEffectID == ESM::MagicEffect::DrainSkill
|| effect.mEffectID == ESM::MagicEffect::DamageSkill
|| effect.mEffectID == ESM::MagicEffect::RestoreSkill

View file

@ -149,7 +149,7 @@ QVariant CSMWorld::IngredEffectRefIdAdapter::getNestedData(
switch (subColIndex)
{
case 0:
return effectId.empty() ? QVariant() : QString::fromStdString(effectId.getRefIdString());
return ESM::MagicEffect::refIdToIndex(effectId);
case 1:
{
if (effectId == ESM::MagicEffect::DrainSkill || effectId == ESM::MagicEffect::DamageSkill
@ -183,8 +183,7 @@ void CSMWorld::IngredEffectRefIdAdapter::setNestedData(
if (subRowIndex < 0 || subRowIndex >= 4)
throw std::runtime_error("index out of range");
ESM::RefId effectId
= value.toString().isEmpty() ? ESM::RefId() : ESM::RefId::deserializeText(value.toString().toStdString());
ESM::RefId effectId = ESM::MagicEffect::indexToRefId(value.toInt());
switch (subColIndex)
{

View file

@ -9,7 +9,6 @@
namespace ESM
{
class RefId;
class StringRefId;
}
namespace MWWorld
{

View file

@ -62,12 +62,8 @@ namespace ESM
MagicEffect::FortifySkill,
MagicEffect::AbsorbSkill,
};
if (effectId.empty())
return false;
for (size_t i = 0; i < affectsSkillEffects.size(); ++i)
if (affectsSkillEffects[i] == effectId)
return true;
return false;
return std::find(affectsSkillEffects.begin(), affectsSkillEffects.end(), effectId)
!= affectsSkillEffects.end();
}
void saveImpl(ESMWriter& esm, const std::vector<ActiveSpells::ActiveSpellParams>& spells, NAME tag)
@ -90,7 +86,7 @@ namespace ESM
for (auto& effect : params.mEffects)
{
esm.writeHNT("MGEF", effect.mEffectId);
esm.writeHNT("MGEF", ESM::MagicEffect::refIdToIndex(effect.mEffectId));
if (const ESM::RefId* id = std::get_if<ESM::RefId>(&effect.mArg))
{
if (!id->empty())
@ -175,8 +171,10 @@ namespace ESM
while (esm.isNextSub("MGEF"))
{
int32_t effectId;
ActiveEffect effect;
esm.getHT(effect.mEffectId);
esm.getHT(effectId);
effect.mEffectId = ESM::MagicEffect::indexToRefId(effectId);
if (format <= MaxActorIdSaveGameFormatVersion)
{
int32_t arg = -1;

View file

@ -121,8 +121,8 @@ namespace ESM
esm.getHNT(actorId, "ACID");
mSummonedCreatureMap[SummonKey(ESM::MagicEffect::indexToRefId(magicEffect), source, effectIndex)]
= actorId;
mSummonedCreatures.emplace(ESM::MagicEffect::indexToRefId(
magicEffect), RefNum{ .mIndex = static_cast<uint32_t>(actorId), .mContentFile = -1 });
mSummonedCreatures.emplace(ESM::MagicEffect::indexToRefId(magicEffect),
RefNum{ .mIndex = static_cast<uint32_t>(actorId), .mContentFile = -1 });
}
}
else