public int CheckBuff(EnemyBuff a)
 {
     foreach (EnemyBuff b in enemyBuffList)
     {
         if (b.ToString().Equals(a.ToString()))
         {
             return(enemyBuffList.IndexOf(b));
         }
     }
     return(-1);
 }
 public void GainNewBuff(EnemyBuff newBuff, int stack)
 {
     if (CheckBuff(newBuff) == -1)
     {
         newBuff.thisEnemy = this;
         enemyBuffList.Add(newBuff);
         newBuff.GainStack(stack - 1);
         newBuff.ActivateBuff();
         UpdateBuffDisplay();
     }
     else
     {
         enemyBuffList[CheckBuff(newBuff)].GainStack(stack);
         UpdateBuffDisplay();
     }
 }
 public void RemoveBuff(EnemyBuff buff)
 {
     enemyBuffList.Remove(buff);
     buff.DeactivateBuff();
     UpdateBuffDisplay();
 }
 private bool IsBuffAlive(EnemyBuff b)
 {
     if( b.Duration <= 0 )
     {
         switch( b.Type )
         {
             case BuffType.Damage:
                 damageBuffed = false;
                 break;
             case BuffType.AttackRate:
                 attackRateBuffed = false;
                 break;
             case BuffType.Velocity:
                 velocityBuffed = false;
                 GetComponent<NavMeshAgent>().speed = baseVelocity;
                 break;
         }
     }
     return (b.Duration <= 0);
 }
 public void ApplyBuff( EnemyBuff b )
 {
     if( b.Type == BuffType.AttackRate && !attackRateBuffed )
     {
         attackRateBuffed = true;
         buffs.Add(b);
     }
     if( b.Type == BuffType.Damage && !damageBuffed )
     {
         damageBuffed = true;
         buffs.Add(b);
     }
     if( b.Type == BuffType.Velocity && !velocityBuffed )
     {
         velocityBuffed = true;
         buffs.Add(b);
     }
 }