重复使用技能

This commit is contained in:
chenxi 2023-04-18 11:52:46 +08:00
parent caa8c1e801
commit ff6ebce393
5 changed files with 48 additions and 4 deletions

View File

@ -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

View File

@ -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

View File

@ -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添加时

View File

@ -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)

View File

@ -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()