From 9e99bea561dae4d893a5e2e3b9d6e600fe148ee4 Mon Sep 17 00:00:00 2001 From: puxuan <413323644@qq.com> Date: Fri, 17 Oct 2025 16:12:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=B9=E6=AE=8A=E5=A4=A9=E8=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/battle_base_controller.lua | 10 ++++- lua/app/module/battle/team/battle_team.lua | 8 ++++ lua/app/ui/battle/battle_pause_ui.lua | 2 +- .../ui/battle/battle_skill_select_comp.lua | 5 ++- lua/app/userdata/battle/battle_base_data.lua | 1 + lua/app/userdata/talent/talent_data.lua | 39 +++++++++++++++++++ 6 files changed, 61 insertions(+), 4 deletions(-) diff --git a/lua/app/module/battle/controller/battle_base_controller.lua b/lua/app/module/battle/controller/battle_base_controller.lua index 78775813..7996ecfa 100644 --- a/lua/app/module/battle/controller/battle_base_controller.lua +++ b/lua/app/module/battle/controller/battle_base_controller.lua @@ -508,6 +508,7 @@ end function BattleBaseController:ctor() self.battleData = DataManager.BattleData + self.talentSelectCount = DataManager.TalentData:getSelectSkillBegin() end function BattleBaseController:init(params, snapshot) @@ -1149,6 +1150,12 @@ function BattleBaseController:enterElimination(needDelay) return end + if self.talentSelectCount > 0 then + self.talentSelectCount = self.talentSelectCount - 1 + self:tryShowSelectSkillComp(needDelay) + return + end + self.battleUI:hideAllBoardSfxs() -- 检查棋盘 @@ -3146,7 +3153,8 @@ function BattleBaseController:addBattleExp(exp) if not self.battleData or not exp then return end - self.battleData:addExp(exp) + local expAdd = DataManager.TalentData:getExpAdd() + self.battleData:addExp(exp * (1 + expAdd / BattleConst.DEFAULT_FACTOR)) end function BattleBaseController:addTaskProgress(fieldName, count) diff --git a/lua/app/module/battle/team/battle_team.lua b/lua/app/module/battle/team/battle_team.lua index 9d9bf905..3e7891ee 100644 --- a/lua/app/module/battle/team/battle_team.lua +++ b/lua/app/module/battle/team/battle_team.lua @@ -196,6 +196,7 @@ function BattleTeam:onRoundEnd() end self:doBuffWork() self:doFinalBuffWork() + self:doTalentHpRestore() self.comboCount = 0 if self:getMainUnit():isInitState() then return @@ -203,6 +204,13 @@ function BattleTeam:onRoundEnd() self:getMainUnit():changeState(BattleConst.UNIT_STATE.IDLE) end +function BattleTeam:doTalentHpRestore() + local hp = DataManager.TalentData:getHpRestore() + if hp > 0 then + self.mainUnit:takeDamageOrCure(self.mainUnit, hp // BattleConst.DEFAULT_FACTOR, BattleConst.EFFECT_TYPE.HEAL, 0) + end +end + function BattleTeam:addShield(buffEffect) if buffEffect then table.insert(self.shieldBuffList, buffEffect) diff --git a/lua/app/ui/battle/battle_pause_ui.lua b/lua/app/ui/battle/battle_pause_ui.lua index 63e9f281..4ac703ef 100644 --- a/lua/app/ui/battle/battle_pause_ui.lua +++ b/lua/app/ui/battle/battle_pause_ui.lua @@ -117,7 +117,7 @@ function BattlePauseUI:_refreshScrollRect() valueStr = ModuleManager.HeroManager:getSkillRogueDesc(skillId, value) end if EDITOR_MODE then - valueStr = valueStr .. skillId + valueStr = valueStr .. "\n" .. skillId end ModuleManager.TipsManager:showDescTips(valueStr, cell:getBaseObject()) end) diff --git a/lua/app/ui/battle/battle_skill_select_comp.lua b/lua/app/ui/battle/battle_skill_select_comp.lua index ad3c6f3d..20e12ee7 100644 --- a/lua/app/ui/battle/battle_skill_select_comp.lua +++ b/lua/app/ui/battle/battle_skill_select_comp.lua @@ -78,9 +78,10 @@ function BattleSkillSelectComp:refreshBtns() uiMap["battle_select_skill_comp.skill_node.diamond_btn.tx"]:setText(GFunc.getRewardNum(GFunc.getConstReward("refresh_skill_cost"))) local battleController = ModuleManager.BattleManager.battleController + local talentCount = DataManager.TalentData:getSkillRefreshCount() local cfgAdCount = GFunc.getConstIntValue("ad_refresh_skill") - local cfgRefreshCount = GFunc.getConstIntValue("diamond_refresh_skill") + cfgAdCount - local adCount = battleController.battleData:getADRefreshSkillCount() + local cfgRefreshCount = GFunc.getConstIntValue("diamond_refresh_skill") + cfgAdCount + talentCount + local adCount = battleController.battleData:getADRefreshSkillCount() + talentCount local refreshCount =battleController.battleData:getRefreshSkillCount() local showAdBtn = cfgAdCount > adCount uiMap["battle_select_skill_comp.skill_node.ad_btn"]:setActive(showAdBtn) diff --git a/lua/app/userdata/battle/battle_base_data.lua b/lua/app/userdata/battle/battle_base_data.lua index 631e3bd1..072d7888 100644 --- a/lua/app/userdata/battle/battle_base_data.lua +++ b/lua/app/userdata/battle/battle_base_data.lua @@ -711,6 +711,7 @@ function BattleBaseData:setMaxBattleLv(maxLv) end function BattleBaseData:addExp(exp) + exp = math.floor(exp + 0.0000001) self.curBattleExp = self.curBattleExp + exp while self.curBattleExp >= self.needBattleExp do if self.maxBattleLv then -- 超过最大等级后跳出 diff --git a/lua/app/userdata/talent/talent_data.lua b/lua/app/userdata/talent/talent_data.lua index 1fb3f05c..364dc2c3 100644 --- a/lua/app/userdata/talent/talent_data.lua +++ b/lua/app/userdata/talent/talent_data.lua @@ -3,6 +3,12 @@ local TalentData = class("TalentData", BaseData) local TalentCfg = ConfigManager:getConfig("talent") local PlayerExpCfg = ConfigManager:getConfig("player_exp") +local SKILL_REFESH_ID = 9 +local HP_RESTORE_ID = 10 +local SELECT_SKILL_ID = 11 +local ICON_ADD_ID = 12 +local EXP_ADD_ID = 16 + function TalentData:setDirty() self.data.isDirty = not self.data.isDirty end @@ -148,4 +154,37 @@ function TalentData:_updateAllAttr() return self.allAttr end --@endregion + +--@region 获取特殊天赋属性 +function TalentData:getSkillRefreshCount() + local lv = self:getLevels(SKILL_REFESH_ID) + local cfg = TalentCfg[SKILL_REFESH_ID] + return lv * (cfg.value or 0) +end + +function TalentData:getHpRestore() + local lv = self:getLevels(HP_RESTORE_ID) + local cfg = TalentCfg[HP_RESTORE_ID] + return lv * (cfg.value or 0) +end + +function TalentData:getSelectSkillBegin() + local lv = self:getLevels(SELECT_SKILL_ID) + local cfg = TalentCfg[SELECT_SKILL_ID] + return lv * (cfg.value or 0) +end + +function TalentData:getIconAdd() + local lv = self:getLevels(ICON_ADD_ID) + local cfg = TalentCfg[ICON_ADD_ID] + return lv * (cfg.value or 0) +end + +function TalentData:getExpAdd() + local lv = self:getLevels(EXP_ADD_ID) + lv = 1 + local cfg = TalentCfg[EXP_ADD_ID] + return lv * (cfg.value or 0) +end +--@endregion return TalentData \ No newline at end of file