From af3fc811ff2dffa31a22edbac4c9c15169668a01 Mon Sep 17 00:00:00 2001 From: xiekaidong Date: Fri, 12 May 2023 10:55:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=80=E8=83=BD=E6=9C=BA=E5=88=B6=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/module/battle/battle_const.lua | 4 ++-- .../skill/battle_board_skill_handle.lua | 23 ++++++++++++------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lua/app/module/battle/battle_const.lua b/lua/app/module/battle/battle_const.lua index 69064439..2760a9bc 100644 --- a/lua/app/module/battle/battle_const.lua +++ b/lua/app/module/battle/battle_const.lua @@ -691,7 +691,7 @@ BattleConst.SKILL_TYPE = { RANDOM_KILL_SKILL_GRID = 6, SHUFFLE_BOARD = 7, RANDOM_KILL_ROW_OR_COLUMN = 8, - RANDOM_KILL_ELEMENT_AND_HEAL = 9, + KILL_MAX_ELEMENT_AND_HEAL = 9, } BattleConst.ATTACK_OVER_ACTIVE_SKILL_TYPE = { @@ -700,7 +700,7 @@ BattleConst.ATTACK_OVER_ACTIVE_SKILL_TYPE = { [BattleConst.SKILL_TYPE.RANDOM_KILL_SKILL_GRID] = true, [BattleConst.SKILL_TYPE.SHUFFLE_BOARD] = true, [BattleConst.SKILL_TYPE.RANDOM_KILL_ROW_OR_COLUMN] = true, - [BattleConst.SKILL_TYPE.RANDOM_KILL_ELEMENT_AND_HEAL] = true, + [BattleConst.SKILL_TYPE.KILL_MAX_ELEMENT_AND_HEAL] = true, } BattleConst.SKILL_METHOD_TYPE = { diff --git a/lua/app/module/battle/skill/battle_board_skill_handle.lua b/lua/app/module/battle/skill/battle_board_skill_handle.lua index d4f61ced..e2464026 100644 --- a/lua/app/module/battle/skill/battle_board_skill_handle.lua +++ b/lua/app/module/battle/skill/battle_board_skill_handle.lua @@ -201,7 +201,7 @@ local function _takeRandomKillRowOrColumn(atkUnitComp, skillEntity, battleContro battleController:killRowOrColumn(infoList) end -local function _takeRandomKillElementAndHeal(atkUnitComp, skillEntity, battleController) +local function _takeKillMaxElementAndHeal(atkUnitComp, skillEntity, battleController) local battleData = battleController.battleData if not battleData or not battleData:getGridEnties() or not skillEntity:getEliminateSkillParameter() then return @@ -213,25 +213,32 @@ local function _takeRandomKillElementAndHeal(atkUnitComp, skillEntity, battleCon end local elementMap = {} - local list = {} + local elementCount = {} 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) + elementCount[elementType] = (elementCount[elementType] or 0) + 1 end end - if not list[1] then + local count = 0 + local maxElement + for elementType, num in pairs(elementCount) do + if num > count then + count = num + maxElement = elementType + end + end + + if not maxElement then return end - local elementType = list[math.random(1, #list)] - list = elementMap[elementType] - local count = #list + local list = elementMap[maxElement] local heal = count * effectNum * atkUnitComp.unitEntity:getAtk() // GConst.BattleConst.DEFAULT_FACTOR atkUnitComp:takeDamageOrCure(atkUnitComp, heal, BattleConst.EFFECT_TYPE.HEAL, 0) @@ -250,7 +257,7 @@ BattleBoardSkillHandle._activeAttackOverSkill = { [SKILL_TYPE.RANDOM_KILL_SKILL_GRID] = _takeRandomKillSkillGrid, [SKILL_TYPE.SHUFFLE_BOARD] = _takeShuffleBoard, [SKILL_TYPE.RANDOM_KILL_ROW_OR_COLUMN] = _takeRandomKillRowOrColumn, - [SKILL_TYPE.RANDOM_KILL_ELEMENT_AND_HEAL] = _takeRandomKillElementAndHeal, + [SKILL_TYPE.KILL_MAX_ELEMENT_AND_HEAL] = _takeKillMaxElementAndHeal, } function BattleBoardSkillHandle.activeBoardSkill(posId, skillEntity, gridEntities, sequenceEntities, battleController)