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:
parent
42cc27194b
commit
af2ea477d5
1 changed files with 16 additions and 24 deletions
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue