public override void OnProjectileHit(Projectile proj, Enemy target)
        {
            if (target != null)
                target.DamageEnemy(Damage, DamageType);

            DisposeOfProjectile(proj);
        }
        public override void OnProjectileHit(Projectile proj, Enemy target)
        {
            if (Target != null)
            {
                Target.DamageEnemy(Damage, DamageType);
                Target.BeginBurn(burnPercent, burnDuration);
            }

            DisposeOfProjectile(proj);
        }
        public override void OnProjectileHit(Projectile proj, Enemy target)
        {
            if (target != null)
            {
                int finalDamage = Damage - (2 * proj.Bounces);
                target.DamageEnemy(finalDamage, DamageType);
                proj.Bounces++;
                proj.HitEnemies.Add(target);
                AudioManager.PlaySoundEffect(5);

                if (proj.Bounces > MaxBounces)
                    DisposeOfProjectile(proj);
                else
                {
                    //Find the next target to bounce to.
                    Random rand = new Random();
                    Enemy thisEnemy;

                    List<Enemy> oldEnemiesList = new List<Enemy>(GameScene.Enemies);
                    List<Enemy> newEnemiesList = new List<Enemy>();
                    while (oldEnemiesList.Count > 0)
                    {
                        thisEnemy = oldEnemiesList[rand.Next(0, oldEnemiesList.Count)];
                        oldEnemiesList.Remove(thisEnemy);
                        newEnemiesList.Add(thisEnemy);
                    }

                    //For each enemy, determine if it's in range.
                    foreach (Enemy e in newEnemiesList)
                    {
                        if (!proj.HitEnemies.Contains(e) && e.Alive && e.Visible && Vector2.Distance(proj.Position, e.Position) <= MaxBounceRange)
                        {
                            //Set the target to the first enemy found to be within range of the tower.
                            proj.SetNewTarget(e);
                            break;
                        }
                    }

                    //Since it's possible for the previous loop to not change the target, dispose of it if the target is the same as before.
                    if(proj.HitEnemies.Contains(proj.Target))
                        DisposeOfProjectile(proj);
                }
            }
        }
Example #4
0
        public override void OnProjectileHit(Projectile proj, Enemy target)
        {
            if (target != null)
            {
                target.BeginFreeze(slowAmount, freezeDuration);

                if (proj.Name != "Icicle")
                    target.DamageEnemy(Damage, DamageType);
                else if (proj.Name == "Icicle" && altDamage > 0)
                    target.DamageEnemy(altDamage, DamageType);

            }

            DisposeOfProjectile(proj);
        }
        public override void OnProjectileHit(Projectile proj, Enemy target)
        {
            if (Target != null)
            {
                Target.DamageEnemy(Damage, DamageType);

                //Start the target a-chokin'!
                //Use this formula to calculate the damage done.
                float poisonDPS = (Damage * 4) / poisonDuration;
                Target.BeginPoison(poisonDPS, poisonDuration);
            }

            DisposeOfProjectile(proj);
        }
Example #6
0
 public virtual void OnProjectileHit(Projectile proj, Enemy target)
 {
     //Put stuff in here that will obliterate the projectile and thus the enemy.
 }
Example #7
0
 public void DisposeOfProjectile(Projectile proj)
 {
     DisabledProjectiles.Add(proj);
     proj.Destroy();
 }