Example #1
0
        public static List <EnemyInfo> GetEnemyList(List <UOCharacter> chars, IUOPosition center)
        {
            List <EnemyInfo> enemyList = new List <EnemyInfo>();

            foreach (UOCharacter ch in chars)//World.Characters)
            {
                if (Game.CurrentGame.IsAlie(ch.Serial) || Game.CurrentGame.IsHealAlie(ch.Serial))
                {
                    continue;
                }

                EnemyInfo enemy = new EnemyInfo();
                enemy.Char       = ch;
                enemy.Damage     = (ch.MaxHits - ch.Hits);
                enemy.Perc       = (((decimal)(ch.MaxHits - ch.Hits) / (decimal)ch.MaxHits) * 100.0m) / (decimal)ch.MaxHits;
                enemy.DamagePerc = ((decimal)(ch.MaxHits - ch.Hits) / (decimal)ch.MaxHits) * 100.0m;
                enemy.Distance   = Robot.GetRelativeVectorLength(center, UOPositionBase.CharacterPosition(ch));

                if (enemy.Distance <= 5)
                {
                    enemy.Zone = 0;
                }
                else if (enemy.Distance <= 10)
                {
                    enemy.Zone = 1;
                }
                else if (enemy.Distance <= 15)
                {
                    enemy.Zone = 2;
                }
                else
                {
                    enemy.Zone = 3;
                }

                if (String.IsNullOrEmpty(ch.Name))
                {
                    ch.Click();
                    UO.Wait(100);
                }

                if ((String.Empty + ch.Name).ToLower().Contains("mirror") && ch.MaxHits >= 255)
                {
                    enemy.Priority = 100;
                }
                else if ((String.Empty + ch.Name).ToLower().Contains("chameleon"))
                {
                    enemy.Priority = ch.MaxHits;
                }
                else if ((String.Empty + ch.Name).ToLower().Contains("lethargy"))
                {
                    enemy.Priority = ch.MaxHits;
                }
                else if ((String.Empty + ch.Name).ToLower().Contains("lethargy"))
                {
                    enemy.Priority = ch.MaxHits;
                }
                else if ((String.Empty + ch.Name).ToLower().Contains("acid ooze"))
                {
                    enemy.Priority = ch.MaxHits;
                }
                else if ((String.Empty + ch.Name).ToLower().Contains("bird"))
                {
                    enemy.Priority = ch.MaxHits - 100;
                }

                if (enemy.Char.Notoriety == Notoriety.Enemy || enemy.Char.Notoriety == Notoriety.Murderer)
                {
                    enemy.Priority += 1000;
                }

                enemyList.Add(enemy);
            }
            return(enemyList);
        }
Example #2
0
        //---------------------------------------------------------------------------------------------

        public static List <UOCharacter> GetEnemiesByDistance(int maxDistance, bool useDistanceCircles, IUOPosition pos)
        {
            List <UOCharacter> enemies = new List <UOCharacter>();

            if (pos == null)
            {
                pos = UOPositionBase.PlayerPosition;
            }

            int distance5     = 0;
            int distance10    = 0;
            int enemyDistance = maxDistance;

            List <UOCharacter> chars = CharactersByDistance;

            foreach (UOCharacter character in chars)
            {
                if (
                    character.Serial != World.Player.Serial &&
                    Robot.GetRelativeVectorLength(pos, UOPositionBase.CharacterPosition(character)) <= maxDistance &&
                    // character.Distance < maxDistance &&
                    Array.IndexOf(EnemyFilter, character.Notoriety) >= 0 &&
                    !Game.CurrentGame.IsAlie(character.Serial) &&
                    !Game.CurrentGame.IsHealAlie(character.Serial) &&
                    !IsSummon(character)
                    )

                {
                    if (character.Distance <= 7)
                    {
                        distance5++;
                    }
                    else if (character.Distance <= 12)
                    {
                        distance10++;
                    }
                }
            }

            if (useDistanceCircles)
            {
                if (distance5 > 0)
                {
                    enemyDistance = 8;
                }
                else if (distance10 > 0)
                {
                    enemyDistance = 13;
                }
            }

            foreach (UOCharacter character in chars)
            {
                if (
                    character.Serial != World.Player.Serial &&
                    // character.Distance < enemyDistance &&

                    Robot.GetRelativeVectorLength(pos, UOPositionBase.CharacterPosition(character)) <= maxDistance &&
                    Array.IndexOf(EnemyFilter, character.Notoriety) >= 0 &&
                    !Game.CurrentGame.IsAlie(character.Serial) &&
                    !Game.CurrentGame.IsHealAlie(character.Serial) &&
                    !IsSummon(character))
                {
                    enemies.Add(character);
                }
            }

            return(enemies);
        }