波次之间回血
This commit is contained in:
parent
94b3c3ddc5
commit
32edfe2a3a
@ -37,6 +37,9 @@ BattleConst.ANIMATOR_HASH_NAME_NUMBER_MOVE_L = -526518883
|
|||||||
BattleConst.ANIMATOR_HASH_NAME_NUMBER_MOVE_R = 445827326
|
BattleConst.ANIMATOR_HASH_NAME_NUMBER_MOVE_R = 445827326
|
||||||
BattleConst.ANIMATOR_HASH_NAME_NUMBER_CRIT = -1734531349
|
BattleConst.ANIMATOR_HASH_NAME_NUMBER_CRIT = -1734531349
|
||||||
BattleConst.ANIMATOR_HASH_NAME_NUMBER_BUFF = 1364146828
|
BattleConst.ANIMATOR_HASH_NAME_NUMBER_BUFF = 1364146828
|
||||||
|
BattleConst.RECOVER_HP_COUNT = 3
|
||||||
|
BattleConst.RECOVER_HP_INTERVAL = 0.2
|
||||||
|
BattleConst.RECOVER_HP_PERCENT = 333
|
||||||
|
|
||||||
BattleConst.BATTLE_ROUND_STEP = {
|
BattleConst.BATTLE_ROUND_STEP = {
|
||||||
WAIT_BEGIN = 0, -- 等待开始
|
WAIT_BEGIN = 0, -- 等待开始
|
||||||
@ -79,13 +82,13 @@ BattleConst.UNIT_STATE = {
|
|||||||
IDLE = 1, -- 待机
|
IDLE = 1, -- 待机
|
||||||
NORMAL_ATTACK = 2, -- 普通攻击
|
NORMAL_ATTACK = 2, -- 普通攻击
|
||||||
SKILL_ATTACK = 3, -- 技能攻击
|
SKILL_ATTACK = 3, -- 技能攻击
|
||||||
HURT = 4, -- 受伤
|
DEAD = 4, -- 死亡
|
||||||
DEAD = 5, -- 死亡
|
ENTER_BATTLEFIELD = 5, -- 进入战场
|
||||||
ENTER_BATTLEFIELD = 6, -- 进入战场
|
SWITCH_IN = 6, -- 入场
|
||||||
SWITCH_IN = 7, -- 入场
|
SWITCH_OUT = 7, -- 离场
|
||||||
SWITCH_OUT = 8, -- 离场
|
ASSISTING_ATTACK = 8, -- 协助攻击
|
||||||
ASSISTING_ATTACK = 9, -- 协助攻击
|
WAIT = 9, -- 等待
|
||||||
WAIT = 10, -- 等待
|
RECOVER_HP_WAVE = 10, -- 波次之间回血
|
||||||
}
|
}
|
||||||
|
|
||||||
BattleConst.MATCH_DMG_ADDITION_NAME = {
|
BattleConst.MATCH_DMG_ADDITION_NAME = {
|
||||||
|
|||||||
@ -1,17 +1,5 @@
|
|||||||
local BattleConst = require "app/module/battle/battle_const"
|
|
||||||
local BattleUnitComp = require "app/module/battle/component/battle_unit_comp"
|
local BattleUnitComp = require "app/module/battle/component/battle_unit_comp"
|
||||||
|
|
||||||
local BattleHeroComp = class("BattleHeroComp", BattleUnitComp)
|
local BattleHeroComp = class("BattleHeroComp", BattleUnitComp)
|
||||||
|
|
||||||
local UNIT_STATE = BattleConst.UNIT_STATE
|
|
||||||
|
|
||||||
function BattleHeroComp:init()
|
|
||||||
self.battleMgr = CS.BF.BFMain.Instance.BattleMgr
|
|
||||||
end
|
|
||||||
|
|
||||||
function BattleHeroComp:initBase()
|
|
||||||
self.isDead = false
|
|
||||||
self.currState = UNIT_STATE.INIT
|
|
||||||
end
|
|
||||||
|
|
||||||
return BattleHeroComp
|
return BattleHeroComp
|
||||||
@ -1,16 +1,5 @@
|
|||||||
local BattleConst = require "app/module/battle/battle_const"
|
|
||||||
local BattleUnitComp = require "app/module/battle/component/battle_unit_comp"
|
local BattleUnitComp = require "app/module/battle/component/battle_unit_comp"
|
||||||
|
|
||||||
local BattleMonsterComp = class("BattleMonsterComp", BattleUnitComp)
|
local BattleMonsterComp = class("BattleMonsterComp", BattleUnitComp)
|
||||||
|
|
||||||
local UNIT_STATE = BattleConst.UNIT_STATE
|
|
||||||
|
|
||||||
function BattleMonsterComp:init()
|
|
||||||
end
|
|
||||||
|
|
||||||
function BattleMonsterComp:initBase()
|
|
||||||
self.isDead = false
|
|
||||||
self.currState = UNIT_STATE.INIT
|
|
||||||
end
|
|
||||||
|
|
||||||
return BattleMonsterComp
|
return BattleMonsterComp
|
||||||
@ -393,6 +393,8 @@ function BattleUnitComp:changeState(state)
|
|||||||
self:exitSwitchOutState()
|
self:exitSwitchOutState()
|
||||||
elseif self.currState == UNIT_STATE.WAIT then
|
elseif self.currState == UNIT_STATE.WAIT then
|
||||||
self:exitWaitState()
|
self:exitWaitState()
|
||||||
|
elseif self.currState == UNIT_STATE.RECOVER_HP_WAVE then
|
||||||
|
self:exitRecoverHpWaveState()
|
||||||
end
|
end
|
||||||
-- 进入目标状态
|
-- 进入目标状态
|
||||||
self.currState = state
|
self.currState = state
|
||||||
@ -416,6 +418,8 @@ function BattleUnitComp:changeState(state)
|
|||||||
self:enterSwitchOutState()
|
self:enterSwitchOutState()
|
||||||
elseif state == UNIT_STATE.WAIT then
|
elseif state == UNIT_STATE.WAIT then
|
||||||
self:enterWaitState()
|
self:enterWaitState()
|
||||||
|
elseif state == UNIT_STATE.RECOVER_HP_WAVE then
|
||||||
|
self:enterRecoverHpWaveState()
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
@ -563,6 +567,34 @@ function BattleUnitComp:updateHurt(dt)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function BattleUnitComp:enterRecoverHpWaveState()
|
||||||
|
self.recoverHpCount = BattleConst.RECOVER_HP_COUNT
|
||||||
|
self.recoverHpTime = BattleConst.RECOVER_HP_INTERVAL / 2
|
||||||
|
end
|
||||||
|
|
||||||
|
function BattleUnitComp:exitRecoverHpWaveState()
|
||||||
|
end
|
||||||
|
|
||||||
|
function BattleUnitComp:updateRecoverHpWaveState(dt)
|
||||||
|
if self.recoverHpCount <= 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
self.recoverHpTime = self.recoverHpTime - dt
|
||||||
|
if self.recoverHpTime < 0 then
|
||||||
|
self.recoverHpCount = self.recoverHpCount - 1
|
||||||
|
self.recoverHpTime = BattleConst.RECOVER_HP_INTERVAL
|
||||||
|
local healNum = BattleConst.RECOVER_HP_PERCENT * self.unitEntity:getMaxHp() // DEFAULT_FACTOR
|
||||||
|
self:takeDamageOrCure(self, healNum, EFFECT_TYPE.HEAL, 0)
|
||||||
|
if self.recoverHpCount <= 0 then
|
||||||
|
if self.finishRecoverHpCallback then
|
||||||
|
local callback = self.finishRecoverHpCallback
|
||||||
|
self.finishRecoverHpCallback = nil
|
||||||
|
callback()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function BattleUnitComp:enterWaitState()
|
function BattleUnitComp:enterWaitState()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1002,7 +1034,7 @@ function BattleUnitComp:removeEffect(buff, target)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleUnitComp:takeDamageOrCure(atker, buff, num, effectType, effectStatus)
|
function BattleUnitComp:takeDamageOrCure(atker, num, effectType, effectStatus)
|
||||||
if self:getIsClear() then
|
if self:getIsClear() then
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
@ -1087,6 +1119,14 @@ function BattleUnitComp:playDead(callback)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function BattleUnitComp:recoverHpOnWaveOver(callback)
|
||||||
|
self.finishRecoverHpCallback = callback
|
||||||
|
if not self:changeState(UNIT_STATE.RECOVER_HP_WAVE) then
|
||||||
|
self.finishRecoverHpCallback = nil
|
||||||
|
callback()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function BattleUnitComp:playEnterBattlefield(isBoss, callback)
|
function BattleUnitComp:playEnterBattlefield(isBoss, callback)
|
||||||
self.finishEnterBattlefieldCallback = callback
|
self.finishEnterBattlefieldCallback = callback
|
||||||
if isBoss then
|
if isBoss then
|
||||||
@ -1140,6 +1180,8 @@ function BattleUnitComp:tick(dt)
|
|||||||
self:updateSwitchOutState(dt)
|
self:updateSwitchOutState(dt)
|
||||||
elseif self.currState == UNIT_STATE.WAIT then
|
elseif self.currState == UNIT_STATE.WAIT then
|
||||||
self:updateWaitState(dt)
|
self:updateWaitState(dt)
|
||||||
|
elseif self.currState == UNIT_STATE.RECOVER_HP_WAVE then
|
||||||
|
self:updateRecoverHpWaveState(dt)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -46,16 +46,28 @@ function BattleControllerStage:_stageGenerateNextMonster()
|
|||||||
monsterComp:initWithEntity(modelId, unitEntity, self)
|
monsterComp:initWithEntity(modelId, unitEntity, self)
|
||||||
self.defTeam:addUnit(monsterComp, true)
|
self.defTeam:addUnit(monsterComp, true)
|
||||||
self.battleUI:refreshDefHp(unitEntity:getHp(), unitEntity:getHpPercent())
|
self.battleUI:refreshDefHp(unitEntity:getHp(), unitEntity:getHpPercent())
|
||||||
if isBoss then -- 如果是boss就跑过去
|
if not isBoss then -- 如果是boss就跑过去
|
||||||
self.atkTeam:playRunAction()
|
local count = 0
|
||||||
monsterComp:playEnterBattlefield(true, function()
|
local function onFinish()
|
||||||
|
count = count + 1
|
||||||
|
if count == 2 then
|
||||||
self.atkTeam:stopRunAction()
|
self.atkTeam:stopRunAction()
|
||||||
self:onRoundEnd(true)
|
self:onRoundEnd(true)
|
||||||
end)
|
end
|
||||||
|
end
|
||||||
|
self.atkTeam:playRunAction()
|
||||||
|
self.atkTeam:recoverHpOnWaveOver(onFinish)
|
||||||
|
monsterComp:playEnterBattlefield(true, onFinish)
|
||||||
else
|
else
|
||||||
monsterComp:playEnterBattlefield(false, function()
|
local count = 0
|
||||||
|
local function onFinish()
|
||||||
|
count = count + 1
|
||||||
|
if count == 2 then
|
||||||
self:onRoundEnd(true)
|
self:onRoundEnd(true)
|
||||||
end)
|
end
|
||||||
|
end
|
||||||
|
self.atkTeam:recoverHpOnWaveOver(onFinish)
|
||||||
|
monsterComp:playEnterBattlefield(false, onFinish)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|||||||
@ -18,7 +18,7 @@ local function _doDotWork(unitComp, buffEffect, buff)
|
|||||||
else
|
else
|
||||||
damage = -damage
|
damage = -damage
|
||||||
end
|
end
|
||||||
unitComp:takeDamageOrCure(buffEffect.sender, buff, damage, EFFECT_TYPE.DOT, hurtStatus)
|
unitComp:takeDamageOrCure(buffEffect.sender, damage, EFFECT_TYPE.DOT, hurtStatus)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function _doHotWork(unitComp, buffEffect, buff)
|
local function _doHotWork(unitComp, buffEffect, buff)
|
||||||
@ -26,7 +26,7 @@ local function _doHotWork(unitComp, buffEffect, buff)
|
|||||||
if cure < 0 then -- 加血不能是负数
|
if cure < 0 then -- 加血不能是负数
|
||||||
cure = 0
|
cure = 0
|
||||||
end
|
end
|
||||||
unitComp:takeDamageOrCure(buffEffect.sender, buff, cure, EFFECT_TYPE.HOT, hurtStatus)
|
unitComp:takeDamageOrCure(buffEffect.sender, cure, EFFECT_TYPE.HOT, hurtStatus)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleBuffHandle.doBuffWork(unitComp, buffEffect)
|
function BattleBuffHandle.doBuffWork(unitComp, buffEffect)
|
||||||
@ -76,7 +76,7 @@ local function _takeEffectDirectHurt(unitComp, buff, target, buffEffect)
|
|||||||
else
|
else
|
||||||
damage = -damage
|
damage = -damage
|
||||||
end
|
end
|
||||||
target:takeDamageOrCure(unitComp, buff, damage, EFFECT_TYPE.DIRECT, hurtStatus)
|
target:takeDamageOrCure(unitComp, damage, EFFECT_TYPE.DIRECT, hurtStatus)
|
||||||
return damage
|
return damage
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ local function _takeEffectDirectCure(unitComp, buff, target, buffEffect)
|
|||||||
if cure < 0 then -- 加血不能是负数
|
if cure < 0 then -- 加血不能是负数
|
||||||
cure = 0
|
cure = 0
|
||||||
end
|
end
|
||||||
target:takeDamageOrCure(unitComp, buff, cure, EFFECT_TYPE.HEAL, hurtStatus)
|
target:takeDamageOrCure(unitComp, cure, EFFECT_TYPE.HEAL, hurtStatus)
|
||||||
return cure
|
return cure
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -267,6 +267,14 @@ function BattleTeam:stopRunAction()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function BattleTeam:recoverHpOnWaveOver(callback)
|
||||||
|
if self.mainUnit then
|
||||||
|
self.mainUnit:recoverHpOnWaveOver(callback)
|
||||||
|
else
|
||||||
|
callback()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function BattleTeam:getCentralizedAttack()
|
function BattleTeam:getCentralizedAttack()
|
||||||
return self.centralizedAttack
|
return self.centralizedAttack
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user