重复使用技能
This commit is contained in:
parent
caa8c1e801
commit
ff6ebce393
@ -147,6 +147,7 @@ local BUFF_NAME = {
|
|||||||
EXP_TIME_ADD = "exp_time_add",
|
EXP_TIME_ADD = "exp_time_add",
|
||||||
CURED_ADD = "cured_add",
|
CURED_ADD = "cured_add",
|
||||||
ADD_SKILL = "add_skill",
|
ADD_SKILL = "add_skill",
|
||||||
|
SKILL_FIRE_TIMES = "skill_fire_times",
|
||||||
}
|
}
|
||||||
BattleConst.BUFF_NAME = BUFF_NAME
|
BattleConst.BUFF_NAME = BUFF_NAME
|
||||||
|
|
||||||
|
|||||||
@ -381,6 +381,7 @@ function BattleUnitComp:enterAssistingAttackState()
|
|||||||
self.isMove = false
|
self.isMove = false
|
||||||
self.currAttackKeyTime = 0.3
|
self.currAttackKeyTime = 0.3
|
||||||
local skill = self.unitEntity:getAssistingSkill()
|
local skill = self.unitEntity:getAssistingSkill()
|
||||||
|
skill:startUse()
|
||||||
local attackName = skill:getSkillAttackName()
|
local attackName = skill:getSkillAttackName()
|
||||||
self.currAttackDuration = self:getAnimationDuration(attackName)
|
self.currAttackDuration = self:getAnimationDuration(attackName)
|
||||||
self:playAnimation(attackName, false, false)
|
self:playAnimation(attackName, false, false)
|
||||||
@ -422,6 +423,7 @@ function BattleUnitComp:enterSkillAttackState()
|
|||||||
else
|
else
|
||||||
skill = self.currActiveSkill
|
skill = self.currActiveSkill
|
||||||
end
|
end
|
||||||
|
skill:startUse()
|
||||||
if skill:getMoveType() == BattleConst.SKILL_MOVE_TYPE.MOVE then
|
if skill:getMoveType() == BattleConst.SKILL_MOVE_TYPE.MOVE then
|
||||||
self.isMove = true
|
self.isMove = true
|
||||||
self:playAnimation(BattleConst.SPINE_ANIMATION_NAME.MOVE, true, false)
|
self:playAnimation(BattleConst.SPINE_ANIMATION_NAME.MOVE, true, false)
|
||||||
@ -487,12 +489,15 @@ function BattleUnitComp:updateSkillAttack(dt)
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
local currActiveSkill = nil
|
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
|
self.activeSkillIndex = self.activeSkillIndex + 1
|
||||||
local activeSkillCount = self.unitEntity:getActiveSkillCount()
|
local activeSkillCount = self.unitEntity:getActiveSkillCount()
|
||||||
while self.activeSkillIndex <= activeSkillCount do
|
while self.activeSkillIndex <= activeSkillCount do
|
||||||
currActiveSkill = self.unitEntity:getAvailableActiveSkill(self.activeSkillIndex)
|
currActiveSkill = self.unitEntity:getAvailableActiveSkill(self.activeSkillIndex)
|
||||||
if currActiveSkill then
|
if currActiveSkill then
|
||||||
|
currActiveSkill:startUse()
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
self.activeSkillIndex = self.activeSkillIndex + 1
|
self.activeSkillIndex = self.activeSkillIndex + 1
|
||||||
@ -585,6 +590,7 @@ function BattleUnitComp:enterNormalAttackState()
|
|||||||
self.attackTime = 0
|
self.attackTime = 0
|
||||||
self.currAttackKeyTime = 0.3
|
self.currAttackKeyTime = 0.3
|
||||||
local skill = self.unitEntity:getNormalSkill()
|
local skill = self.unitEntity:getNormalSkill()
|
||||||
|
skill:startUse()
|
||||||
if skill:getMoveType() == BattleConst.SKILL_MOVE_TYPE.MOVE then
|
if skill:getMoveType() == BattleConst.SKILL_MOVE_TYPE.MOVE then
|
||||||
self.isMove = true
|
self.isMove = true
|
||||||
self:playAnimation(BattleConst.SPINE_ANIMATION_NAME.MOVE, true, false)
|
self:playAnimation(BattleConst.SPINE_ANIMATION_NAME.MOVE, true, false)
|
||||||
@ -657,7 +663,7 @@ function BattleUnitComp:updateBuffState(buff, num)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function BattleUnitComp:onSkillTakeEffect(skill)
|
function BattleUnitComp:onSkillTakeEffect(skill)
|
||||||
skill:endSkill()
|
skill:endUse()
|
||||||
if skill == self.unitEntity:getNormalSkill() then
|
if skill == self.unitEntity:getNormalSkill() then
|
||||||
self.battleController:addBattleExp(self.side)
|
self.battleController:addBattleExp(self.side)
|
||||||
end
|
end
|
||||||
|
|||||||
@ -13,12 +13,24 @@ local function _addSkillOff(buffSender, target, buff, buffEffect)
|
|||||||
return 1
|
return 1
|
||||||
end
|
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 = {
|
local _handleOn = {
|
||||||
[BUFF_NAME.ADD_SKILL] = _addSkillOn, -- 添加技能
|
[BUFF_NAME.ADD_SKILL] = _addSkillOn, -- 添加技能
|
||||||
|
[BUFF_NAME.SKILL_FIRE_TIMES] = _skillFireTimesOn, -- 技能额外使用次数
|
||||||
}
|
}
|
||||||
|
|
||||||
local _handleOff = {
|
local _handleOff = {
|
||||||
[BUFF_NAME.ADD_SKILL] = _addSkillOff, -- 添加技能
|
[BUFF_NAME.ADD_SKILL] = _addSkillOff, -- 添加技能
|
||||||
|
[BUFF_NAME.SKILL_FIRE_TIMES] = _skillFireTimesOff, -- 技能额外使用次数
|
||||||
}
|
}
|
||||||
|
|
||||||
-- 特殊buff添加时
|
-- 特殊buff添加时
|
||||||
|
|||||||
@ -31,6 +31,14 @@ function BattleSkillEntity:initSkillEffect()
|
|||||||
end
|
end
|
||||||
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)
|
function BattleSkillEntity:cooldown(round)
|
||||||
if self.cd > 0 then
|
if self.cd > 0 then
|
||||||
self.cd = self.cd - (round or 1)
|
self.cd = self.cd - (round or 1)
|
||||||
@ -45,9 +53,12 @@ function BattleSkillEntity:getIsAvailable()
|
|||||||
return self.cd == 0
|
return self.cd == 0
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 技能完全释放完毕
|
-- 技能释放完毕
|
||||||
function BattleSkillEntity:endSkill()
|
function BattleSkillEntity:endUse()
|
||||||
self.cd = self.coolingRounds
|
self.cd = self.coolingRounds
|
||||||
|
if self.skillCanUseTimes then
|
||||||
|
self.skillCanUseTimes = self.skillCanUseTimes - 1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleSkillEntity:addSkillEffectParams(effect)
|
function BattleSkillEntity:addSkillEffectParams(effect)
|
||||||
|
|||||||
@ -182,6 +182,20 @@ function BattleUnitEntity:addMaxHp(num)
|
|||||||
self.team:addMaxHp(num)
|
self.team:addMaxHp(num)
|
||||||
end
|
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()
|
function BattleUnitEntity:onRoundEnd()
|
||||||
for k, v in ipairs(self.activeSkills) do
|
for k, v in ipairs(self.activeSkills) do
|
||||||
v:cooldown()
|
v:cooldown()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user