1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-03-01 12:09:50 +00:00

Fix icon magnitude

This commit is contained in:
Evil Eye 2021-08-31 20:07:30 +02:00
parent 43074347e8
commit 63a9203dde
2 changed files with 12 additions and 5 deletions

View file

@ -34,7 +34,7 @@ namespace MWGui
{ {
for(const auto& effect : params.getEffects()) for(const auto& effect : params.getEffects())
{ {
if(!effect.mMagnitude) if(!(effect.mFlags & ESM::ActiveEffect::Flag_Applied))
continue; continue;
MagicEffectInfo newEffectSource; MagicEffectInfo newEffectSource;
newEffectSource.mKey = MWMechanics::EffectKey(effect.mEffectId, effect.mArg); newEffectSource.mKey = MWMechanics::EffectKey(effect.mEffectId, effect.mArg);

View file

@ -705,10 +705,15 @@ bool applyMagicEffect(const MWWorld::Ptr& target, const MWWorld::Ptr& caster, Ac
return true; return true;
} }
const auto* magicEffect = world->getStore().get<ESM::MagicEffect>().find(effect.mEffectId); const auto* magicEffect = world->getStore().get<ESM::MagicEffect>().find(effect.mEffectId);
if(effect.mFlags & ESM::ActiveEffect::Flag_Applied && magicEffect->mData.mFlags & ESM::MagicEffect::Flags::AppliedOnce) if(effect.mFlags & ESM::ActiveEffect::Flag_Applied)
{ {
effect.mTimeLeft -= dt; if(magicEffect->mData.mFlags & ESM::MagicEffect::Flags::AppliedOnce)
return false; {
effect.mTimeLeft -= dt;
return false;
}
else if(!dt)
return false;
} }
if(effect.mEffectId == ESM::MagicEffect::Lock) if(effect.mEffectId == ESM::MagicEffect::Lock)
{ {
@ -786,8 +791,9 @@ bool applyMagicEffect(const MWWorld::Ptr& target, const MWWorld::Ptr& caster, Ac
float oldMagnitude = 0.f; float oldMagnitude = 0.f;
if(effect.mFlags & ESM::ActiveEffect::Flag_Applied) if(effect.mFlags & ESM::ActiveEffect::Flag_Applied)
oldMagnitude = effect.mMagnitude; oldMagnitude = effect.mMagnitude;
float magnitude = roll(effect);
//Note that there's an early out for Flag_Applied AppliedOnce effects so we don't have to exclude them here //Note that there's an early out for Flag_Applied AppliedOnce effects so we don't have to exclude them here
effect.mMagnitude = roll(effect); effect.mMagnitude = magnitude;
if(!(magicEffect->mData.mFlags & (ESM::MagicEffect::Flags::NoMagnitude | ESM::MagicEffect::Flags::AppliedOnce))) if(!(magicEffect->mData.mFlags & (ESM::MagicEffect::Flags::NoMagnitude | ESM::MagicEffect::Flags::AppliedOnce)))
{ {
if(effect.mDuration != 0) if(effect.mDuration != 0)
@ -808,6 +814,7 @@ bool applyMagicEffect(const MWWorld::Ptr& target, const MWWorld::Ptr& caster, Ac
spellParams.worsen(); spellParams.worsen();
else else
applyMagicEffect(target, caster, spellParams, effect, invalid, receivedMagicDamage); applyMagicEffect(target, caster, spellParams, effect, invalid, receivedMagicDamage);
effect.mMagnitude = magnitude;
magnitudes.add(EffectKey(effect.mEffectId, effect.mArg), EffectParam(effect.mMagnitude - oldMagnitude)); magnitudes.add(EffectKey(effect.mEffectId, effect.mArg), EffectParam(effect.mMagnitude - oldMagnitude));
} }
effect.mTimeLeft -= dt; effect.mTimeLeft -= dt;