1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-03-28 20:06:41 +00:00

Don't use loops to detect absorb effects

This commit is contained in:
capostrophic 2020-01-09 13:39:12 +03:00
parent 42cc27194b
commit af2ea477d5

View file

@ -554,16 +554,11 @@ namespace MWMechanics
// Avoid applying absorb effects if the caster is the target // Avoid applying absorb effects if the caster is the target
// We still need the spell to be added // We still need the spell to be added
if (caster == target) if (caster == target
&& effectIt->mEffectID >= ESM::MagicEffect::AbsorbAttribute
&& effectIt->mEffectID <= ESM::MagicEffect::AbsorbSkill)
{ {
for (int i=0; i<5; ++i) effect.mMagnitude = 0;
{
if (effectIt->mEffectID == ESM::MagicEffect::AbsorbAttribute+i)
{
effect.mMagnitude = 0;
break;
}
}
} }
bool hasDuration = !(magicEffect->mData.mFlags & ESM::MagicEffect::NoDuration); bool hasDuration = !(magicEffect->mData.mFlags & ESM::MagicEffect::NoDuration);
@ -614,22 +609,19 @@ namespace MWMechanics
// magnitude, since we're transferring stats from the target to the caster // magnitude, since we're transferring stats from the target to the caster
if (!caster.isEmpty() && caster != target && caster.getClass().isActor()) if (!caster.isEmpty() && caster != target && caster.getClass().isActor())
{ {
for (int i=0; i<5; ++i) if (effectIt->mEffectID >= ESM::MagicEffect::AbsorbAttribute &&
effectIt->mEffectID <= ESM::MagicEffect::AbsorbSkill)
{ {
if (effectIt->mEffectID == ESM::MagicEffect::AbsorbAttribute+i) std::vector<ActiveSpells::ActiveEffect> absorbEffects;
{ ActiveSpells::ActiveEffect effect_ = effect;
std::vector<ActiveSpells::ActiveEffect> absorbEffects; effect_.mMagnitude *= -1;
ActiveSpells::ActiveEffect effect_ = effect; absorbEffects.push_back(effect_);
effect_.mMagnitude *= -1; if (reflected && Settings::Manager::getBool("classic reflected absorb spells behavior", "Game"))
absorbEffects.push_back(effect_); target.getClass().getCreatureStats(target).getActiveSpells().addSpell("", true,
if (reflected && Settings::Manager::getBool("classic reflected absorb spells behavior", "Game")) absorbEffects, mSourceName, caster.getClass().getCreatureStats(caster).getActorId());
target.getClass().getCreatureStats(target).getActiveSpells().addSpell("", true, else
absorbEffects, mSourceName, caster.getClass().getCreatureStats(caster).getActorId()); caster.getClass().getCreatureStats(caster).getActiveSpells().addSpell("", true,
else absorbEffects, mSourceName, target.getClass().getCreatureStats(target).getActorId());
caster.getClass().getCreatureStats(caster).getActiveSpells().addSpell("", true,
absorbEffects, mSourceName, target.getClass().getCreatureStats(target).getActorId());
break;
}
} }
} }
} }