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); } } }
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); }
public virtual void OnProjectileHit(Projectile proj, Enemy target) { //Put stuff in here that will obliterate the projectile and thus the enemy. }
public void DisposeOfProjectile(Projectile proj) { DisabledProjectiles.Add(proj); proj.Destroy(); }