|  | @@ -207,6 +207,7 @@ bool CSpellEffectAnim::init()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void CSpellEffectAnim::nextFrame()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +	//notice: there may be more than one effect in owner->battleEffects correcponding to this animation (ie. armageddon)
 | 
	
		
			
				|  |  |  	for(std::list<SBattleEffect>::iterator it = owner->battleEffects.begin(); it != owner->battleEffects.end(); ++it)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  |  		if(it->effectID == ID)
 | 
	
	
		
			
				|  | @@ -223,7 +224,6 @@ void CSpellEffectAnim::nextFrame()
 | 
	
		
			
				|  |  |  				it->x += dx;
 | 
	
		
			
				|  |  |  				it->y += dy;
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			break;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -404,7 +404,8 @@ bool CDefenceAnim::init()
 | 
	
		
			
				|  |  |  	int lowestMoveID = owner->animIDhelper + 5;
 | 
	
		
			
				|  |  |  	for(std::list<std::pair<CBattleAnimation *, bool> >::iterator it = owner->pendingAnims.begin(); it != owner->pendingAnims.end(); ++it)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		if(dynamic_cast<CDefenceAnim *>(it->first))
 | 
	
		
			
				|  |  | +		CDefenceAnim * defAnim = dynamic_cast<CDefenceAnim *>(it->first);
 | 
	
		
			
				|  |  | +		if(defAnim && defAnim->stackID != stackID)
 | 
	
		
			
				|  |  |  			continue;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		CBattleAttack * attAnim = dynamic_cast<CBattleAttack *>(it->first);
 |