消灭随机1种颜色的棋子并回血技能机制
This commit is contained in:
parent
bea9daf0bc
commit
7a7bde728e
@ -688,6 +688,7 @@ BattleConst.SKILL_TYPE = {
|
|||||||
RANDOM_KILL_SKILL_GRID = 6,
|
RANDOM_KILL_SKILL_GRID = 6,
|
||||||
SHUFFLE_BOARD = 7,
|
SHUFFLE_BOARD = 7,
|
||||||
RANDOM_KILL_ROW_OR_COLUMN = 8,
|
RANDOM_KILL_ROW_OR_COLUMN = 8,
|
||||||
|
RANDOM_KILL_ELEMENT_AND_HEAL = 9,
|
||||||
}
|
}
|
||||||
|
|
||||||
BattleConst.ATTACK_OVER_ACTIVE_SKILL_TYPE = {
|
BattleConst.ATTACK_OVER_ACTIVE_SKILL_TYPE = {
|
||||||
@ -696,6 +697,7 @@ BattleConst.ATTACK_OVER_ACTIVE_SKILL_TYPE = {
|
|||||||
[BattleConst.SKILL_TYPE.RANDOM_KILL_SKILL_GRID] = true,
|
[BattleConst.SKILL_TYPE.RANDOM_KILL_SKILL_GRID] = true,
|
||||||
[BattleConst.SKILL_TYPE.SHUFFLE_BOARD] = true,
|
[BattleConst.SKILL_TYPE.SHUFFLE_BOARD] = true,
|
||||||
[BattleConst.SKILL_TYPE.RANDOM_KILL_ROW_OR_COLUMN] = true,
|
[BattleConst.SKILL_TYPE.RANDOM_KILL_ROW_OR_COLUMN] = true,
|
||||||
|
[BattleConst.SKILL_TYPE.RANDOM_KILL_ELEMENT_AND_HEAL] = true,
|
||||||
}
|
}
|
||||||
|
|
||||||
BattleConst.SKILL_METHOD_TYPE = {
|
BattleConst.SKILL_METHOD_TYPE = {
|
||||||
|
|||||||
@ -201,6 +201,43 @@ local function _takeRandomKillRowOrColumn(atkUnitComp, skillEntity, battleContro
|
|||||||
battleController:killRowOrColumn(infoList)
|
battleController:killRowOrColumn(infoList)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function _takeRandomKillElementAndHeal(atkUnitComp, skillEntity, battleController)
|
||||||
|
local battleData = battleController.battleData
|
||||||
|
if not battleData or not battleData:getGridEnties() or not skillEntity:getEliminateSkillParameter() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local effectNum = skillEntity:getEliminateSkillParameter()[1]
|
||||||
|
if not effectNum or effectNum <= 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local elementMap = {}
|
||||||
|
local list = {}
|
||||||
|
for posId, entity in pairs(battleData:getGridEnties()) do
|
||||||
|
if entity:isEmptyIdle() then
|
||||||
|
local elementType = entity:getElementType()
|
||||||
|
if not elementMap[elementType] then
|
||||||
|
elementMap[elementType] = {}
|
||||||
|
table.insert(list, elementType)
|
||||||
|
end
|
||||||
|
table.insert(elementMap[elementType], posId)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not list[1] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local elementType = list[math.random(1, #list)]
|
||||||
|
list = elementMap[elementType]
|
||||||
|
local count = #list
|
||||||
|
local heal = count * effectNum * atkUnitComp.unitEntity:getAtk() // GConst.BattleConst.DEFAULT_FACTOR
|
||||||
|
atkUnitComp:takeDamageOrCure(atkUnitComp, heal, BattleConst.EFFECT_TYPE.HEAL, 0)
|
||||||
|
|
||||||
|
battleController:killGrids(list)
|
||||||
|
end
|
||||||
|
|
||||||
BattleBoardSkillHandle._activeBoardSkill = {
|
BattleBoardSkillHandle._activeBoardSkill = {
|
||||||
[SKILL_TYPE.ELIMINATION] = _takeElimination,
|
[SKILL_TYPE.ELIMINATION] = _takeElimination,
|
||||||
[SKILL_TYPE.CHANGE_AROUND] = _takeChangeAround,
|
[SKILL_TYPE.CHANGE_AROUND] = _takeChangeAround,
|
||||||
@ -213,6 +250,7 @@ BattleBoardSkillHandle._activeAttackOverSkill = {
|
|||||||
[SKILL_TYPE.RANDOM_KILL_SKILL_GRID] = _takeRandomKillSkillGrid,
|
[SKILL_TYPE.RANDOM_KILL_SKILL_GRID] = _takeRandomKillSkillGrid,
|
||||||
[SKILL_TYPE.SHUFFLE_BOARD] = _takeShuffleBoard,
|
[SKILL_TYPE.SHUFFLE_BOARD] = _takeShuffleBoard,
|
||||||
[SKILL_TYPE.RANDOM_KILL_ROW_OR_COLUMN] = _takeRandomKillRowOrColumn,
|
[SKILL_TYPE.RANDOM_KILL_ROW_OR_COLUMN] = _takeRandomKillRowOrColumn,
|
||||||
|
[SKILL_TYPE.RANDOM_KILL_ELEMENT_AND_HEAL] = _takeRandomKillElementAndHeal,
|
||||||
}
|
}
|
||||||
|
|
||||||
function BattleBoardSkillHandle.activeBoardSkill(posId, skillEntity, gridEntities, sequenceEntities, battleController)
|
function BattleBoardSkillHandle.activeBoardSkill(posId, skillEntity, gridEntities, sequenceEntities, battleController)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user