mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 00:26:39 +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