防具属性只用计算一次

This commit is contained in:
Fang 2023-07-25 19:59:01 +08:00
parent a5d2749ede
commit 6f18d573a9
3 changed files with 37 additions and 5 deletions

View File

@ -72,6 +72,20 @@ function EquipData:getEquip(id, part)
return self.equips[id][part] return self.equips[id][part]
end 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) function EquipData:onUpgradeEquip(heroId, part)
local entity = self:getEquip(heroId, part) local entity = self:getEquip(heroId, part)

View File

@ -210,6 +210,10 @@ end
-- 获取部位已获得属性 -- 获取部位已获得属性
function EquipEntity:getStageAttr() function EquipEntity:getStageAttr()
local stage = self:getStage() 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 if self.curAttr == nil or #self.curAttr ~= stage then
self.curAttr = {} self.curAttr = {}
for i = 1, stage do for i = 1, stage do

View File

@ -79,18 +79,32 @@ function HeroEntity:updateEquipAttr()
local hp,atk,normalHurt,skillHurt,critPer,critHurtPer,normalHurtPer,skillHurtPer,healPer = 0 local hp,atk,normalHurt,skillHurt,critPer,critHurtPer,normalHurtPer,skillHurtPer,healPer = 0
local addArmorAttrPer = true
for partName, partType in pairs(GConst.EquipConst.PART_TYPE) do for partName, partType in pairs(GConst.EquipConst.PART_TYPE) do
local equipEntity = self:getEquips(partType) local equipEntity = self:getEquips(partType)
if equipEntity then if equipEntity then
-- 基础值
hp = equipEntity:getHp() hp = equipEntity:getHp()
atk = equipEntity:getAttack() atk = equipEntity:getAttack()
normalHurt = equipEntity:getNormalHurt() normalHurt = equipEntity:getNormalHurt()
skillHurt = equipEntity:getSkillHurt() skillHurt = equipEntity:getSkillHurt()
critPer = equipEntity:getCritPercent() -- 属性值
critHurtPer = equipEntity:getCritHurtPercent() critPer = 0
normalHurtPer = equipEntity:getNormalHurtPercent() critHurtPer = 0
skillHurtPer = equipEntity:getSkillHurtPercent() normalHurtPer = 0
healPer = equipEntity:getHealPercent() 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_HP_NAME[self:getMatchType()], hp)
self:addEquipAttrValue(GConst.MATCH_ATTACK_NAME[self:getMatchType()], atk) self:addEquipAttrValue(GConst.MATCH_ATTACK_NAME[self:getMatchType()], atk)