1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-03-27 05:40:25 +00:00

Fix particles and magnitudes for (damage) over time effects

This commit is contained in:
unknown 2021-10-16 21:40:41 +02:00
parent ac3c02496c
commit add6eb9c95

View file

@ -806,6 +806,7 @@ bool applyMagicEffect(const MWWorld::Ptr& target, const MWWorld::Ptr& caster, Ac
} }
if(effect.mMagnitude == 0) if(effect.mMagnitude == 0)
{ {
effect.mMagnitude = oldMagnitude;
effect.mFlags |= ESM::ActiveEffect::Flag_Applied | ESM::ActiveEffect::Flag_Remove; effect.mFlags |= ESM::ActiveEffect::Flag_Applied | ESM::ActiveEffect::Flag_Remove;
effect.mTimeLeft -= dt; effect.mTimeLeft -= dt;
return false; return false;
@ -1027,15 +1028,15 @@ void onMagicEffectRemoved(const MWWorld::Ptr& target, ActiveSpells::ActiveSpellP
{ {
if(!(effect.mFlags & ESM::ActiveEffect::Flag_Applied)) if(!(effect.mFlags & ESM::ActiveEffect::Flag_Applied))
return; return;
const auto world = MWBase::Environment::get().getWorld();
auto& magnitudes = target.getClass().getCreatureStats(target).getMagicEffects(); auto& magnitudes = target.getClass().getCreatureStats(target).getMagicEffects();
const auto* magicEffect = world->getStore().get<ESM::MagicEffect>().find(effect.mEffectId);
if(magicEffect->mData.mFlags & ESM::MagicEffect::Flags::AppliedOnce)
magnitudes.add(EffectKey(effect.mEffectId, effect.mArg), EffectParam(-effect.mMagnitude)); magnitudes.add(EffectKey(effect.mEffectId, effect.mArg), EffectParam(-effect.mMagnitude));
removeMagicEffect(target, spellParams, effect); removeMagicEffect(target, spellParams, effect);
auto anim = world->getAnimation(target); if(magnitudes.get(effect.mEffectId).getMagnitude() <= 0.f)
{
auto anim = MWBase::Environment::get().getWorld()->getAnimation(target);
if(anim) if(anim)
anim->removeEffect(effect.mEffectId); anim->removeEffect(effect.mEffectId);
}
} }
} }