Exemple #1
0
        public static List <Player> FindTuxiTargets(TrustedAI ai, Player player, int max)
        {
            List <Player> result  = new List <Player>();
            List <Player> enemies = ai.GetEnemies(player);

            ai.SortByHandcards(ref enemies, false);
            Room   room       = ai.Room;
            Player zhugeliang = ai.FindPlayerBySkill("kongcheng");

            if (zhugeliang != null && ai.IsFriend(zhugeliang) && zhugeliang.HandcardNum == 1 && ai.GetEnemisBySeat(zhugeliang) > 0 && zhugeliang != player)
            {
                if (ai.IsWeak(zhugeliang))
                {
                    result.Add(zhugeliang);
                }
                else
                {
                    List <int> ids = ai.GetKnownCards(zhugeliang);
                    if (ids.Count == 1)
                    {
                        int id = ids[0];
                        if (!ai.IsCard(id, Jink.ClassName, zhugeliang) && !!ai.IsCard(id, Peach.ClassName, zhugeliang) && !ai.IsCard(id, Analeptic.ClassName, zhugeliang))
                        {
                            result.Add(zhugeliang);
                        }
                    }
                }
            }

            foreach (Player p in enemies)
            {
                if (result.Contains(p) || !RoomLogic.CanGetCard(room, player, p, "h"))
                {
                    continue;
                }
                List <int> ids = ai.GetKnownCards(p);
                foreach (int id in ids)
                {
                    WrappedCard card = room.GetCard(id);
                    if (card.Name == Peach.ClassName || card.Name == Nullification.ClassName || card.Name.Contains(Nullification.ClassName))
                    {
                        result.Add(p);
                        break;
                    }
                }
                if (result.Count >= max)
                {
                    break;
                }
            }

            if (result.Count < max)
            {
                foreach (Player p in enemies)
                {
                    if (result.Contains(p) || !RoomLogic.CanGetCard(room, player, p, "h"))
                    {
                        continue;
                    }
                    if (ai.HasSkill("jijiu|qingnang|leiji|jieyin|beige|kanpo|liuli|qiaobian|zhiheng|guidao|tianxiang|lijian", p))
                    {
                        result.Add(p);
                    }

                    if (result.Count >= max)
                    {
                        break;
                    }
                }
            }
            if (result.Count < max)
            {
                foreach (Player p in enemies)
                {
                    if (result.Contains(p) || !RoomLogic.CanGetCard(room, player, p, "h"))
                    {
                        continue;
                    }
                    int  x    = p.HandcardNum;
                    bool good = true;
                    if (x == 1 && ai.NeedKongcheng(p))
                    {
                        good = false;
                    }
                    if (x >= 2 && ai.HasSkill("tuntian", p))
                    {
                        good = false;
                    }

                    if (good)
                    {
                        result.Add(p);
                    }

                    if (result.Count >= max)
                    {
                        break;
                    }
                }
            }

            return(result);
        }