升级升星属性

This commit is contained in:
puxuan 2025-10-24 17:51:49 +08:00
parent 887400cb76
commit ec8344394d
4 changed files with 75 additions and 38 deletions

View File

@ -685,6 +685,14 @@ GConst.MATCH_ALL_ATKP_NAME = {
[5] = "attr_atkp_purple_all",
}
GConst.MATCH_ALL_HPP_NAME = {
[1] = "attr_hpp_red_all",
[2] = "attr_hpp_yellow_all",
[3] = "attr_hpp_green_all",
[4] = "attr_hpp_blue_all",
[5] = "attr_hpp_purple_all",
}
GConst.ALL_ATTR = {
ATTR_ATK_ALL = "atk_all", -- 全体英雄攻击(固定值)
ATTR_HP_ALL = "attr_hp_all", -- 全体英雄生命(固定值)

View File

@ -85,7 +85,7 @@ function GMToolUI:onRefresh()
end
end)
skipTutorialCheck:setVisible(LocalData:getTutorialSkip() > 0)
skipTutorialCheck:setActive(LocalData:getTutorialSkip() > 0)
skipTutorialBtn:addClickListener(function()
if LocalData:getTutorialSkip() == 0 then
LocalData:setTutorialSkip(1)
@ -95,7 +95,7 @@ function GMToolUI:onRefresh()
skipTutorialCheck:setActive(LocalData:getTutorialSkip() > 0)
end)
skipPopCheck:setVisible(LocalData:getTutorialSkip() > 0)
skipPopCheck:setActive(LocalData:getTutorialSkip() > 0)
skipPopBtn:addClickListener(function()
if LocalData:getFuncOpenPopSkip() == 0 then
LocalData:setFuncOpenPopSkip(1)
@ -207,7 +207,7 @@ function GMToolUI:updateTime()
-- if not DataManager.PlayerData or not DataManager.PlayerData:getServerOpenTime() then
-- return
-- end
if not DataManager.PlayerData then
if not DataManager.PlayerData or not Time.serverTimeZone then
return
end
local uiMap = self.root:genAllChildren()

View File

@ -342,13 +342,12 @@ function HeroData:setTalentAttr(attr)
end
function HeroData:calcAttr()
self.allAtkpAttr = {}
self.allAtkpAttr = {{}, {}, {}, {}, {}}
for heroId, attrs in pairs(self.allAtkpAttrByHero) do
-- self.baseAttrOriginal[ATTR_NAME.ATK_RED] = 0
local matchType = self.heroes[heroId]:getMatchType()
self.allAtkpAttr[matchType] = self.allAtkpAttr[matchType] or {}
for k,v in pairs(attrs) do
self.allAtkpAttr[matchType][k] = (self.allAtkpAttr[matchType][k] or 0) + v
for matchType, v in ipairs(self.allAtkpAttr) do
for k, vv in pairs(attrs) do
self.allAtkpAttr[matchType][k] = (self.allAtkpAttr[matchType][k] or 0) + vv
end
end
end

View File

@ -94,34 +94,45 @@ function HeroEntity:_updateAllAttr()
-- 同属性通用加成
self.allAttr[GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()]] = nil
self.allAttr[GConst.ALL_ATTR.ATTR_ATK_ALL] = nil
self.allAttr[GConst.ALL_ATTR.ATTR_HP_ALL] = nil
self.allAttr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] = nil
self.allAttr[GConst.ALL_ATTR.ATTR_CRIT_ALL] = nil
self.allAttr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] = nil
self.allAttr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] = nil
self.allAttr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] = nil
self.allAttr[GConst.ALL_ATTR.ATTR_ATKP_ALL] = nil
-- self.allAttr[GConst.ALL_ATTR.ATTR_ATK_ALL] = nil
-- self.allAttr[GConst.ALL_ATTR.ATTR_HP_ALL] = nil
-- self.allAttr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] = nil
-- self.allAttr[GConst.ALL_ATTR.ATTR_CRIT_ALL] = nil
-- self.allAttr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] = nil
-- self.allAttr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] = nil
-- self.allAttr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] = nil
-- self.allAttr[GConst.ALL_ATTR.ATTR_ATKP_ALL] = nil
-- self.allAttr[GConst.ALL_ATTR.ATTR_HPP_ALL] = nil
for _, v in pairs(GConst.ALL_ATTR) do
self.allAttr[v] = nil
end
-- 攻击力(百分比)
local atkType = GConst.MATCH_ATTACK_NAME[self:getMatchType()]
local allAtk = DataManager.HeroData:getAttrByMatchType(self:getMatchType(), GConst.ALL_ATTR.ATTR_ATK_ALL)
local atkpType = GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()]
local allFactorValue = DataManager.HeroData:getAttrByMatchType(self:getMatchType(), atkpType)
local factorValue = self.allAttr[GConst.MATCH_ATTACK_ADD_NAME[self:getMatchType()]] or 0
local allAtkP = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_ATKP_ALL)
-- 全局增加攻击力
local allAtk = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_ATK_ALL)
local atk = self.allAttr[atkType] + allAtk
-- 全局元素攻击力百分比加成
local allFactorValue = self:getGlobalAttrByType(GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()])
-- 个人攻击力百分比加成
local factorValue = self.allAttr[GConst.MATCH_ATTACK_ADD_NAME[self:getMatchType()]] or 0
-- 全局攻击力百分比加成
local allAtkP = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_ATKP_ALL)
self.allAttr[atkType] = math.floor(atk * (1 + (factorValue + allFactorValue + allAtkP) / GConst.DEFAULT_FACTOR) + 0.0000001)
self.allAttr[GConst.MATCH_ATTACK_ADD_NAME[self:getMatchType()]] = nil
-- 生命(百分比)
local hpType = GConst.MATCH_HP_NAME[self:getMatchType()]
local allHp = DataManager.HeroData:getAttrByMatchType(self:getMatchType(), GConst.ALL_ATTR.ATTR_HP_ALL)
-- local atkpType = GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()]
-- local allFactorValue = DataManager.HeroData:getAttrByMatchType(self:getMatchType(), atkpType)
local factorValue = self.allAttr[GConst.MATCH_HP_ADD_NAME[self:getMatchType()]] or 0
-- 全局增加生命
local allHp = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_HP_ALL)
local hp = self.allAttr[hpType] + allHp
self.allAttr[hpType] = math.floor(hp * (1 + factorValue / GConst.DEFAULT_FACTOR) + 0.0000001)
-- 全局元素生命百分比加成
local allFactorValue = self:getGlobalAttrByType(GConst.MATCH_ALL_HPP_NAME[self:getMatchType()])
-- 个人生命百分比加成
local factorValue = self.allAttr[GConst.MATCH_HP_ADD_NAME[self:getMatchType()]] or 0
-- 全局生命百分比加成
local allHpP = self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_HPP_ALL)
self.allAttr[hpType] = math.floor(hp * (1 + (factorValue + allFactorValue + allHpP) / GConst.DEFAULT_FACTOR) + 0.0000001)
self.allAttr[GConst.MATCH_HP_ADD_NAME[self:getMatchType()]] = nil
self.allAttr[ATTR_NAME.DMGDEC] = (self.allAttr[ATTR_NAME.DMGDEC] or 0) + self:getGlobalAttrByType(GConst.ALL_ATTR.ATTR_DMGDEC_ALL)
@ -148,8 +159,9 @@ end
-- 更新所有属性(自己)
function HeroEntity:_updateAllBaseAttr()
self:_updateBaseAttr()
self:_updateLvAttr()
self:_updateStarAttr()
self:_updateSkinAttr()
-- self:_updateSkinAttr()
self:_updateTotalAttr()
-- 处理全局属性
@ -158,15 +170,18 @@ function HeroEntity:_updateAllBaseAttr()
attr[GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()]] = self.allBaseAttr[GConst.MATCH_ALL_ATKP_NAME[self:getMatchType()]]
end
attr[GConst.ALL_ATTR.ATTR_ATK_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATK_ALL]
attr[GConst.ALL_ATTR.ATTR_HP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_HP_ALL]
attr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL]
attr[GConst.ALL_ATTR.ATTR_CRIT_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_CRIT_ALL]
attr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL]
attr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL]
attr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL]
attr[GConst.ALL_ATTR.ATTR_ATKP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATKP_ALL]
attr[GConst.ALL_ATTR.ATTR_ATK_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATK_ALL]
-- attr[GConst.ALL_ATTR.ATTR_ATK_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATK_ALL]
-- attr[GConst.ALL_ATTR.ATTR_HP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_HP_ALL]
-- attr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_DMGDEC_ALL]
-- attr[GConst.ALL_ATTR.ATTR_CRIT_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_CRIT_ALL]
-- attr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_CRIT_TIME_ALL]
-- attr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_NORMAL_HURTP_ALL]
-- attr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_SKILL_HURTP_ALL]
-- attr[GConst.ALL_ATTR.ATTR_ATKP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_ATKP_ALL]
-- attr[GConst.ALL_ATTR.ATTR_HPP_ALL] = self.allBaseAttr[GConst.ALL_ATTR.ATTR_HPP_ALL]
for _, v in pairs(GConst.ALL_ATTR) do
attr[v] = self.allBaseAttr[v]
end
DataManager.HeroData:setHeroAttr(self:getCfgId(), attr)
end
@ -182,7 +197,19 @@ function HeroEntity:_updateBaseAttr()
self.baseAttrOriginal[GConst.MATCH_ATTACK_NAME[self.config.position]] = self:getCfgAtk()
end
-- 更新皮肤属性
-- 更新升级属性
function HeroEntity:_updateLvAttr()
self.lvAttr = {}
local lvPoint = self:getLvAttrPointList()
for i = 1, #lvPoint do
if self.data.lv >= lvPoint[i] then
local attr = self:getLvAttrCfg(i)
self.lvAttr[attr.type] = (self.lvAttr[attr.type] or 0) + attr.num
end
end
end
-- 更新升星属性
function HeroEntity:_updateStarAttr()
self.starAttr = {}
for i = 1, self.data.star do
@ -244,6 +271,9 @@ function HeroEntity:_updateTotalAttr()
for k, v in pairs(self.baseAttrOriginal) do
self.allBaseAttr[k] = (self.allBaseAttr[k] or 0) + v
end
for k, v in pairs(self.lvAttr) do
self.allBaseAttr[k] = (self.allBaseAttr[k] or 0) + v
end
for k, v in pairs(self.starAttr) do
self.allBaseAttr[k] = (self.allBaseAttr[k] or 0) + v
end