Ejemplo n.º 1
0
        public static CircularUnit NearestEnemyUnit(Wizard self, World world)
        {
            CircularUnit nearestEnemyUnit     = null;
            Building     nearestEnemyBuilding = NearestEnemyBuilding(self, world, true);
            Minion       nearestEnemyMinion   = NearestEnemyMinion(self, world, true);
            Wizard       nearestEnemyWizard   = NearestEnemyWizard(self, world, true);

            nearestEnemyBuilding = nearestEnemyBuilding == null?NearestEnemyBuilding(self, world, false) : nearestEnemyBuilding;

            nearestEnemyMinion = nearestEnemyMinion == null?NearestEnemyMinion(self, world, false) : nearestEnemyMinion;

            nearestEnemyWizard = nearestEnemyWizard == null?NearestEnemyWizard(self, world, false) : nearestEnemyWizard;

            double minDist = world.Width;

            if (nearestEnemyBuilding != null && self.GetDistanceTo(nearestEnemyBuilding) < minDist)
            {
                minDist          = self.GetDistanceTo(nearestEnemyBuilding);
                nearestEnemyUnit = nearestEnemyBuilding;
            }
            if (nearestEnemyMinion != null && self.GetDistanceTo(nearestEnemyMinion) < minDist)
            {
                minDist          = self.GetDistanceTo(nearestEnemyMinion);
                nearestEnemyUnit = nearestEnemyMinion;
            }
            if (nearestEnemyWizard != null && self.GetDistanceTo(nearestEnemyWizard) < minDist)
            {
                minDist          = self.GetDistanceTo(nearestEnemyWizard);
                nearestEnemyUnit = nearestEnemyWizard;
            }
            return(nearestEnemyUnit);
        }
Ejemplo n.º 2
0
 public static void Circle(CircularUnit circularUnit, VisualClientColor color)
 {
     if (DebugHelper.CanDebug)
     {
         VisualClient.Instance.Circle(circularUnit.X, circularUnit.Y, (float)circularUnit.Radius, color.r, color.g, color.b);
     }
 }
Ejemplo n.º 3
0
        private static void AttackUnit(Wizard self, Move move, World world, CircularUnit unit)
        {
            double radius = unit.Radius;

            move.Turn  = self.GetAngleTo(unit);
            move.Speed = 4;
            //Console.WriteLine(self.GetAngleTo(unit));
            if (self.GetDistanceTo(unit) < self.CastRange + radius - 100)
            {
                move.Speed       = 0;
                move.StrafeSpeed = 0;
                stop             = true;
            }
            if (stop)
            {
                if (self.RemainingCooldownTicksByAction[1] > 10)
                {
                    move.Speed = -3;
                }
                if (self.RemainingCooldownTicksByAction[1] > 35)
                {
                    move.Speed = 3;
                }
            }
        }
Ejemplo n.º 4
0
        public static CircularUnit UnitForAttack(Wizard self, World world, bool mode)
        {
            double       minHp         = Math.Pow(10, 10);
            CircularUnit unitForAttack = null;

            foreach (Wizard wizard in world.Wizards)
            {
                if (self.GetDistanceTo(wizard) < 500 && (Find.IsClosed(self, world, wizard) || !mode) && self.Faction != wizard.Faction)
                {
                    if (wizard.Life < minHp)
                    {
                        minHp         = wizard.Life;
                        unitForAttack = wizard;
                    }
                }
            }
            foreach (Minion minion in world.Minions)
            {
                if (self.GetDistanceTo(minion) < self.CastRange - 100 && (Find.IsClosed(self, world, minion) || !mode) && self.Faction != minion.Faction && minion.Faction != Faction.Neutral)
                {
                    if (minion.Life < minHp)
                    {
                        minHp         = minion.Life;
                        unitForAttack = minion;
                    }
                }
            }
            foreach (Building building in world.Buildings)
            {
                if (self.GetDistanceTo(building) < self.CastRange - 100 && (Find.IsClosed(self, world, building) || !mode) && self.Faction != building.Faction)
                {
                    if (building.Life < minHp)
                    {
                        minHp         = building.Life;
                        unitForAttack = building;
                    }
                }
            }

            // neutral
            foreach (Minion minion in world.Minions)
            {
                if (self.GetDistanceTo(minion) < 40 && (Find.IsClosed(self, world, minion) || !mode) && minion.Faction == Faction.Neutral)
                {
                    unitForAttack = minion;
                }
            }

            return(unitForAttack);
        }
Ejemplo n.º 5
0
        public static void Attack(Wizard self, Move move, World world)
        {
            CircularUnit unitForAttack = Find.UnitForAttack(self, world, true) == null?Find.UnitForAttack(self, world, false) : Find.UnitForAttack(self, world, true);

            CircularUnit nearestEnemyUnit = Find.NearestEnemyUnit(self, world);

            if (unitForAttack != null)
            {
                AttackUnit(self, move, world, unitForAttack);
            }
            else if (nearestEnemyUnit != null)
            {
                AttackUnit(self, move, world, nearestEnemyUnit);
            }
        }
Ejemplo n.º 6
0
        double getAngleTo(Wizard delf, CircularUnit unit, bool type)
        {
            double res = delf.GetAngleTo(unit);

            if (type)
            {
                return(res);
            }
            else
            if (res <= 0)
            {
                return(res + Math.PI);
            }
            else
            {
                return(res - Math.PI);
            }
        }
Ejemplo n.º 7
0
        public static CircularUnit NearestHostile(Wizard self, World world)
        {
            CircularUnit hostile = null;
            double       minDist = world.Width;
            double       dist;

            foreach (Building h in world.Buildings)
            {
                dist = self.GetDistanceTo(h);
                if (self.Faction != h.Faction && dist < minDist)
                {
                    minDist = dist;
                    hostile = h;
                }
            }
            foreach (Wizard h in world.Wizards)
            {
                dist = self.GetDistanceTo(h);
                if (self.Faction != h.Faction && dist < minDist)
                {
                    minDist = dist;
                    hostile = h;
                }
            }
            foreach (Minion h in world.Minions)
            {
                dist = self.GetDistanceTo(h);
                if (self.Faction != h.Faction && dist < minDist)
                {
                    if (!(h.Faction == Faction.Neutral && Math.Abs(h.GetAngleTo(self)) < Pi / 10 && (h.SpeedX > 0.2 || h.SpeedY > 0.2)))
                    {
                        continue;
                    }
                    minDist = dist;
                    hostile = h;
                }
            }
            return(hostile);
        }
Ejemplo n.º 8
0
 public static bool IsUnion(this CircularUnit unit, Wizard me)
 {
     return(unit.Faction == me.Faction);
 }
Ejemplo n.º 9
0
 public ACircularUnit(CircularUnit unit) : base(unit)
 {
     Radius = unit.Radius;
 }