Exemple #1
0
        public void ReplacePrizeItem(LotteryEntity lottery, int giftCode)
        {
            var old = lottery.PrizeItemCode;

            lottery.PrizeItemCode = giftCode;
            lottery.ItemString    = lottery.ItemString.Replace(old.ToString(), giftCode.ToString());
        }
Exemple #2
0
        public LotteryEntity Lottery(int lotteryType, int subType, int cardCount, List <int> prizeEquipments)
        {
            ConfigLotteryEntity configLotteryEntity = GetLotteryEntity(lotteryType, subType);

            if (configLotteryEntity == null)
            {
                SystemlogMgr.Error("LotteryCache", "no config lottery entity,lotteryType:" + lotteryType + ",subType:" + subType);
                return(null);
            }
            else
            {
                var list = LotteryItem(configLotteryEntity, cardCount, prizeEquipments);

                if (list != null && list.Count > 0)
                {
                    var lotteryEntity = new LotteryEntity();
                    var index         = RandomHelper.GetInt32WithoutMax(0, list.Count);
                    lotteryEntity.PrizeItemCode = list[index];
                    lotteryEntity.ItemString    = string.Join(",", list);
                    lotteryEntity.Strength      = configLotteryEntity.Strength;
                    lotteryEntity.IsBinding     = configLotteryEntity.IsBinding;
                    return(lotteryEntity);
                }
                return(null);
            }
        }
Exemple #3
0
        public LotteryEntity ScoutingNew(int scoutingType, int orangeLib, int lowLib, out List <int> cardList, int giftCode = 0)
        {
            cardList = null;
            ConfigLotteryEntity configLotteryEntity = GetLotteryEntity((int)EnumLotteryType.Lottery, scoutingType);

            if (configLotteryEntity == null)
            {
                SystemlogMgr.Error("ScoutingNew", "no config lottery entity:" + ",subType:" + scoutingType);
                return(null);
            }
            else
            {
                int cardCount           = 5;
                int orangeCount         = 0;
                int contractCount       = 0;
                int scoutingorangeCount = _scoutingTenOrangeCount;
                cardList = LotteryItemNew(configLotteryEntity, cardCount, scoutingorangeCount, orangeLib, lowLib,
                                          ref orangeCount, ref contractCount);
            }
            if (cardList != null && cardList.Count > 0)
            {
                var lotteryEntity = new LotteryEntity();
                lotteryEntity.ItemString = string.Join(",", cardList);
                lotteryEntity.Strength   = configLotteryEntity.Strength;
                lotteryEntity.IsBinding  = configLotteryEntity.IsBinding;
                return(lotteryEntity);
            }
            return(null);
        }
Exemple #4
0
        /// <summary>
        /// 世界挑战赛排名奖励
        /// </summary>
        public MailBuilder(Guid managerId, DateTime recordDate, int rank, LotteryEntity lotteryEntity)
            : this()
        {
            string content = string.Format("D,{0:yyyy-MM-dd}|R,{1}", recordDate, rank);

            AddAttachment(1, lotteryEntity.PrizeItemCode, lotteryEntity.IsBinding, lotteryEntity.Strength);
            Builder(managerId, EnumMailType.WorldChalengePrize, content);
        }
Exemple #5
0
        /// <summary>
        /// 竞技场排名奖励
        /// </summary>
        public MailBuilder(Guid managerId, EnumMailType mailType, int rank, LotteryEntity lotteryEntity)
            : this()
        {
            string content = string.Format("R,{0}", rank);

            AddAttachment(1, lotteryEntity.PrizeItemCode, lotteryEntity.IsBinding, lotteryEntity.Strength);
            Builder(managerId, mailType, content);
        }
Exemple #6
0
        /// <summary>
        /// 豪门试炼通关奖励
        /// </summary>
        /// <param name="managerId">经理ID</param>
        /// <param name="gateName">关卡名字</param>
        /// <param name="itemNumber">物品数量</param>
        /// <param name="entity">物品</param>
        public MailBuilder(LotteryEntity entity, Guid managerId, string gateName, int itemNumber)
            : this()
        {
            string content = string.Format("N,{0}", gateName);

            if (entity != null)
            {
                AddAttachment(itemNumber, entity.PrizeItemCode, entity.IsBinding, entity.Strength);
            }

            Builder(managerId, EnumMailType.GiantsAwary, content);
        }
Exemple #7
0
        /// <summary>
        /// 九宫格排名奖励
        /// </summary>
        /// <param name="managerID">经理ID</param>
        /// <param name="ranking">排名</param>
        /// <param name="prestige">声望</param>
        /// <param name="entity">物品</param>
        public MailBuilder(Guid managerID, int ranking, int prestige, LotteryEntity entity)
            : this()
        {
            string content = string.Format("L,{0}|P,{1}", ranking, prestige);

            if (entity != null)
            {
                AddAttachment(1, entity.PrizeItemCode, entity.IsBinding, entity.Strength);
                Builder(managerID, EnumMailType.SudokuAwary, content);
            }
            else
            {
                Builder(managerID, EnumMailType.SudokuAwaryNotItem, content);
            }
        }
Exemple #8
0
        public LotteryEntity ScoutingTen(int scoutingType, int orangeLib, int lowLib, out List <int> cardList, int limitedOrangeCount, out List <int> limitedCardList, int giftCode = 0)
        {
            //orangeLib = 0;
            cardList        = null;
            limitedCardList = new List <int>();
            ConfigLotteryEntity configLotteryEntity = GetLotteryEntity((int)EnumLotteryType.Scouting, scoutingType);

            if (configLotteryEntity == null)
            {
                SystemlogMgr.Error("ScoutingTen", "no config lottery entity,scoutingType:" + scoutingType);
                return(null);
            }
            else
            {
                int cardCount   = 10;
                int orangeCount = 0;
                if (scoutingType == 1)
                {
                    cardList = LotteryItem(configLotteryEntity, cardCount, null);
                }
                else
                {
                    var scoutingorangeCount = _scoutingTenOrangeCount;
                    if (giftCode > 0)
                    {
                        var item = CacheFactory.ItemsdicCache.GetItem(giftCode);
                        if (item != null && item.ItemType == (int)EnumItemType.PlayerCard &&
                            item.PlayerCardLevel == (int)EnumPlayerCardLevel.Orange)
                        {
                            scoutingorangeCount--;
                        }
                    }

                    cardList = LotteryItem(configLotteryEntity, cardCount, scoutingorangeCount, orangeLib, lowLib, ref orangeCount, limitedOrangeCount, out limitedCardList);
                }
                if (cardList != null && cardList.Count > 0)
                {
                    var lotteryEntity = new LotteryEntity();
                    lotteryEntity.ItemString = string.Join(",", cardList);
                    lotteryEntity.Strength   = configLotteryEntity.Strength;
                    lotteryEntity.IsBinding  = configLotteryEntity.IsBinding;
                    return(lotteryEntity);
                }
                return(null);
            }
        }
Exemple #9
0
        LotteryEntity ScoutingLottery(int scoutingId, int count, int limitedOrangeCount, bool isFree)
        {
            bool isTen          = count == 10; //是否十连抽
            var  configScouting = CacheFactory.ScoutingCache.GetEntity(scoutingId);

            if (configScouting == null)
            {
                return(null);
            }
            var scoutingType = configScouting.Type;


            LotteryEntity lottery         = null;
            List <int>    cardList        = null;
            List <int>    limitedCardList = new List <int>();

            if (isTen)
            {
                if (!configScouting.HasTen)
                {
                    return(null);
                }
                lottery = CacheFactory.LotteryCache.ScoutingTen(scoutingType, configScouting.OrangeLib,
                                                                configScouting.LowLib, out cardList, limitedOrangeCount, out limitedCardList);
            }
            else
            {
                lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
            }
            if (lottery == null)
            {
                return(null);
            }
            int loopCount = 0;

            if (!isTen) //新手引导点券抽卡
            {
                var card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                if (isFree)
                {
                    scoutingType = 4; //免费抽卡卡库
                    loopCount    = 0;
                    WriteLog("while 1,start");
                    //免费抽卡不能抽到87以上能力值的卡
                    while (loopCount < 200 && card.PlayerKpi > 87)
                    {
                        loopCount++;
                        lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
                        card    = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                    }
                    WriteLog("while 1,loopCount:{0}", loopCount);
                }
                //友情点抽卡十次必得80-84橙卡
                if (scoutingType == 3)
                {
                    loopCount = 0;
                    WriteLog("while 2,start");
                    while (loopCount < 200 && !(card.PlayerKpi >= 80 && card.PlayerKpi <= 84))
                    {
                        loopCount++;
                        lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
                        card    = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                    }
                    WriteLog("while 2,loopCount:{0}", loopCount);
                }

                //金币抽卡十次必得80-84橙卡碎片
                if (scoutingType == 1)
                {
                    var playerItemcode = 0;
                    var playerItem     = new DicItemEntity();
                    if (IsContract(card))
                    {
                        playerItemcode = CacheFactory.ItemsdicCache.GetTheContractItemCode(card.ItemCode);
                        playerItem     = ItemsdicCache.Instance.GetItem(playerItemcode);
                    }
                    loopCount = 0;
                    WriteLog("while 3,start");
                    while (card.MallEffectType != (int)EnumMallEffectType.TheContract
                           ||
                           (IsContract(card) &&
                            !(playerItem.PlayerKpi >= 80 && playerItem.PlayerKpi <= 84)))
                    {
                        loopCount++;
                        lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
                        card    = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);

                        if (IsContract(card))
                        {
                            playerItemcode = CacheFactory.ItemsdicCache.GetTheContractItemCode(card.ItemCode);
                            playerItem     = ItemsdicCache.Instance.GetItem(playerItemcode);
                            if (playerItem == null)
                            {
                                WriteLog("playerItem is null,card.ItemCode={0},playerItemcode={1}", card.ItemCode, playerItemcode);
                            }
                        }
                        if (loopCount == 200)
                        {
                            break;
                        }
                    }
                    WriteLog("while 3,loopCount:{0}", loopCount);
                }

                if (configScouting.Type == 2 && scoutingType == 4)
                {
                    //第一次必得托雷斯
                    lottery.PrizeItemCode = 130153;
                    var itemstring = lottery.ItemString.Split(',');
                    itemstring[1] = lottery.PrizeItemCode.ToString();

                    lottery.ItemString = string.Join(",", itemstring);
                }
                //钻石抽卡十次必得84-87橙卡
                if (scoutingType == 2)
                {
                    loopCount = 0;
                    WriteLog("while 4,start");
                    while (!(card.PlayerKpi >= 84 && card.PlayerKpi <= 87))
                    {
                        loopCount++;
                        lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
                        card    = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                        if (loopCount == 200)
                        {
                            break;
                        }
                    }
                    WriteLog("while 4,loopCount:{0}", loopCount);
                }
                //C罗、梅西外每天只能出3张89以上的橙卡
                if (limitedOrangeCount >= 3)
                {
                    loopCount = 0;
                    WriteLog("while 5,start");
                    while (card.PlayerKpi >= 89 || card.LinkId == 30001 || card.LinkId == 30002)
                    {
                        loopCount++;
                        lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
                        card    = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                        if (loopCount == 200)
                        {
                            break;
                        }
                    }
                    WriteLog("while 5,loopCount:{0}", loopCount);
                }
                else
                {
                    if (card.PlayerKpi >= 89 && (card.LinkId != 30001 || card.LinkId != 30002))
                    {
                        limitedCardList = new List <int>();
                        limitedCardList.Add(card.ItemCode);
                    }
                }
            }
            return(lottery);
        }
Exemple #10
0
        /// <summary>
        /// 金条抽卡
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="scoutingId"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        private ScoutingLotteryResponse ScoutingLotteryGoldBar(Guid managerId, int scoutingId, int count)
        {
            bool isTen          = count == 10; //是否十连抽
            var  configScouting = CacheFactory.ScoutingCache.GetEntity(scoutingId);

            if (configScouting == null)
            {
                return(ResponseHelper.InvalidParameter <ScoutingLotteryResponse>());
            }
            var scoutingType = configScouting.Type;

            var scoutingManager = ScoutingGoldbarMgr.GetById(managerId);
            int prize           = 10;

            ActivityExThread.Instance.ScoutingHalfPrice(ref prize);
            //没有数据直接返回金条数量不足
            if (scoutingManager == null)
            {
                return(ResponseHelper.Create <ScoutingLotteryResponse>(MessageCode.ScoutingGoldBarNot));
            }
            var limitedOrangeCount = 0;

            // ScoutingRecordfordaysMgr.GetCountByTime(managerId, DateTime.Today, DateTime.Today.AddDays(1), scoutingId,
            //    ref limitedOrangeCount);

            LotteryEntity lottery         = null;
            List <int>    cardList        = null;
            List <int>    limitedCardList = new List <int>();

            if (isTen)
            {
                if (!configScouting.HasTen)
                {
                    return(ResponseHelper.InvalidParameter <ScoutingLotteryResponse>());
                }
                lottery = CacheFactory.LotteryCache.ScoutingTen(scoutingType, configScouting.OrangeLib,
                                                                configScouting.LowLib, out cardList, limitedOrangeCount, out limitedCardList);
                prize = prize * 8; //8折  10连
                scoutingManager.TenNumber++;
            }
            else
            {
                lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
                scoutingManager.ScoutingNumber++;
                if (scoutingManager.ScoutingNumber > 0 && scoutingManager.ScoutingNumber % 10 == 0)
                {
                    lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 98);
                }
            }
            if (scoutingManager.GoldBarNumber < prize)
            {
                return(ResponseHelper.Create <ScoutingLotteryResponse>(MessageCode.ScoutingGoldBarNot));
            }
            scoutingManager.GoldBarNumber = scoutingManager.GoldBarNumber - prize;
            if (lottery == null)
            {
                return(ResponseHelper.Create <ScoutingLotteryResponse>(MessageCode.ScoutingLotteryFail));
            }
            DateTime             curTime        = DateTime.Now;
            ScoutingRecordEntity scoutingRecord = new ScoutingRecordEntity();

            scoutingRecord.ManagerId = managerId;
            if (!isTen)
            {
                var card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                if (scoutingManager.ScoutingNumber > 0 && scoutingManager.ScoutingNumber % 10 == 0)
                //抽卡十次必得89及以上的橙卡,元老,红卡,或传奇碎片
                {
                    lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 98);
                    card    = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                }
                ////C罗、梅西外每天只能出3张89以上的橙卡
                //if (limitedOrangeCount >= 3)
                //{
                //    while (card.PlayerKpi >= 89 || card.LinkId == 30001 || card.LinkId == 30002)
                //    {
                //        lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
                //        card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                //    }
                //}
                //else
                //{
                //    if (card.PlayerKpi >= 89 && (card.LinkId != 30001 || card.LinkId != 30002))
                //    {
                //        limitedCardList = new List<int>();
                //        limitedCardList.Add(card.ItemCode);
                //    }
                //}
            }

            if (isTen)
            {
                bool isReplace = true;
                for (int i = 0; i < cardList.Count; i++)
                {
                    var itemcode = ActivityExThread.Instance.MidAutumnActivity(99, 0);
                    if (itemcode > 0)
                    {
                        cardList[i] = itemcode;
                    }
                    var card = ItemsdicCache.Instance.GetItem(cardList[i]);

                    if (card.ItemType == (int)EnumItemType.PlayerCard &&
                        card.PlayerCardLevel == (int)EnumPlayerCardLevel.Orange && card.PlayerKpi >= 89)
                    {
                        isReplace = false;
                    }
                    else if (card.ItemType == (int)EnumItemType.MallItem)
                    {
                        var player = CacheFactory.PlayersdicCache.GetPlayer(card.ImageId);
                        if (player != null && player.Capacity >= 89)
                        {
                            isReplace = false;
                        }
                    }
                    lottery.ItemString = string.Join(",", cardList);
                }
                if (isReplace)
                {
                    var pointlottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 98);
                    cardList[RandomHelper.GetInt32WithoutMax(0, cardList.Count)] = pointlottery.PrizeItemCode;
                }
                lottery.ItemString = string.Join(",", cardList);
            }
            scoutingRecord.ItemString   = lottery.ItemString;
            scoutingRecord.ItemCode     = lottery.PrizeItemCode;
            scoutingRecord.RowTime      = curTime;
            scoutingRecord.ScoutingType = configScouting.Type;
            scoutingRecord.Status       = 1;
            scoutingRecord.Strength     = lottery.Strength;

            scoutingManager.UpdateTiem = DateTime.Now;


            GoldbarRecordEntity goldBarRecord = new GoldbarRecordEntity();

            goldBarRecord.IsAdd         = false;
            goldBarRecord.ManagerId     = managerId;
            goldBarRecord.Number        = prize;
            goldBarRecord.OperationType = (int)EnumTransactionType.ScoutingLottery;
            goldBarRecord.RowTime       = DateTime.Now;


            #region 球探抽卡


            var response = MallCore.Instance.Scouting(managerId, DateTime.Now, scoutingRecord, scoutingManager,
                                                      isTen, cardList);

            GoldbarRecordMgr.Insert(goldBarRecord);

            #endregion

            if (response.Code == (int)MessageCode.Success)
            {
                foreach (var itemcode in limitedCardList)
                {
                    var scoutingRecordDays = new ScoutingRecordfordaysEntity();
                    scoutingRecordDays.ManagerId          = managerId;
                    scoutingRecordDays.CardItemCodeThen89 = itemcode;
                    scoutingRecordDays.RowTime            = DateTime.Now;
                    scoutingRecordDays.ScoutingType       = scoutingType;
                    ScoutingRecordfordaysMgr.Insert(scoutingRecordDays);
                }
                MailBuilder mail = null;
                if (isTen)
                {
                    foreach (var itemcode in cardList)
                    {
                        ActivityExThread.Instance.ScoutingDebris(managerId, itemcode, ref mail);
                    }
                }
                else
                {
                    ActivityExThread.Instance.ScoutingDebris(managerId, scoutingRecord.ItemCode, ref mail);
                }
                if (mail != null)
                {
                    mail.Save();
                }
                List <PopMessageEntity> popList = TaskHandler.Instance.ScoutingLottery(managerId, 1);
                response.Data.PopMsg              = popList;
                response.Data.LuckyCoinNumber     = 0;
                response.Data.GameCurrency        = 0;
                response.Data.NextGoldBarScouting = scoutingManager.ScoutingNumber == 0
                    ? 10
                    : 10 - scoutingManager.ScoutingNumber % 10;
                if (response.Data.AddReiki > 0)
                {
                    ManagerCore.Instance.DeleteCache(managerId);
                }
            }
            return(response);
        }
Exemple #11
0
        /// <summary>
        /// 球探抽卡
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="scoutingId">1金币抽卡,2点券抽卡,3友情点抽卡</param>
        /// <param name="hasTask"></param>
        /// <param name="count"></param>
        /// <param name="isAutoDec"></param>
        /// <returns></returns>
        public ScoutingLotteryResponse ScoutingLottery(Guid managerId, int scoutingId, bool hasTask, int count,
                                                       bool isAutoDec = false)
        {
            //金条抽卡
            if (scoutingId == 99)
            {
                return(ScoutingLotteryGoldBar(managerId, scoutingId, count));
            }
            if (scoutingId > 3)
            {
                return(ResponseHelper.InvalidParameter <ScoutingLotteryResponse>());
            }
            bool isTen          = count == 10; //是否十连抽
            var  configScouting = CacheFactory.ScoutingCache.GetEntity(scoutingId);

            if (configScouting == null)
            {
                return(ResponseHelper.InvalidParameter <ScoutingLotteryResponse>());
            }
            var scoutingType = configScouting.Type;

            var scoutingManager    = GetById(managerId);
            var limitedOrangeCount = 0;

            ScoutingRecordfordaysMgr.GetCountByTime(managerId, DateTime.Today, DateTime.Today.AddDays(1), scoutingId,
                                                    ref limitedOrangeCount);


            LotteryEntity lottery         = null;
            List <int>    cardList        = null;
            List <int>    limitedCardList = new List <int>();

            var activityRate = _europeScoutingRate;

            if (isTen)
            {
                if (!configScouting.HasTen)
                {
                    return(ResponseHelper.InvalidParameter <ScoutingLotteryResponse>());
                }
                lottery = CacheFactory.LotteryCache.ScoutingTen(scoutingType, configScouting.OrangeLib,
                                                                configScouting.LowLib, out cardList, limitedOrangeCount, out limitedCardList);
            }
            else
            {
                lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
            }
            if (lottery == null)
            {
                return(ResponseHelper.Create <ScoutingLotteryResponse>(MessageCode.ScoutingLotteryFail));
            }

            //是否免费
            bool                 isFree         = false;
            DateTime             curTime        = DateTime.Now;
            ScoutingRecordEntity scoutingRecord = new ScoutingRecordEntity();

            scoutingRecord.ManagerId = managerId;
            bool isAttendActiviyt = true;

            if (!isTen) //新手引导点券抽卡
            {
                var card = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                //获取经理信息
                var manager = ManagerCore.Instance.GetManagerExtra(managerId);
                if ((scoutingType == 1 && manager.CoinScouting > 0) ||
                    (scoutingType == 2 && manager.Scouting > 0) ||
                    (scoutingType == 3 && manager.FriendScouting > 0))
                {
                    isFree = true;
                    //免费抽卡不能抽到87以上能力值的卡
                    lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 4); //免费抽卡卡库
                    card    = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                }


                if (configScouting.Type == 2 && scoutingManager.PointLotteryCount == 0)
                {
                    //第一次必得托雷斯
                    lottery.PrizeItemCode = 130153;
                    var itemstring = lottery.ItemString.Split(',');
                    itemstring[1] = lottery.PrizeItemCode.ToString();

                    lottery.ItemString = string.Join(",", itemstring);
                    isAttendActiviyt   = false;
                }
                else if (scoutingType == 3 && scoutingManager.FriendLotteryCount % 10 == 0) //友情点抽卡十次必得80-84橙卡
                {
                    lottery          = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 5);
                    card             = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                    isAttendActiviyt = false;
                }
                else if (scoutingType == 1 && scoutingManager.CoinLotteryCount % 10 == 0) //金币抽卡十次必得80-84橙卡碎片
                {
                    lottery          = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 6);
                    card             = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                    isAttendActiviyt = false;
                }
                else if (scoutingType == 2 && scoutingManager.PointLotteryCount % 10 == 0) //钻石抽卡十次必得85-87橙卡
                {
                    lottery          = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 7);
                    card             = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                    isAttendActiviyt = false;
                }
                //C罗、梅西外每天只能出3张89以上的橙卡
                if (limitedOrangeCount >= 3)
                {
                    while (card.PlayerKpi >= 89 || card.LinkId == 30001 || card.LinkId == 30002)
                    {
                        lottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, scoutingType);
                        card    = ItemsdicCache.Instance.GetItem(lottery.PrizeItemCode);
                    }
                }
                else
                {
                    if (card.PlayerKpi >= 89 && (card.LinkId != 30001 || card.LinkId != 30002))
                    {
                        limitedCardList = new List <int>();
                        limitedCardList.Add(card.ItemCode);
                        isAttendActiviyt = false;
                    }
                }
            }
            if (isTen)
            {
                bool isReplace = true;
                switch (scoutingType)
                {
                case 1:     //金币
                    for (int i = 0; i < cardList.Count; i++)
                    {
                        var itemcode = ActivityExThread.Instance.SummerGiftBag(1);
                        if (itemcode > 0)
                        {
                            cardList[i] = itemcode;
                        }
                        else
                        {
                            itemcode = ActivityExThread.Instance.MidAutumnActivity(1, scoutingManager.SpecialItemCoin);
                            if (itemcode > 0)
                            {
                                scoutingManager.SpecialItemCoin++;
                                cardList[i] = itemcode;
                            }
                        }
                    }
                    var coinLottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 6);
                    cardList[RandomHelper.GetInt32WithoutMax(0, cardList.Count)] = coinLottery.PrizeItemCode;
                    lottery.ItemString = string.Join(",", cardList);
                    break;

                case 2:     //钻石
                    int number = 0;
                    for (int i = 0; i < cardList.Count; i++)
                    {
                        if (ActivityExThread.Instance.IsActivity(EnumActivityExEffectType.EquipmentDebris, 0, 0))
                        {
                            if (RandomHelper.CheckPercentage(activityRate))
                            {
                                if (number < 2)
                                {
                                    cardList[i] = ActivityExThread.Instance.GetRandomDebris();
                                    number++;
                                }
                            }
                        }
                        var itemcode = ActivityExThread.Instance.SummerGiftBag(2);
                        if (itemcode > 0)
                        {
                            cardList[i] = itemcode;
                        }
                        else
                        {
                            itemcode = ActivityExThread.Instance.MidAutumnActivity(2, scoutingManager.SpecialItemPoint);
                            if (itemcode > 0)
                            {
                                scoutingManager.SpecialItemPoint++;
                                cardList[i] = itemcode;
                            }
                        }
                        var cardLotteryId = ActivityExThread.Instance.ScoutingDebris1(2);
                        if (cardLotteryId > 0)
                        {
                            var code = CacheFactory.LotteryCache.LotteryByLib(cardLotteryId);
                            if (code > 0)
                            {
                                cardList[i] = code;
                            }
                        }
                        var card = ItemsdicCache.Instance.GetItem(cardList[i]);
                        if (card.ItemType == (int)EnumItemType.PlayerCard && card.PlayerCardLevel == (int)EnumPlayerCardLevel.Orange && card.PlayerKpi >= 84)
                        {
                            isReplace = false;
                        }
                    }
                    if (isReplace)
                    {
                        var pointlottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 7);
                        cardList[RandomHelper.GetInt32WithoutMax(0, cardList.Count)] = pointlottery.PrizeItemCode;
                    }
                    lottery.ItemString = string.Join(",", cardList);
                    break;

                case 3:     //友情点
                    for (int i = 0; i < cardList.Count; i++)
                    {
                        var itemcode = ActivityExThread.Instance.SummerGiftBag(3);
                        if (itemcode > 0)
                        {
                            cardList[i] = itemcode;
                        }
                        else
                        {
                            itemcode = ActivityExThread.Instance.MidAutumnActivity(3, scoutingManager.SpecialItemFriend);
                            if (itemcode > 0)
                            {
                                scoutingManager.SpecialItemFriend++;
                                cardList[i] = itemcode;
                            }
                        }
                        var card = ItemsdicCache.Instance.GetItem(cardList[i]);
                        if (card.ItemType == (int)EnumItemType.PlayerCard && card.PlayerCardLevel == (int)EnumPlayerCardLevel.Orange)
                        {
                            isReplace = false;
                        }
                    }
                    if (isReplace)
                    {
                        var friendlottery = CacheFactory.LotteryCache.LotteryFive(EnumLotteryType.Scouting, 5);
                        cardList[RandomHelper.GetInt32WithoutMax(0, cardList.Count)] = friendlottery.PrizeItemCode;
                    }
                    lottery.ItemString = string.Join(",", cardList);
                    break;
                }
            }
            else
            {
                if (scoutingType == 2 &&
                    ActivityExThread.Instance.IsActivity(EnumActivityExEffectType.EquipmentDebris, 0, 0))
                {
                    if (RandomHelper.CheckPercentage(activityRate))
                    {
                        if (isAttendActiviyt)
                        {
                            lottery.PrizeItemCode = ActivityExThread.Instance.GetRandomDebris();
                            var itemstring = lottery.ItemString.Split(',');
                            itemstring[1]      = lottery.PrizeItemCode.ToString();
                            lottery.ItemString = string.Join(",", itemstring);
                        }
                    }
                }
                if (isAttendActiviyt)
                {
                    var itemcode = ActivityExThread.Instance.MidAutumnActivity(scoutingType, scoutingManager.SpecialItemFriend);
                    if (itemcode > 0)
                    {
                        switch (scoutingType)
                        {
                        case 1:
                            scoutingManager.SpecialItemCoin++;
                            break;

                        case 2:
                            scoutingManager.SpecialItemPoint++;
                            break;

                        case 3:
                            scoutingManager.SpecialItemFriend++;
                            break;
                        }
                        lottery.PrizeItemCode = itemcode;
                        var itemstring = lottery.ItemString.Split(',');
                        itemstring[1]      = lottery.PrizeItemCode.ToString();
                        lottery.ItemString = string.Join(",", itemstring);
                    }
                }
            }
            scoutingRecord.ItemCode     = lottery.PrizeItemCode;
            scoutingRecord.ItemString   = lottery.ItemString;
            scoutingRecord.RowTime      = curTime;
            scoutingRecord.ScoutingType = configScouting.Type;
            scoutingRecord.Status       = 1;
            scoutingRecord.Strength     = lottery.Strength;
            //球探抽卡
            var response = MallCore.Instance.Scouting(managerId, configScouting.MallCode, curTime, scoutingRecord, isTen,
                                                      cardList, isAutoDec, isFree);

            if (response.Code == (int)MessageCode.Success)
            {
                if (scoutingManager != null) //记录玩家抽卡信息
                {
                    if (!isTen)
                    {
                        if (scoutingType == 1)
                        {
                            scoutingManager.CoinLotteryCount += 1;
                        }
                        else if (scoutingType == 2)
                        {
                            scoutingManager.PointLotteryCount += 1;
                        }
                        else
                        {
                            scoutingManager.FriendLotteryCount += 1;
                        }
                    }
                    else
                    {
                        if (scoutingType == 1)
                        {
                            scoutingManager.CoinTenLotteryCount += 1;
                        }
                        else if (scoutingType == 2)
                        {
                            scoutingManager.PointTenLotteryCount += 1;
                        }
                        else
                        {
                            scoutingManager.FriendTenLotteryCount += 1;
                        }
                    }
                    scoutingManager.UpdateTime = DateTime.Now;
                    ScoutingManagerMgr.Update(scoutingManager);
                    response.Data.NextPointScouting  = GetLotteryNeedCount(scoutingManager.PointLotteryCount);
                    response.Data.NextCoinScouting   = GetLotteryNeedCount(scoutingManager.CoinLotteryCount);
                    response.Data.NextFriendScouting = GetLotteryNeedCount(scoutingManager.FriendLotteryCount);
                }

                foreach (var itemcode in limitedCardList)
                {
                    var scoutingRecordDays = new ScoutingRecordfordaysEntity();
                    scoutingRecordDays.ManagerId          = managerId;
                    scoutingRecordDays.CardItemCodeThen89 = itemcode;
                    scoutingRecordDays.RowTime            = DateTime.Now;
                    scoutingRecordDays.ScoutingType       = scoutingType;
                    ScoutingRecordfordaysMgr.Insert(scoutingRecordDays);
                }

                int orangeCount     = 0;
                int purpleCount     = 0;
                int luckyCoinNumber = 0;
                //点球游戏币数量
                int         gameCurrency = 0;
                MailBuilder mail         = null;
                if (isTen)
                {
                    foreach (var card in cardList)
                    {
                        HandleOrangeCard(managerId, card, ref orangeCount, ref purpleCount, hasTask, ref luckyCoinNumber);
                        ActivityExThread.Instance.ScoutingDebris(managerId, card, ref mail);
                        if (response.Data.OlympicTheGoldMedalId == 0)
                        {
                            //奥运金牌掉落
                            response.Data.OlympicTheGoldMedalId = OlympicCore.Instance.GetOlympicTheGoldMedal(
                                managerId, (EnumOlympicGeyType)scoutingId);
                        }
                        //点球游戏币 20%概率 最多2个
                        if (RandomHelper.CheckPercentage(20) && gameCurrency < 2)
                        {
                            gameCurrency++;
                        }
                    }
                }
                else
                {
                    HandleOrangeCard(managerId, response.Data.ItemCode, ref orangeCount, ref purpleCount, hasTask, ref luckyCoinNumber);
                    ActivityExThread.Instance.ScoutingDebris(managerId, response.Data.ItemCode, ref mail);
                    //奥运金牌掉落
                    response.Data.OlympicTheGoldMedalId = OlympicCore.Instance.GetOlympicTheGoldMedal(
                        managerId, (EnumOlympicGeyType)scoutingId);
                    //点球游戏币 20%概率
                    if (RandomHelper.CheckPercentage(20))
                    {
                        gameCurrency++;
                    }
                }
                if (mail != null)
                {
                    mail.Save();
                }
                //如果有点球活动
                if (PenaltyKickCore.Instance.IsActivity)
                {
                    //成功增加数量
                    int successAddNumber = 0;
                    PenaltykickManagerMgr.AddSystemProduceGameCurrency(managerId, gameCurrency, ref successAddNumber);
                    gameCurrency = successAddNumber;
                }
                else
                {
                    gameCurrency = 0;
                }

                List <PopMessageEntity> popList = TaskHandler.Instance.ScoutingLottery(managerId, 1);
                response.Data.PopMsg          = popList;
                response.Data.LuckyCoinNumber = luckyCoinNumber;
                response.Data.GameCurrency    = gameCurrency;
                if (response.Data.AddReiki > 0)
                {
                    ManagerCore.Instance.DeleteCache(managerId);
                }
            }
            return(response);
        }