mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-01 12:39:42 +00:00
Fix icon magnitude
This commit is contained in:
parent
43074347e8
commit
63a9203dde
2 changed files with 12 additions and 5 deletions
|
@ -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);
|
||||||
|
|
|
@ -705,11 +705,16 @@ 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)
|
||||||
|
{
|
||||||
|
if(magicEffect->mData.mFlags & ESM::MagicEffect::Flags::AppliedOnce)
|
||||||
{
|
{
|
||||||
effect.mTimeLeft -= dt;
|
effect.mTimeLeft -= dt;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
else if(!dt)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if(effect.mEffectId == ESM::MagicEffect::Lock)
|
if(effect.mEffectId == ESM::MagicEffect::Lock)
|
||||||
{
|
{
|
||||||
if(target.getClass().canLock(target))
|
if(target.getClass().canLock(target))
|
||||||
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue