From ff6ebce3934317c3d896a66b4d4d1b63776f685d Mon Sep 17 00:00:00 2001 From: chenxi Date: Tue, 18 Apr 2023 11:52:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=A4=8D=E4=BD=BF=E7=94=A8=E6=8A=80?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/module/battle/battle_const.lua | 1 + .../module/battle/component/battle_unit_comp.lua | 10 ++++++++-- .../module/battle/helper/battle_buff_special.lua | 12 ++++++++++++ .../userdata/battle/skill/battle_skill_entity.lua | 15 +++++++++++++-- .../userdata/battle/team/battle_unit_entity.lua | 14 ++++++++++++++ 5 files changed, 48 insertions(+), 4 deletions(-) diff --git a/lua/app/module/battle/battle_const.lua b/lua/app/module/battle/battle_const.lua index 1f666bd8..fe4ac0df 100644 --- a/lua/app/module/battle/battle_const.lua +++ b/lua/app/module/battle/battle_const.lua @@ -147,6 +147,7 @@ local BUFF_NAME = { EXP_TIME_ADD = "exp_time_add", CURED_ADD = "cured_add", ADD_SKILL = "add_skill", + SKILL_FIRE_TIMES = "skill_fire_times", } BattleConst.BUFF_NAME = BUFF_NAME diff --git a/lua/app/module/battle/component/battle_unit_comp.lua b/lua/app/module/battle/component/battle_unit_comp.lua index a9e8d0dd..8dbfd6d2 100644 --- a/lua/app/module/battle/component/battle_unit_comp.lua +++ b/lua/app/module/battle/component/battle_unit_comp.lua @@ -381,6 +381,7 @@ function BattleUnitComp:enterAssistingAttackState() self.isMove = false self.currAttackKeyTime = 0.3 local skill = self.unitEntity:getAssistingSkill() + skill:startUse() local attackName = skill:getSkillAttackName() self.currAttackDuration = self:getAnimationDuration(attackName) self:playAnimation(attackName, false, false) @@ -422,6 +423,7 @@ function BattleUnitComp:enterSkillAttackState() else skill = self.currActiveSkill end + skill:startUse() if skill:getMoveType() == BattleConst.SKILL_MOVE_TYPE.MOVE then self.isMove = true self:playAnimation(BattleConst.SPINE_ANIMATION_NAME.MOVE, true, false) @@ -487,12 +489,15 @@ function BattleUnitComp:updateSkillAttack(dt) end else local currActiveSkill = nil - if self.activeSkillIndex then + if self.currActiveSkill:getSkillCanUseTimes() > 0 then -- 当前技能可以多次使用 + currActiveSkill = self.currActiveSkill + elseif self.activeSkillIndex then self.activeSkillIndex = self.activeSkillIndex + 1 local activeSkillCount = self.unitEntity:getActiveSkillCount() while self.activeSkillIndex <= activeSkillCount do currActiveSkill = self.unitEntity:getAvailableActiveSkill(self.activeSkillIndex) if currActiveSkill then + currActiveSkill:startUse() break end self.activeSkillIndex = self.activeSkillIndex + 1 @@ -585,6 +590,7 @@ function BattleUnitComp:enterNormalAttackState() self.attackTime = 0 self.currAttackKeyTime = 0.3 local skill = self.unitEntity:getNormalSkill() + skill:startUse() if skill:getMoveType() == BattleConst.SKILL_MOVE_TYPE.MOVE then self.isMove = true self:playAnimation(BattleConst.SPINE_ANIMATION_NAME.MOVE, true, false) @@ -657,7 +663,7 @@ function BattleUnitComp:updateBuffState(buff, num) end function BattleUnitComp:onSkillTakeEffect(skill) - skill:endSkill() + skill:endUse() if skill == self.unitEntity:getNormalSkill() then self.battleController:addBattleExp(self.side) end diff --git a/lua/app/module/battle/helper/battle_buff_special.lua b/lua/app/module/battle/helper/battle_buff_special.lua index fb8eeb2f..46189893 100644 --- a/lua/app/module/battle/helper/battle_buff_special.lua +++ b/lua/app/module/battle/helper/battle_buff_special.lua @@ -13,12 +13,24 @@ local function _addSkillOff(buffSender, target, buff, buffEffect) return 1 end +local function _skillFireTimesOn(unitComp, buff, target, buffEffect) + target.unitEntity:addSkillExtraUseTimes(buff:getEffectNum(), 1) + return 1 +end + +local function _skillFireTimesOff(buffSender, target, buff, buffEffect) + target.unitEntity:addSkillExtraUseTimes(buff:getEffectNum(), -1) + return 1 +end + local _handleOn = { [BUFF_NAME.ADD_SKILL] = _addSkillOn, -- 添加技能 + [BUFF_NAME.SKILL_FIRE_TIMES] = _skillFireTimesOn, -- 技能额外使用次数 } local _handleOff = { [BUFF_NAME.ADD_SKILL] = _addSkillOff, -- 添加技能 + [BUFF_NAME.SKILL_FIRE_TIMES] = _skillFireTimesOff, -- 技能额外使用次数 } -- 特殊buff添加时 diff --git a/lua/app/userdata/battle/skill/battle_skill_entity.lua b/lua/app/userdata/battle/skill/battle_skill_entity.lua index f657e0a1..847d52f9 100644 --- a/lua/app/userdata/battle/skill/battle_skill_entity.lua +++ b/lua/app/userdata/battle/skill/battle_skill_entity.lua @@ -31,6 +31,14 @@ function BattleSkillEntity:initSkillEffect() end end +function BattleSkillEntity:startUse() + self.skillCanUseTimes = self.unitEntity:getSkillExtraUseTimes(self.skillId) + 1 +end + +function BattleSkillEntity:getSkillCanUseTimes() + return self.skillCanUseTimes +end + function BattleSkillEntity:cooldown(round) if self.cd > 0 then self.cd = self.cd - (round or 1) @@ -45,9 +53,12 @@ function BattleSkillEntity:getIsAvailable() return self.cd == 0 end --- 技能完全释放完毕 -function BattleSkillEntity:endSkill() +-- 技能释放完毕 +function BattleSkillEntity:endUse() self.cd = self.coolingRounds + if self.skillCanUseTimes then + self.skillCanUseTimes = self.skillCanUseTimes - 1 + end end function BattleSkillEntity:addSkillEffectParams(effect) diff --git a/lua/app/userdata/battle/team/battle_unit_entity.lua b/lua/app/userdata/battle/team/battle_unit_entity.lua index 7358575c..df08bc57 100644 --- a/lua/app/userdata/battle/team/battle_unit_entity.lua +++ b/lua/app/userdata/battle/team/battle_unit_entity.lua @@ -182,6 +182,20 @@ function BattleUnitEntity:addMaxHp(num) self.team:addMaxHp(num) end +function BattleUnitEntity:addSkillExtraUseTimes(skillId, count) + if self.skillExtraUseTimes == nil then + self.skillExtraUseTimes = {} + end + self.skillExtraUseTimes[skillId] = (self.skillExtraUseTimes[skillId] or 0) + count +end + +function BattleUnitEntity:getSkillExtraUseTimes(skillId) + if self.skillExtraUseTimes == nil then + return 0 + end + return self.skillExtraUseTimes[skillId] or 0 +end + function BattleUnitEntity:onRoundEnd() for k, v in ipairs(self.activeSkills) do v:cooldown()