public override void Update(GameTime gameTime) { if (DodgeBullet != null && DodgeBullet.TimeAlive >= DodgeBullet.LifeTime) { DodgeBullet = null; } SearchTime += gameTime.ElapsedGameTime.Milliseconds; if (SearchTime > MaxSearchTime || (AttackTarget != null && !AttackTarget.CanBeTargeted())) { SearchTime = 0; SearchForEnemies(); } if (AttackTarget == null || AttackTarget.GetType().IsSubclassOf(typeof(UnitTurret))) { UnitTurret u = (UnitTurret)AttackTarget; if (AttackTarget == null || (u.MyCard == null && NeutralManager.MyPattern.CurrentCard.Type.Equals("Heavy") || (u.MyCard != null && NeutralManager.MyPattern.CurrentCard.Type.Equals(u.MyCard.StrongVs)))) { if (!isPathfinding || Vector2.Distance(Parent.ParentController.ParentShip.Position.get(), PathfindingTarget) < 300) { isPathfinding = true; PathfindingTarget = PathFindingManager.TraceAttackPoint(Parent.ParentController.ParentShip.Position.get(), 10); } } else { isPathfinding = false; } } else { isPathfinding = false; } if (Parent.ParentController.ParentShip.Dead || !WaveFSM.WaveStepState.WeaponsFree) { AiState s = Parent.GetExistingState(typeof(PlaceTurretState)); Parent.SetState(s == null ? new PlaceTurretState() : s); } base.Update(gameTime); }