/// <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)); }
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(); }
public EquipmentAttribute(EquipmentAttributeType type, float value) { this.type = type; this.value = value; }
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); }
public static RoleAttributeType ConvertEquipAttTypeToRoleAttrType(EquipmentAttributeType type) { return(RoleAttributeType.Speed); }