新增消除类型

This commit is contained in:
xiekaidong 2023-05-19 10:51:48 +08:00
parent 7ab28c41b4
commit aae0f74648
6 changed files with 57 additions and 8 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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