mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-30 16:45:33 +00:00
Remove spell FX and VFX after playing the death animation (bug #5060)
This commit is contained in:
parent
b66c437700
commit
19b0b056e5
3 changed files with 7 additions and 6 deletions
|
@ -102,6 +102,7 @@
|
|||
Bug #5047: # in cell names sets color
|
||||
Bug #5050: Invalid spell effects are not handled gracefully
|
||||
Bug #5056: Calling Cast function on player doesn't equip the spell but casts it
|
||||
Bug #5060: Magic effect visuals stop when death animation begins instead of when it ends
|
||||
Feature #1774: Handle AvoidNode
|
||||
Feature #2229: Improve pathfinding AI
|
||||
Feature #3025: Analogue gamepad movement controls
|
||||
|
|
|
@ -551,7 +551,7 @@ namespace MWMechanics
|
|||
void Actors::adjustMagicEffects (const MWWorld::Ptr& creature)
|
||||
{
|
||||
CreatureStats& creatureStats = creature.getClass().getCreatureStats (creature);
|
||||
if (creatureStats.isDead())
|
||||
if (creatureStats.isDeathAnimationFinished())
|
||||
return;
|
||||
|
||||
MagicEffects now = creatureStats.getSpells().getMagicEffects();
|
||||
|
@ -1665,10 +1665,6 @@ namespace MWMechanics
|
|||
stats.getActiveSpells().visitEffectSources(soulTrap);
|
||||
}
|
||||
|
||||
// Reset magic effects and recalculate derived effects
|
||||
// One case where we need this is to make sure bound items are removed upon death
|
||||
stats.modifyMagicEffects(MWMechanics::MagicEffects());
|
||||
stats.getActiveSpells().clear();
|
||||
calculateCreatureStatModifiers(iter->first, 0);
|
||||
|
||||
if (cls.isEssential(iter->first))
|
||||
|
@ -1680,6 +1676,10 @@ namespace MWMechanics
|
|||
|
||||
++mDeathCount[Misc::StringUtils::lowerCase(iter->first.getCellRef().getRefId())];
|
||||
|
||||
// Reset magic effects and recalculate derived effects
|
||||
// One case where we need this is to make sure bound items are removed upon death
|
||||
stats.modifyMagicEffects(MWMechanics::MagicEffects());
|
||||
stats.getActiveSpells().clear();
|
||||
// Make sure spell effects are removed
|
||||
purgeSpellEffects(stats.getActorId());
|
||||
|
||||
|
|
|
@ -2648,7 +2648,7 @@ void CharacterController::updateContinuousVfx()
|
|||
|
||||
for (std::vector<int>::iterator it = effects.begin(); it != effects.end(); ++it)
|
||||
{
|
||||
if (mPtr.getClass().getCreatureStats(mPtr).isDead()
|
||||
if (mPtr.getClass().getCreatureStats(mPtr).isDeathAnimationFinished()
|
||||
|| mPtr.getClass().getCreatureStats(mPtr).getMagicEffects().get(MWMechanics::EffectKey(*it)).getMagnitude() <= 0)
|
||||
mAnimation->removeEffect(*it);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue