Example #1
0
File: APC.cs Project: abel/sinan
 public Apc(Variant config)
 {
     ID = config.GetStringOrDefault("_id");
     this.Name = config.GetStringOrDefault("Name");
     Name = config.GetStringOrDefault("Name");
     m_value = config.GetVariantOrDefault("Value");
     m_life = new PlayerProperty();
     if (m_value != null)
     {
         m_life.Add(m_value);
         this.Level = m_value.GetIntOrDefault("Level");
     }
     this.ApcType = FighterType.APC;
     Variant ui = config.GetVariantOrDefault("UI");
     if (ui != null)
     {
         this.Skin = ui.GetStringOrDefault("Skin");
         string apcType = ui.GetStringOrDefault("Type");
         if (apcType == "BB")
         {
             this.ApcType = FighterType.BB;
         }
         else if (apcType == "Boss")
         {
             this.ApcType = FighterType.Boss;
         }
     }
 }
Example #2
0
        public FightApc(int p, Apc apc)
        {
            this.P = p;
            this.ID = ObjectId.GenerateNewId().ToString(); //Guid.NewGuid().ToString("N");
            this.m_apc = apc;
            this.m_ai = apc.Value.GetValueOrDefault<IList>("AI");
            this.Name = apc.Name;
            this.Level = apc.Level;
            this.Skin = apc.Skin;
            PlayerProperty property = new PlayerProperty();
            property.Add(apc.Value);
            this.Life = property;
            m_hp = property.ShengMing;
            m_mp = property.MoFa;

            if (m_apc.Value != null)
            {
                this.Talk = NewTalk(m_apc.Value.GetVariantOrDefault("Start"));
            }
        }
Example #3
0
 /// <summary>
 /// 计算称号加成
 /// </summary>
 private void TitleAddition(PlayerProperty p)
 {
     if (m_title != null && m_title.Value != null)
     {
         //称号前缀
         string prefix = m_title.Value.GetStringOrDefault("Prefix");
         if (!string.IsNullOrEmpty(prefix))
         {
             GameConfig gs = GameConfigAccess.Instance.FindOneById(prefix);
             if (gs != null && gs.MainType == MainType.Title)
             {
                 p.Add(gs.Value);
             }
         }
         //称号后缀
         string suffix = m_title.Value.GetStringOrDefault("Suffix"); ;
         if (!string.IsNullOrEmpty(suffix))
         {
             GameConfig gs = GameConfigAccess.Instance.FindOneById(suffix);
             if (gs != null && gs.MainType == MainType.Title)
             {
                 p.Add(gs.Value);
             }
         }
     }
 }
Example #4
0
 /// <summary>
 /// 初始化(被动技能和称号)加成
 /// 训练/强健/沉稳/睿智/石盾/天人等(前缀称号/后缀称号)
 /// </summary>
 private void ResetSkillsAdd(PlayerProperty p)
 {
     if (m_skill != null && m_skill.Value != null)
     {
         foreach (var s in m_skill.Value)
         {
             GameConfig gs = GameConfigAccess.Instance.FindOneById(s.Key);
             if (gs == null) continue;
             if (gs.SubType == SkillSub.Addition || gs.SubType == SkillSub.AdditionJ)
             {
                 string level = s.Value.ToString();
                 p.Add(gs.Value[level] as Variant);
             }
         }
     }
     TitleAddition(p);
     InitFixBuffer();
     AddStar(p);
     AddDressing(p);
     m_sPro.Value = p.GetChange();
     m_sPro.Save();
 }
Example #5
0
        /// <summary>
        /// 初始化装备的加成..
        /// </summary>
        /// <returns></returns>
        private void ResetEquipsAdd(PlayerProperty p)
        {
            AddDressing(p);
            if (m_equips != null && m_equips.Value != null)
            {
                Dictionary<string, List<string>> dic = new Dictionary<string, List<string>>();

                for (int i = 0; i <= 9; i++)
                {
                    var v = m_equips.Value.GetVariantOrDefault("P" + i);
                    if (v == null)
                        continue;
                    string equiD = v.GetStringOrDefault("E");
                    if (string.IsNullOrEmpty(equiD))
                        continue;

                    Goods gs = GoodsAccess.Instance.FindOneById(equiD);
                    if (gs == null)
                        continue;

                    Variant info = gs.Value;
                    if (info == null)
                        continue;
                    //持久度
                    var st = info.GetVariantOrDefault("Stamina");
                    if (st != null && st.GetIntOrDefault("V") <= 0)
                        continue;

                    object life;
                    if (info.TryGetValueT("Life", out life))
                    {
                        p.Add(life as Variant);
                        //宝石加成..
                        BaoShiAddition(p, gs);
                    }

                    //装备附加属性
                    object affix;
                    if (info.TryGetValueT("Affix", out affix))
                    {
                        p.Add(affix as Variant);
                    }

                    //判断是否是套装
                    if (!info.ContainsKey("EntireID"))
                        continue;

                    string entrieid = info.GetStringOrDefault("EntireID");
                    if (string.IsNullOrEmpty(entrieid))
                        continue;
                    List<string> goods;
                    string goodsid = v.GetStringOrDefault("G");
                    if (dic.TryGetValue(entrieid, out goods))
                    {
                        //if (!goods.Contains(goodsid))
                        //{
                        //    goods.Add(goodsid);
                        //}

                        //趣游要求相同的ID也要计算套装数量
                        goods.Add(goodsid);
                    }
                    else
                    {
                        goods = new List<string>() { goodsid };
                        dic.Add(entrieid, goods);
                    }
                }
                //套装属性
                Entire(p, dic);
                m_ePro.Value = p.GetChange();
                m_ePro.Save();
            }
        }
Example #6
0
        /// <summary>
        /// 套装属性
        /// </summary>
        /// <param name="p"></param>
        /// <param name="dic"></param>
        private void Entire(PlayerProperty p, Dictionary<string, List<string>> dic)
        {
            foreach (var item in dic)
            {
                GameConfig gc = GameConfigAccess.Instance.FindOneById(item.Key);
                if (gc == null)
                    continue;

                Variant v = gc.Value;
                if (v == null)
                    continue;

                Variant life = v.GetVariantOrDefault("Life");
                if (life == null)
                    continue;

                //套装数量
                List<string> num = item.Value as List<string>;

                foreach (var o in life)
                {
                    int m = 0;
                    if (int.TryParse(o.Key, out m))
                    {
                        if (m > num.Count)
                            continue;
                        p.Add(o.Value as Variant);
                    }
                }

                //object o;
                //if (life.TryGetValueT(strs.Count.ToString(), out o))
                //{
                //    p.Add(o as Variant);
                //}
            }
        }
Example #7
0
        /// <summary>
        /// 星座加成
        /// </summary>
        private void AddStar(PlayerProperty p)
        {
            if (Star == null || Star.Value == null)
                return;

            GameConfig gc = GameConfigAccess.Instance.FindOneById("ST_00001");
            if (gc == null)
                return;

            Variant life = new Variant();
            for (int j = 1; j < 13; j++)
            {
                IList o = Star.Value.GetValue<IList>(j.ToString());
                if (o == null)
                    continue;
                //得到某个星座配置
                Variant v = gc.Value.GetVariantOrDefault(j.ToString());
                if (v == null)
                    continue;

                //得到要加的属性
                string name = v.GetStringOrDefault("Name");
                double num = 0;
                Variant c = v.GetVariantOrDefault("B");
                if (c != null)
                {
                    foreach (int i in o)
                    {
                        //num += PartAccess.Instance.StarForm(c.GetDoubleOrDefault("A"), i + 1, c.GetIntOrDefault("B"), c.GetDoubleOrDefault("C"));
                        //num * Math.Pow(v.GetDoubleOrDefault("A"), n * (n - 1) / 2)
                        //星阵属性加成
                        double b = c.GetDoubleOrDefault("B");
                        double a = c.GetDoubleOrDefault("A");
                        double n = (i + 1) * i / 2;
                        num += Convert.ToInt32(b * Math.Pow(a, n));
                    }
                }

                if (o.Count == 14)
                {
                    //激活所有的守护星额外加成
                    Variant other = v.GetVariantOrDefault("Life");
                    if (other != null)
                    {
                        foreach (var k in other)
                        {
                            life.SetOrInc(k.Key, Convert.ToDouble(k.Value));
                        }
                    }
                }
                if (name == "BaoJiShangHai")
                {
                    num = num / 100;
                }
                life.SetOrInc(name, num);
            }
            p.Add(life);
        }
Example #8
0
        /// <summary>
        /// 时装属性加成
        /// </summary>
        /// <param name="p"></param>
        private void AddDressing(PlayerProperty p)
        {
            Variant v = Wardrobe.Value;
            if (v == null)
                return;

            string sz = v.GetStringOrDefault("ShiZhuang");
            if (string.IsNullOrEmpty(sz))
                return;

            GameConfig gc = GameConfigAccess.Instance.FindOneById(sz);
            if (gc == null)
                return;

            Variant life = gc.Value.GetVariantOrDefault("Life");
            if (life == null)
                return;

            p.Add(life);
        }
Example #9
0
 /// <summary>
 /// 计算宝石加成
 /// </summary>
 /// <param name="p"></param>
 /// <param name="gs"></param>
 private static void BaoShiAddition(PlayerProperty p, Goods gs)
 {
     object baoShiInfo;
     if (gs.Value.TryGetValueT("BaoShiInfo", out baoShiInfo)
         && baoShiInfo is IDictionary<string, object>)
     {
         foreach (var x in baoShiInfo as IDictionary<string, object>)
         {
             if (x.Value != null)
             {
                 string bID = x.Value.ToString();
                 //"-1":无孔,"0"或"":无宝石
                 if (bID == string.Empty || bID == "0" || bID == "-1")
                 {
                     continue;
                 }
                 var bs = GameConfigAccess.Instance.FindOneById(bID);
                 p.Add(bs.Value.GetVariantOrDefault("Life"));
             }
         }
     }
 }
Example #10
0
 /// <summary>
 /// 创建玩家属性
 /// </summary>
 /// <returns></returns>
 public PlayerProperty CreateProperty()
 {
     PlayerProperty p = new PlayerProperty();
     p.Add(m_ePro.Value);
     p.Add(m_sPro.Value);
     PlayerProperty life = PropertyHelper.CreateProperty(RoleID, Level, p);
     return life;
 }