Ejemplo n.º 1
0
        protected static void RemoveEffect(PlayerMobile pm, ThieveConsumableEffect effectType)
        {
            if (EffectTable.ContainsKey(pm))
            {
                EffectTable[pm].EffectTimer.Stop();
                EffectTable.Remove(pm);

                pm.SendLocalizedMessage(1095134);//The effects of the balm or lotion have worn off.

                if (effectType == ThieveConsumableEffect.BalmOfStrengthEffect || effectType == ThieveConsumableEffect.BalmOfSwiftnessEffect || effectType == ThieveConsumableEffect.BalmOfWisdomEffect)
                {
                    pm.RemoveStatMod("Balm");
                }
                else if (effectType == ThieveConsumableEffect.StoneSkinLotionEffect)
                {
                    List <ResistanceMod> list = pm.ResistanceMods;

                    for (int i = 0; i < list.Count; i++)
                    {
                        ResistanceMod curr = list[i];
                        if ((curr.Type == ResistanceType.Cold && curr.Offset == -5) || (curr.Type == ResistanceType.Fire && curr.Offset == -5) || (curr.Type == ResistanceType.Physical && curr.Offset == 30))
                        {
                            list.RemoveAt(i);
                            i--;
                        }
                    }
                }
            }
        }
        protected virtual void ApplyEffect(PlayerMobile pm)
        {
            if (m_EffectDuration == TimeSpan.Zero)
            {
                m_EffectDuration = TimeSpan.FromMinutes(30);
            }
            InternalTimer t = new InternalTimer(pm, m_EffectType, m_EffectDuration);

            t.Start();
            ThieveConsumableInfo info = new ThieveConsumableInfo(t, this.m_EffectType);

            if (EffectTable.ContainsKey(pm))
            {
                RemoveEffect(pm, EffectTable[pm].Effect);
            }
            EffectTable.Add(pm, info);
            this.Consume();
        }
Ejemplo n.º 3
0
        public List <PhotoListView> getRank()
        {
            List <RankView>      rkList    = new List <RankView>();
            List <EffectTable>   etList    = new List <EffectTable>();
            List <PhotoListView> photoList = new List <PhotoListView>();
            var dataAllList  = _RecordEffectrepository.GetAll();
            var photoAllList = _Photorepository.GetAll();
            var accountList  = dataAllList.GroupBy(p => p.Account).ToList();
            var testList     = dataAllList.OrderBy(p => p.Account).ToList();
            var aCount       = accountList.Count();

            for (int i = 0; i < aCount; i++)
            {
                var         account   = accountList[i].Key;
                double?     avgEffect = accountList[i].Average(p => p.Effect);
                EffectTable et        = new EffectTable();
                et.Account   = account;
                et.avgEffect = avgEffect;
                etList.Add(et);
            }
            var rankList = etList.OrderByDescending(p => p.avgEffect).ToList();
            int x        = 1;

            foreach (var item in rankList.Take(5).ToList())
            {
                RankView rv = new RankView();
                rv.Account = item.Account;
                rv.rank   += x;
                x++;
                rkList.Add(rv);
            }
            foreach (var item in rkList)
            {
                var           data = photoAllList.Where(p => p.Account == item.Account).ToList();
                var           name = _Userrepository.Get(p => p.Account == item.Account).Name;
                PhotoListView pv   = new PhotoListView();
                pv.Name      = name;
                pv.Rank      = item.rank;
                pv.photoList = data;
                photoList.Add(pv);
            }
            return(photoList);
        }
Ejemplo n.º 4
0
        public List <FameView> getFame()
        {
            List <FameView>     fvList      = new List <FameView>();
            List <User>         userAllList = _Userrepository.GetAll().ToList();
            List <RecordEffect> reAllList   = _RecordEffectrepository.GetAll().ToList();

            //會員各部位訓練成效陣列
            List <EffectTable> chestList    = new List <EffectTable>();
            List <EffectTable> backList     = new List <EffectTable>();
            List <EffectTable> shoulderList = new List <EffectTable>();
            List <EffectTable> bellyList    = new List <EffectTable>();
            List <EffectTable> footList     = new List <EffectTable>();
            List <EffectTable> twoList      = new List <EffectTable>();
            List <EffectTable> threeList    = new List <EffectTable>();

            List <EffectTable> chestList_Rank    = new List <EffectTable>();
            List <EffectTable> backList_Rank     = new List <EffectTable>();
            List <EffectTable> shoulderList_Rank = new List <EffectTable>();
            List <EffectTable> bellyList_Rank    = new List <EffectTable>();
            List <EffectTable> footList_Rank     = new List <EffectTable>();
            List <EffectTable> twoList_Rank      = new List <EffectTable>();
            List <EffectTable> threeList_Rank    = new List <EffectTable>();

            List <EffectTable> totalList_Rank = new List <EffectTable>();

            #region 取得會員各部位訓練成效
            for (int i = 0; i < userAllList.Count; i++)
            {
                EffectTable chest    = new EffectTable();
                EffectTable back     = new EffectTable();
                EffectTable shoulder = new EffectTable();
                EffectTable belly    = new EffectTable();
                EffectTable foot     = new EffectTable();
                EffectTable two      = new EffectTable();
                EffectTable three    = new EffectTable();
                var         AllList  = reAllList.Where(p => p.Account == userAllList[i].Account).ToList();

                //取得胸肌成效
                var chestEffect = AllList.Where(p => p.Part == "胸").Sum(p => p.Effect);
                chest.account   = userAllList[i].Account;
                chest.name      = userAllList[i].Name;
                chest.sumEffect = chestEffect;
                chestList.Add(chest);

                //取得背肌成效
                var backEffect = AllList.Where(p => p.Part == "背").Sum(p => p.Effect);
                back.account   = userAllList[i].Account;
                back.name      = userAllList[i].Name;
                back.sumEffect = backEffect;
                backList.Add(back);

                //取得肩肌成效
                var shoulderEffect = AllList.Where(p => p.Part == "肩").Sum(p => p.Effect);
                shoulder.account   = userAllList[i].Account;
                shoulder.name      = userAllList[i].Name;
                shoulder.sumEffect = shoulderEffect;
                shoulderList.Add(shoulder);

                //取得腹肌成效
                var bellyEffect = AllList.Where(p => p.Part == "腹").Sum(p => p.Effect);
                belly.account   = userAllList[i].Account;
                belly.name      = userAllList[i].Name;
                belly.sumEffect = bellyEffect;
                bellyList.Add(belly);

                //取得腿肌成效
                var footEffect = AllList.Where(p => p.Part == "腳").Sum(p => p.Effect);
                foot.account   = userAllList[i].Account;
                foot.name      = userAllList[i].Name;
                foot.sumEffect = footEffect;
                footList.Add(foot);

                //取得二頭肌成效
                var twoEffect = AllList.Where(p => p.Part == "肱二頭").Sum(p => p.Effect);
                two.account   = userAllList[i].Account;
                two.name      = userAllList[i].Name;
                two.sumEffect = twoEffect;
                twoList.Add(two);

                //取得三頭肌成效
                var threeEffect = AllList.Where(p => p.Part == "肱三頭").Sum(p => p.Effect);
                three.account   = userAllList[i].Account;
                three.name      = userAllList[i].Name;
                three.sumEffect = threeEffect;
                threeList.Add(three);
            }
            #endregion

            #region 計算各部位排名
            for (int i = 0; i < userAllList.Count; i++)
            {
                int chestRankCount    = 1;
                int backRankCount     = 1;
                int shoulderRankCount = 1;
                int bellyRankCount    = 1;
                int footRankCount     = 1;
                int twoRankCount      = 1;
                int threeRankCount    = 1;

                if (i == 0)
                {
                    chestList[i].rank    = 1;
                    backList[i].rank     = 1;
                    shoulderList[i].rank = 1;
                    bellyList[i].rank    = 1;
                    footList[i].rank     = 1;
                    twoList[i].rank      = 1;
                    threeList[i].rank    = 1;

                    chestList_Rank.Add(chestList[i]);
                    backList_Rank.Add(backList[i]);
                    shoulderList_Rank.Add(shoulderList[i]);
                    bellyList_Rank.Add(bellyList[i]);
                    footList_Rank.Add(footList[i]);
                    twoList_Rank.Add(twoList[i]);
                    threeList_Rank.Add(threeList[i]);
                }
                else
                {
                    for (int j = 0; j < chestList_Rank.Count; j++)
                    {
                        //胸
                        if (chestList[i].sumEffect > chestList_Rank[j].sumEffect)
                        {
                            chestList_Rank[j].rank += 1;
                        }
                        else
                        {
                            chestRankCount++;
                        }

                        //背
                        if (backList[i].sumEffect > backList_Rank[j].sumEffect)
                        {
                            backList_Rank[j].rank += 1;
                        }
                        else
                        {
                            backRankCount++;
                        }

                        //肩
                        if (shoulderList[i].sumEffect > shoulderList_Rank[j].sumEffect)
                        {
                            shoulderList_Rank[j].rank += 1;
                        }
                        else
                        {
                            shoulderRankCount++;
                        }

                        //腹
                        if (bellyList[i].sumEffect > bellyList_Rank[j].sumEffect)
                        {
                            bellyList_Rank[j].rank += 1;
                        }
                        else
                        {
                            bellyRankCount++;
                        }

                        //腳
                        if (footList[i].sumEffect > footList_Rank[j].sumEffect)
                        {
                            footList_Rank[j].rank += 1;
                        }
                        else
                        {
                            footRankCount++;
                        }

                        //二頭
                        if (twoList[i].sumEffect > twoList_Rank[j].sumEffect)
                        {
                            twoList_Rank[j].rank += 1;
                        }
                        else
                        {
                            twoRankCount++;
                        }

                        //三頭
                        if (threeList[i].sumEffect > threeList_Rank[j].sumEffect)
                        {
                            threeList_Rank[j].rank += 1;
                        }
                        else
                        {
                            threeRankCount++;
                        }
                    }

                    chestList[i].rank    = chestRankCount;
                    backList[i].rank     = backRankCount;
                    shoulderList[i].rank = shoulderRankCount;
                    bellyList[i].rank    = bellyRankCount;
                    footList[i].rank     = footRankCount;
                    twoList[i].rank      = twoRankCount;
                    threeList[i].rank    = threeRankCount;

                    chestList_Rank.Add(chestList[i]);
                    backList_Rank.Add(backList[i]);
                    shoulderList_Rank.Add(shoulderList[i]);
                    bellyList_Rank.Add(bellyList[i]);
                    footList_Rank.Add(footList[i]);
                    twoList_Rank.Add(twoList[i]);
                    threeList_Rank.Add(threeList[i]);
                }
            }
            #endregion

            #region 計算各排名加總平均
            List <EffectTable> sumRankTable = new List <EffectTable>();
            for (int i = 0; i < userAllList.Count; i++)
            {
                EffectTable data = new EffectTable();
                var         sum  = (chestList_Rank[i].rank +
                                    backList_Rank[i].rank +
                                    shoulderList_Rank[i].rank +
                                    bellyList_Rank[i].rank +
                                    footList_Rank[i].rank +
                                    twoList_Rank[i].rank +
                                    threeList_Rank[i].rank) / 7;
                data.account = userAllList[i].Account;
                data.name    = userAllList[i].Name;
                data.Url     = userAllList[i].Url;
                data.rank    = 0;
                data.sumRank = sum;
            }
            #endregion

            for (int i = 0; i < sumRankTable.Count; i++)
            {
                int RankCount = 1;
                if (i == 0)
                {
                    sumRankTable[i].rank = 1;
                    totalList_Rank.Add(sumRankTable[i]);
                }
                else
                {
                    for (int j = 0; j < totalList_Rank.Count; j++)
                    {
                        if (sumRankTable[i].sumRank > totalList_Rank[j].sumRank)
                        {
                            totalList_Rank[j].rank += 1;
                        }
                        else
                        {
                            RankCount++;
                        }
                    }
                    sumRankTable[i].rank = RankCount;
                    totalList_Rank.Add(sumRankTable[i]);
                }
            }

            foreach (var item in totalList_Rank.OrderBy(p => p.rank).Take(5).ToList())
            {
                FameView fv = new FameView();
                fv.name = item.name;
                fv.rank = item.rank;
                fv.Url  = item.Url;
                fvList.Add(fv);
            }
            return(fvList);
        }