新增消除类型
This commit is contained in:
parent
7ab28c41b4
commit
aae0f74648
@ -215,7 +215,7 @@ BattleConst.PASSIVE_EVENT = {
|
||||
HP_LOWER_THAN = 4, -- 血量低于X%
|
||||
USE_NORMAL_SKILL = 5, -- 使用普攻
|
||||
ACTIVE_SKILL_HIT = 6, -- 主动技能命中
|
||||
ON_NORAML_SKILL_OVER = 7, -- 普攻结束后
|
||||
ON_ACTIVE_SKILL_BEFORE = 7, -- 主动技能释放前
|
||||
ON_DEAD_BY_BURN = 8, -- 有敌人死于灼烧伤害时触发
|
||||
ON_DEAD_BY_SKILL = 9, -- 有敌人死于技能时触发
|
||||
ON_DEAD = 10, -- 死亡时
|
||||
@ -694,6 +694,8 @@ BattleConst.SKILL_TYPE = {
|
||||
RANDOM_KILL_ROW_OR_COLUMN = 8,
|
||||
KILL_MAX_ELEMENT_AND_HEAL = 9,
|
||||
KILL_ROW_AND_COLUMN = 10,
|
||||
ADD_SKILL_ENERGY = 11,
|
||||
CHANGE_ELEMENT_TYPE = 12,
|
||||
}
|
||||
|
||||
BattleConst.ATTACK_OVER_ACTIVE_SKILL_TYPE = {
|
||||
@ -704,6 +706,8 @@ BattleConst.ATTACK_OVER_ACTIVE_SKILL_TYPE = {
|
||||
[BattleConst.SKILL_TYPE.RANDOM_KILL_ROW_OR_COLUMN] = true,
|
||||
[BattleConst.SKILL_TYPE.KILL_MAX_ELEMENT_AND_HEAL] = true,
|
||||
[BattleConst.SKILL_TYPE.KILL_ROW_AND_COLUMN] = true,
|
||||
[BattleConst.SKILL_TYPE.ADD_SKILL_ENERGY] = true,
|
||||
[BattleConst.SKILL_TYPE.CHANGE_ELEMENT_TYPE] = true,
|
||||
}
|
||||
|
||||
BattleConst.SKILL_METHOD_TYPE = {
|
||||
|
||||
@ -363,7 +363,7 @@ function BattleUnitComp:useSkill(index, count, callback)
|
||||
self:playSwitchIn()
|
||||
else
|
||||
if count <= 0 then
|
||||
self:checkPassiveEvent(PASSIVE_EVENT.ON_NORAML_SKILL_OVER, self)
|
||||
self:checkPassiveEvent(PASSIVE_EVENT.ON_ACTIVE_SKILL_BEFORE, self)
|
||||
end
|
||||
if not self:changeState(UNIT_STATE.SKILL_ATTACK) then
|
||||
self.actionOverCallback = nil
|
||||
@ -520,7 +520,7 @@ function BattleUnitComp:updateSwitchInState(dt)
|
||||
if self.switchTime < 0 then
|
||||
if self.actionOverCallback then
|
||||
if self.currActiveSkill then
|
||||
self:checkPassiveEvent(PASSIVE_EVENT.ON_NORAML_SKILL_OVER, self)
|
||||
self:checkPassiveEvent(PASSIVE_EVENT.ON_ACTIVE_SKILL_BEFORE, self)
|
||||
if not self:changeState(UNIT_STATE.SKILL_ATTACK) then
|
||||
local callback = self.actionOverCallback
|
||||
self.actionOverCallback = nil
|
||||
@ -858,7 +858,7 @@ function BattleUnitComp:updateSkillAttack(dt)
|
||||
else
|
||||
self.currActiveSkill:startUse()
|
||||
self:doNextSkillAttack()
|
||||
self:checkPassiveEvent(PASSIVE_EVENT.ON_NORAML_SKILL_OVER, self)
|
||||
self:checkPassiveEvent(PASSIVE_EVENT.ON_ACTIVE_SKILL_BEFORE, self)
|
||||
end
|
||||
else -- 继续普攻
|
||||
self:doNextNormalAttack()
|
||||
|
||||
@ -1151,7 +1151,9 @@ function BattleController:onFillBoardOver(isRoundBeginCheck)
|
||||
if isRoundBeginCheck then
|
||||
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.BOARD_FILL_OVER)
|
||||
self:popBoardCacheSkill(function()
|
||||
self:enterElimination(true)
|
||||
self:generateSkill(function()
|
||||
self:enterElimination(true)
|
||||
end)
|
||||
end)
|
||||
else
|
||||
self:generateSkill(function()
|
||||
|
||||
@ -49,7 +49,7 @@ local function _checkActiveSkillHit(unitComp, skill, targetComp)
|
||||
return 1
|
||||
end
|
||||
|
||||
local function _checkOnNormalSkillOver(unitComp, skill, targetComp)
|
||||
local function _checkOnActiveSkillBefore(unitComp, skill, targetComp)
|
||||
return 1
|
||||
end
|
||||
|
||||
@ -71,7 +71,7 @@ BattlePassive.checkTrigger = {
|
||||
[PASSIVE_EVENT.HP_LOWER_THAN] = _checkhpLowerThan,
|
||||
[PASSIVE_EVENT.USE_NORMAL_SKILL] = _checkUseNormalSkill,
|
||||
[PASSIVE_EVENT.ACTIVE_SKILL_HIT] = _checkActiveSkillHit,
|
||||
[PASSIVE_EVENT.ON_NORAML_SKILL_OVER] = _checkOnNormalSkillOver,
|
||||
[PASSIVE_EVENT.ON_ACTIVE_SKILL_BEFORE] = _checkOnActiveSkillBefore,
|
||||
[PASSIVE_EVENT.ON_DEAD_BY_BURN] = _checkOnDeadByBurn,
|
||||
[PASSIVE_EVENT.ON_DEAD_BY_SKILL] = _checkOnDeadBySkill,
|
||||
[PASSIVE_EVENT.ON_DEAD] = _checkOnDead,
|
||||
|
||||
@ -324,6 +324,47 @@ local function _takeKillRowAndColumn(atkUnitComp, skillEntity, battleController)
|
||||
battleController:killRowOrColumn(infoList)
|
||||
end
|
||||
|
||||
local function _takeAddSkillEnergy(atkUnitComp, skillEntity, battleController)
|
||||
local params = skillEntity:getEliminateSkillParameter()
|
||||
if not params[2] or params[2] <= 0 then
|
||||
return
|
||||
end
|
||||
local elementType = params[1]
|
||||
local addEnergy = params[2]
|
||||
local elementTypeMap
|
||||
if elementType == BattleConst.ELEMENT_TYPE.NONE then
|
||||
local boardSkills
|
||||
local count = 0
|
||||
for eType, entity in pairs(battleController.battleData:getSkillEntities()) do
|
||||
if not boardSkills then
|
||||
boardSkills = {}
|
||||
end
|
||||
table.insert(boardSkills, eType)
|
||||
count = count + 1
|
||||
end
|
||||
if count <= 0 then
|
||||
return
|
||||
end
|
||||
elementType = boardSkills[math.random(1, count)]
|
||||
end
|
||||
|
||||
elementTypeMap = {[elementType] = addEnergy}
|
||||
battleController.battleData:addSkillEnergy(elementTypeMap)
|
||||
battleController.battleUI:refreshSkill()
|
||||
end
|
||||
|
||||
local function _takeChangeElementType(atkUnitComp, skillEntity, battleController)
|
||||
local params = skillEntity:getEliminateSkillParameter()
|
||||
if not params[2] or params[2] <= 0 then
|
||||
return
|
||||
end
|
||||
local elementType = params[1]
|
||||
local changeCount = params[2]
|
||||
|
||||
battleController:changeElementType(changeCount, elementType)
|
||||
end
|
||||
|
||||
|
||||
BattleBoardSkillHandle._activeBoardSkill = {
|
||||
[SKILL_TYPE.ELIMINATION] = _takeElimination,
|
||||
[SKILL_TYPE.CHANGE_AROUND] = _takeChangeAround,
|
||||
@ -338,6 +379,8 @@ BattleBoardSkillHandle._activeAttackOverSkill = {
|
||||
[SKILL_TYPE.RANDOM_KILL_ROW_OR_COLUMN] = _takeRandomKillRowOrColumn,
|
||||
[SKILL_TYPE.KILL_MAX_ELEMENT_AND_HEAL] = _takeKillMaxElementAndHeal,
|
||||
[SKILL_TYPE.KILL_ROW_AND_COLUMN] = _takeKillRowAndColumn,
|
||||
[SKILL_TYPE.ADD_SKILL_ENERGY] = _takeAddSkillEnergy,
|
||||
[SKILL_TYPE.CHANGE_ELEMENT_TYPE] = _takeChangeElementType,
|
||||
}
|
||||
|
||||
function BattleBoardSkillHandle.activeBoardSkill(posId, skillEntity, gridEntities, sequenceEntities, battleController)
|
||||
|
||||
@ -24,7 +24,7 @@ function BattleSkillEntity:init()
|
||||
end
|
||||
self:initSkillEffect()
|
||||
self:initEffectBlock()
|
||||
if self.skillInfo.effect or self.skillInfo.name_act then
|
||||
if self.skillInfo.effect or self.skillInfo.name_act or self.skillInfo.skill_type then
|
||||
self.available = true
|
||||
else
|
||||
self.available = false
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user