diff --git a/lua/app/userdata/equip/equip_data.lua b/lua/app/userdata/equip/equip_data.lua index 0a677b7c..0b86c4a6 100644 --- a/lua/app/userdata/equip/equip_data.lua +++ b/lua/app/userdata/equip/equip_data.lua @@ -72,6 +72,20 @@ function EquipData:getEquip(id, part) return self.equips[id][part] end +-- 获取防具最小阶段 +function EquipData:getMinArmorStage(heroId) + local minStage = -1 + for name, part in pairs(GConst.EquipConst.PART_TYPE) do + if part ~= GConst.EquipConst.PART_TYPE.WEAPON then + local entity = self:getEquip(heroId, part) + if minStage == -1 or minStage > entity:getStage() then + minStage = entity:getStage() + end + end + end + return minStage >= 0 and minStage or 0 +end + -- 装备升级 function EquipData:onUpgradeEquip(heroId, part) local entity = self:getEquip(heroId, part) diff --git a/lua/app/userdata/equip/equip_entity.lua b/lua/app/userdata/equip/equip_entity.lua index 7fc320fd..a268ff23 100644 --- a/lua/app/userdata/equip/equip_entity.lua +++ b/lua/app/userdata/equip/equip_entity.lua @@ -210,6 +210,10 @@ end -- 获取部位已获得属性 function EquipEntity:getStageAttr() local stage = self:getStage() + if self:getPart() ~= GConst.EquipConst.PART_TYPE.WEAPON then + stage = DataManager.EquipData:getMinArmorStage(self:getHeroId()) + end + if self.curAttr == nil or #self.curAttr ~= stage then self.curAttr = {} for i = 1, stage do diff --git a/lua/app/userdata/hero/hero_entity.lua b/lua/app/userdata/hero/hero_entity.lua index 78a92945..50bb5916 100644 --- a/lua/app/userdata/hero/hero_entity.lua +++ b/lua/app/userdata/hero/hero_entity.lua @@ -79,18 +79,32 @@ function HeroEntity:updateEquipAttr() local hp,atk,normalHurt,skillHurt,critPer,critHurtPer,normalHurtPer,skillHurtPer,healPer = 0 + local addArmorAttrPer = true for partName, partType in pairs(GConst.EquipConst.PART_TYPE) do local equipEntity = self:getEquips(partType) if equipEntity then + -- 基础值 hp = equipEntity:getHp() atk = equipEntity:getAttack() normalHurt = equipEntity:getNormalHurt() skillHurt = equipEntity:getSkillHurt() - critPer = equipEntity:getCritPercent() - critHurtPer = equipEntity:getCritHurtPercent() - normalHurtPer = equipEntity:getNormalHurtPercent() - skillHurtPer = equipEntity:getSkillHurtPercent() - healPer = equipEntity:getHealPercent() + -- 属性值 + critPer = 0 + critHurtPer = 0 + normalHurtPer = 0 + skillHurtPer = 0 + healPer = 0 + if partType == GConst.EquipConst.PART_TYPE.WEAPON or addArmorAttrPer then + if partType ~= GConst.EquipConst.PART_TYPE.WEAPON then + addArmorAttrPer = false-- 防具的属性只只用计算一次 + end + + critPer = equipEntity:getCritPercent() + critHurtPer = equipEntity:getCritHurtPercent() + normalHurtPer = equipEntity:getNormalHurtPercent() + skillHurtPer = equipEntity:getSkillHurtPercent() + healPer = equipEntity:getHealPercent() + end self:addEquipAttrValue(GConst.MATCH_HP_NAME[self:getMatchType()], hp) self:addEquipAttrValue(GConst.MATCH_ATTACK_NAME[self:getMatchType()], atk)