public override void Update() { if (!isInitialized) { _armor = 10; _range = 140; _hp = 1000; _damage = 3; _gun = new DragonWeapon(_damage, GameScene.Instance);//NoWeapon(GameScene.Instance); _cooldownValue = 5; _speed = 0; } base.Update(); if (!Global.isGamePaused) { _creepsCD--; _siegeCD--; if (_creepsCD <= 0) { spawnCreeps(); } } }
public void Effect() { switch (_type) { case AbilityList.DragonBreath: { List <Entity> enemyTeam; if (_owner.team == Team.Red) { enemyTeam = Teams.bluTeam; } else { enemyTeam = Teams.redTeam; } var tmpGun = new DragonWeapon(_owner.damage, GameScene.Instance); tmpGun.Move((int)_owner.Xcoord, (int)_owner.Ycoord); foreach (Unit target in enemyTeam) { double Distance = (Math.Sqrt(Math.Pow(_owner.Xcoord - target.X, 2) + Math.Pow(_owner.Ycoord - target.Y, 2))); if (Distance <= _range) { tmpGun.Shoot(target); } } } break; case AbilityList.HealingAura: { List <Entity> ownTeam; if (_owner.team != Team.Red) { ownTeam = Teams.bluTeam; } else { ownTeam = Teams.redTeam; } foreach (Unit target in ownTeam) { double Distance = (Math.Sqrt(Math.Pow(_owner.Xcoord - target.X, 2) + Math.Pow(_owner.Ycoord - target.Y, 2))); if (!target.isBuilding && Distance <= _range) { target.Heal(5); for (var counter = 0; counter < 4; counter++) { GameScene.Instance.Add(new Particle(target.X, target.Y, Assets.ParticleStar, 4, 4) { LifeSpan = 10, Angle = GoodRnd.gen.Next(-360, 360), FinalAlpha = 0, FinalX = target.X + GoodRnd.gen.Next(-50, 50) * (float)GoodRnd.gen.NextDouble(), FinalY = target.Y + GoodRnd.gen.Next(-50, 50) * (float)GoodRnd.gen.NextDouble(), FinalAngle = GoodRnd.gen.Next(-360, 360), FinalScaleX = 0.5f, LockScaleRatio = true }); } } } } break; case AbilityList.Vampirism: break; case AbilityList.Demolisher: break; default: break; } }