Пример #1
0
        /// <summary>
        /// 计算装备提升的属性(只是提升的属性,不包含英雄自身属性)
        /// </summary>
        public static Dictionary <RoleAttributeType, RoleAttribute> CalcPlayerAttributesDicByEquip(PlayerInfo info)
        {
            List <int> heroEquipIdList = new List <int>();

            heroEquipIdList.Add(info.armorID);
            heroEquipIdList.Add(info.accessoryID);
            heroEquipIdList.Add(info.weaponID);
            int id = 0;

            Equipment.Model.EquipmentInfo equipInfo;
            EquipmentAttribute            equipAttr;
            //存放所有的装备总属性
            Dictionary <EquipmentAttributeType, EquipmentAttribute> equipAllAttrDic = new Dictionary <EquipmentAttributeType, EquipmentAttribute>();

            for (int i = 0, count = heroEquipIdList.Count; i < count; i++)
            {
                id        = heroEquipIdList[i];
                equipInfo = EquipmentProxy.instance.GetEquipmentInfoByInstanceID(id);
                if (equipInfo != null)
                {
                    List <EquipmentAttribute> equipAttrList = equipInfo.EquipAttribute;
                    for (int j = 0, count2 = equipAttrList.Count; j < count2; j++)
                    {
                        equipAttr = equipAttrList[j];
                        EquipmentAttributeType type = equipAttr.type;
                        if (equipAllAttrDic.ContainsKey(type))
                        {
                            equipAllAttrDic[type].value = equipAllAttrDic[type].value + equipAttr.value;
                        }
                        else
                        {
                            equipAllAttrDic.Add(type, equipAttr);
                        }
                    }
                }
            }

            return(Equipment.EquipmentUtil.CalcRoleAttrByEquipAttr(CalcPlayerAttributesDic(info), equipAllAttrDic));
        }
Пример #2
0
        public EquipmentInfo(LuaTable equipmentInfoLuaTable)
        {
            this.instanceID = equipmentInfoLuaTable["id"].ToString().ToInt32();
            LuaTable equipDataLuaTable = (LuaTable)equipmentInfoLuaTable["data"];

            this.equipmentData = EquipmentData.GetEquipmentDataByID(equipDataLuaTable["id"].ToString().ToInt32());
            LogNullEquipData(equipDataLuaTable["id"].ToString().ToInt32());

            LuaTable attr1Table         = (LuaTable)equipmentInfoLuaTable.GetLuaFunction("GetTotalBaseAttr").Call(equipmentInfoLuaTable)[0];
            EquipmentAttributeType type = (EquipmentAttributeType)attr1Table["type"].ToString().ToInt32();

            _baseAttr = new EquipmentAttribute(type, attr1Table["value"].ToString().ToFloat());

            if (equipmentInfoLuaTable["randomAttrs"] != null)
            {
                _randomAttrs.Clear();
                LuaTable attr2Table = (LuaTable)equipmentInfoLuaTable["randomAttrs"];

                foreach (DictionaryEntry kvp in attr2Table.ToDictTable())
                {
                    LuaTable table = kvp.Value as LuaTable;
                    if (table != null)
                    {
                        type = (EquipmentAttributeType)table["type"].ToString().ToInt32();
                        _randomAttrs.Add(new EquipmentAttribute(type, table["value"].ToString().ToFloat()));
                    }
                }
            }
            _equipAttribute.Clear();
            _equipAttribute.Add(_baseAttr);
            for (int i = 0; i < _randomAttrs.Count; i++)
            {
                _equipAttribute.Add(_randomAttrs[i]);
            }
            this.ownerId = equipmentInfoLuaTable["ownerId"].ToString().ToInt32();
            this.star    = equipmentInfoLuaTable["star"].ToString().ToInt32();
        }
Пример #3
0
 public EquipmentAttribute(EquipmentAttributeType type, float value)
 {
     this.type  = type;
     this.value = value;
 }
Пример #4
0
        public static Dictionary <RoleAttributeType, RoleAttribute> CalcRoleAttrByEquipAttr(Dictionary <RoleAttributeType, RoleAttribute> roleAttrDic, Dictionary <EquipmentAttributeType, EquipmentAttribute> equipAttrDic)
        {
            Dictionary <RoleAttributeType, RoleAttribute> addAttrDic = new Dictionary <RoleAttributeType, RoleAttribute>();

            if (roleAttrDic == null || equipAttrDic == null)
            {
                return(addAttrDic);
            }

            List <EquipmentAttribute> equipAttrList = equipAttrDic.GetValues();
            EquipmentAttribute        equipAttr;

            for (int j = 0, count2 = equipAttrList.Count; j < count2; j++)
            {
                equipAttr = equipAttrList[j];
                EquipmentAttributeType type = equipAttr.type;
                switch (type)
                {
                case EquipmentAttributeType.HP:                                 //生命力
                    addAttrDic.Add(RoleAttributeType.HP, new RoleAttribute(RoleAttributeType.HP, equipAttr.value));
                    break;

                case EquipmentAttributeType.NormalAtk:                          //物理攻击
                    addAttrDic.Add(RoleAttributeType.NormalAtk, new RoleAttribute(RoleAttributeType.NormalAtk, equipAttr.value));
                    break;

                case EquipmentAttributeType.MagicAtk:                        //魔法攻击
                    addAttrDic.Add(RoleAttributeType.MagicAtk, new RoleAttribute(RoleAttributeType.MagicAtk, equipAttr.value));
                    break;

                case EquipmentAttributeType.Def:                               //防御
                    addAttrDic.Add(RoleAttributeType.Normal_Def, new RoleAttribute(RoleAttributeType.Normal_Def, equipAttr.value));
                    break;

                case EquipmentAttributeType.Speed:                              //行动力
                    addAttrDic.Add(RoleAttributeType.Speed, new RoleAttribute(RoleAttributeType.Speed, equipAttr.value));
                    break;

                case EquipmentAttributeType.Hit:                                 //命中
                    addAttrDic.Add(RoleAttributeType.Hit, new RoleAttribute(RoleAttributeType.Hit, equipAttr.value));
                    break;

                case EquipmentAttributeType.Dodge:                              //闪避
                    addAttrDic.Add(RoleAttributeType.Dodge, new RoleAttribute(RoleAttributeType.Dodge, equipAttr.value));
                    break;

                case EquipmentAttributeType.Crit:                                //暴击
                    addAttrDic.Add(RoleAttributeType.Crit, new RoleAttribute(RoleAttributeType.Crit, equipAttr.value));
                    break;

                case EquipmentAttributeType.AntiCrit:                           //抗暴击
                    addAttrDic.Add(RoleAttributeType.AntiCrit, new RoleAttribute(RoleAttributeType.AntiCrit, equipAttr.value));
                    break;

                case EquipmentAttributeType.Block:                               //格挡
                    addAttrDic.Add(RoleAttributeType.Block, new RoleAttribute(RoleAttributeType.Block, equipAttr.value));
                    break;

                case EquipmentAttributeType.AntiBlock:                          //破击(破格挡)
                    addAttrDic.Add(RoleAttributeType.AntiBlock, new RoleAttribute(RoleAttributeType.AntiBlock, equipAttr.value));
                    break;

                case EquipmentAttributeType.CounterAtk:                         //反击
                    addAttrDic.Add(RoleAttributeType.CounterAtk, new RoleAttribute(RoleAttributeType.CounterAtk, equipAttr.value));
                    break;

                case EquipmentAttributeType.CritHurtAdd:                        //暴击伤害
                    addAttrDic.Add(RoleAttributeType.CritHurtAdd, new RoleAttribute(RoleAttributeType.CritHurtAdd, equipAttr.value));
                    break;

                case EquipmentAttributeType.CritHurtDec:                        //暴击伤害减免
                    addAttrDic.Add(RoleAttributeType.CritHurtDec, new RoleAttribute(RoleAttributeType.CritHurtDec, equipAttr.value));
                    break;

                case EquipmentAttributeType.Armor:                              //破甲
                    addAttrDic.Add(RoleAttributeType.Armor, new RoleAttribute(RoleAttributeType.Armor, equipAttr.value));
                    break;

                case EquipmentAttributeType.DamageAdd:                         //伤害减免
                    addAttrDic.Add(RoleAttributeType.DamageAdd, new RoleAttribute(RoleAttributeType.DamageAdd, equipAttr.value));
                    break;

                case EquipmentAttributeType.DamageDec:                          //伤害加成
                    addAttrDic.Add(RoleAttributeType.DamageDec, new RoleAttribute(RoleAttributeType.DamageDec, equipAttr.value));
                    break;
                }
            }
            float value;

            for (int i = 0, count = equipAttrList.Count; i < count; i++)
            {
                equipAttr = equipAttrList[i];
                EquipmentAttributeType type = equipAttr.type;
                switch (type)
                {
                case EquipmentAttributeType.HPPercent:                          //生命百分比

                    value = (GetRoleAttrValue(roleAttrDic.GetValue(RoleAttributeType.HP)) + GetRoleAttrValue(addAttrDic.GetValue(RoleAttributeType.HP))) * equipAttr.value / 100f;
                    addAttrDic[RoleAttributeType.HP] = addRoleAttrValue(addAttrDic.GetValue(RoleAttributeType.HP), RoleAttributeType.HP, value);
                    break;

                case EquipmentAttributeType.NormalAtkPercent:                   //物理攻击百分比
                    value = (GetRoleAttrValue(roleAttrDic.GetValue(RoleAttributeType.NormalAtk)) + GetRoleAttrValue(addAttrDic.GetValue(RoleAttributeType.NormalAtk))) * equipAttr.value / 100f;
                    addAttrDic[RoleAttributeType.NormalAtk] = addRoleAttrValue(addAttrDic.GetValue(RoleAttributeType.NormalAtk), RoleAttributeType.NormalAtk, value);
                    break;

                case EquipmentAttributeType.MagicAtkPercent:                   //魔法攻击百分比
                    value = (GetRoleAttrValue(roleAttrDic.GetValue(RoleAttributeType.MagicAtk)) + GetRoleAttrValue(addAttrDic.GetValue(RoleAttributeType.MagicAtk))) * equipAttr.value / 100f;
                    addAttrDic[RoleAttributeType.MagicAtk] = addRoleAttrValue(addAttrDic.GetValue(RoleAttributeType.MagicAtk), RoleAttributeType.MagicAtk, value);
                    break;

                case EquipmentAttributeType.DefPercent:                        //防御百分比(双防)
                    value = (GetRoleAttrValue(roleAttrDic.GetValue(RoleAttributeType.Normal_Def)) + GetRoleAttrValue(addAttrDic.GetValue(RoleAttributeType.Normal_Def))) * equipAttr.value / 100f;
                    addAttrDic[RoleAttributeType.Normal_Def] = addRoleAttrValue(addAttrDic.GetValue(RoleAttributeType.Normal_Def), RoleAttributeType.Normal_Def, value);
                    break;
                }
            }
            return(addAttrDic);
        }
Пример #5
0
 public static RoleAttributeType ConvertEquipAttTypeToRoleAttrType(EquipmentAttributeType type)
 {
     return(RoleAttributeType.Speed);
 }