From 10f6569d9573af66d20f7884a3f7080371c21b64 Mon Sep 17 00:00:00 2001 From: xiekaidong Date: Tue, 18 Apr 2023 22:26:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=82=89=E9=B8=BD=E6=8A=80=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../battle/controller/battle_controller.lua | 21 ++++++-- .../skill/battle_rogue_skill_handle.lua | 48 ++++++++----------- .../skill/battle_board_skill_entity.lua | 14 +++--- .../battle/team/battle_unit_entity.lua | 6 --- 4 files changed, 41 insertions(+), 48 deletions(-) diff --git a/lua/app/module/battle/controller/battle_controller.lua b/lua/app/module/battle/controller/battle_controller.lua index f14d3e38..898c2161 100644 --- a/lua/app/module/battle/controller/battle_controller.lua +++ b/lua/app/module/battle/controller/battle_controller.lua @@ -777,7 +777,22 @@ function BattleController:generateInstructions(skillEntity, elementType, lineCou end end - -- 其他的buff + -- + if skillEntity:getSkillAttackBeforeEffects() and elementType then + local effectList + for type, buffEntity in pairs(skillEntity:getSkillAttackBeforeEffects()) do + if not effectList then + effectList = {} + end + table.insert(effectList, buffEntity) + end + if effectList then + table.insert(self.instructions, { + name = BattleConst.INSTRUCTION_NAME.ADD_CUR_ROUND_ATTR, + effectList = effectList + }) + end + end end end @@ -1227,10 +1242,6 @@ function BattleController:addHeroAttr(attrName, value) end end -function BattleController:addSkillEffect(elementType, effects) - Logger.logHighlight("------addSkillEffect------ " .. elementType .. " " .. json.encode(effects)) -end - ---- 快照一次棋盘 function BattleController:snapshotBoard() local snapshot = {} diff --git a/lua/app/module/battle/skill/battle_rogue_skill_handle.lua b/lua/app/module/battle/skill/battle_rogue_skill_handle.lua index 0da147a6..27b728a6 100644 --- a/lua/app/module/battle/skill/battle_rogue_skill_handle.lua +++ b/lua/app/module/battle/skill/battle_rogue_skill_handle.lua @@ -1,5 +1,6 @@ local BattleConst = require "app/module/battle/battle_const" local SKILL_ROGUE_CFG = ConfigManager:getConfig("skill_rogue") +local BattleBuffEntity = require "app/userdata/battle/skill/battle_buff_entity" local BattleRogueSkillHandle = {} @@ -97,28 +98,6 @@ local _addAttr = function(skillInfo, battleData, battleController) end end -local _addSkillReleaseCount = function(skillInfo, battleData, battleController) - local elementType = skillInfo.skill_position - if not elementType or not skillInfo.parameter then - return - end - local count = skillInfo.parameter[1] - if not count then - return - end - - local unitEntity = battleController.battleData.atkTeam:getAllMembers()[elementType] - if not unitEntity then - return - end - - local skillEntity = battleData:getSkillEntityByElement(elementType) - if skillEntity then - local skillId = skillEntity:getSkillId() - unitEntity:addSkillExtraUseTimes(skillId, count) - end -end - local _addSkillEffectParams = function(skillInfo, battleData, battleController) local elementType = skillInfo.skill_position if not elementType or not skillInfo.parameter then @@ -196,8 +175,7 @@ local _addSkillRound = function(skillInfo, battleData, battleController) end local _addSkillEffect = function(skillInfo, battleData, battleController) - local elementType = skillInfo.skill_position - if not elementType or not skillInfo.effect then + if not skillInfo.effect then return end @@ -206,7 +184,19 @@ local _addSkillEffect = function(skillInfo, battleData, battleController) return end - battleController:addSkillEffect(elementType, effects) + local atkComp = battleController.atkTeam:getMainUnit() + local defComp = battleController.defTeam:getMainUnit() + for _, effect in ipairs(effects) do + local target = atkComp + if skillInfo.obj == BattleConst.SIDE_DEF then + target = defComp + end + local buffEntity = BattleBuffEntity:create() + buffEntity:init(effect, atkComp.unitEntity) + buffEntity:setTargetSide(skillInfo.obj) + + atkComp:takeEffect(buffEntity, target) + end end local _addSkillInInfluenceAtkp = function(skillInfo, battleData, battleController) @@ -230,7 +220,7 @@ local _addSkillInInfluenceAtkp = function(skillInfo, battleData, battleControlle end end -local _addSkillGeneralAttackEffect = function(skillInfo, battleData, battleController) +local _addSkillAttackBeforeEffect = function(skillInfo, battleData, battleController) local elementType = skillInfo.skill_position if not elementType or not skillInfo.effect then return @@ -248,7 +238,7 @@ local _addSkillGeneralAttackEffect = function(skillInfo, battleData, battleContr local entity = battleData:getSkillEntityByElement(elementType) if entity then for _, effect in ipairs(skillInfo.effect) do - entity:addGeneralAttackEffect(effect, unitEntity, skillInfo.obj) + entity:addSkillAttackBeforeEffect(effect, unitEntity, skillInfo.obj) end end end @@ -282,13 +272,13 @@ BattleRogueSkillHandle._effectOn = { [3] = _addLinkAtkp, -- 增加链接伤害 [4] = _canLinkAnyElement, -- 可与任何技能连接 [5] = _addAttr, -- 纯粹增加属性 - [6] = _addSkillReleaseCount, -- 技能增加释放次数 + -- [6] = _addSkillReleaseCount, -- 技能增加释放次数 [7] = _addSkillEffectParams, -- 增加技能效果参数(比如护盾的承伤增加) [8] = _addSkillRound, -- 增加技能效果持续回合(比如护盾从1回合改为2回合) [9] = _addSkillEffect, -- 获得技能效果 [10] = _changeElementType, -- 将场上随机几个元素变为某元素 [11] = _addSkillInInfluenceAtkp, -- 技能消除的增加伤害 - [12] = _addSkillGeneralAttackEffect, -- 技能链接中的每一个元素,都触发的技能效果 + [12] = _addSkillAttackBeforeEffect, -- 技能触发前的技能效果 [13] = _addSkillElementCountEffect, -- 技能链接中每一个元素累加的技能效果 } diff --git a/lua/app/userdata/battle/skill/battle_board_skill_entity.lua b/lua/app/userdata/battle/skill/battle_board_skill_entity.lua index ec281800..1299a0a8 100644 --- a/lua/app/userdata/battle/skill/battle_board_skill_entity.lua +++ b/lua/app/userdata/battle/skill/battle_board_skill_entity.lua @@ -7,7 +7,7 @@ function BattleBoardSkillEntity:ctor(skillId) self.addRange = {} self.linkEffectEntities = {} self.inInfluenceEntities = {} - self.generalAttackEffectEntities = {} + self.skillAttackBeforeEffectEntities = {} self.elementCountEffectEntities = {} self.cacheBuffEntities = {} @@ -226,22 +226,20 @@ function BattleBoardSkillEntity:addInInfluenceEffect(effect, unitEntity, targetS end end -function BattleBoardSkillEntity:addGeneralAttackEffect(effect, unitEntity, targetSide) - local buffEntity = self.generalAttackEffectEntities[effect.type] +function BattleBoardSkillEntity:addSkillAttackBeforeEffect(effect, unitEntity, targetSide) + local buffEntity = self.skillAttackBeforeEffectEntities[effect.type] if not buffEntity then buffEntity = BattleBuffEntity:create() buffEntity:init(effect, unitEntity) - self.generalAttackEffectEntities[effect.type] = buffEntity + self.skillAttackBeforeEffectEntities[effect.type] = buffEntity else - local buffNum = buffEntity:getEffectNum() buffEntity:init(effect, unitEntity) - buffEntity:setEffectNum(buffEntity:getEffectNum() + buffNum) end buffEntity:setTargetSide(targetSide) end -function BattleBoardSkillEntity:getGeneralAttackEffect() - return self.generalAttackEffectEntities +function BattleBoardSkillEntity:getSkillAttackBeforeEffects() + return self.skillAttackBeforeEffectEntities end function BattleBoardSkillEntity:addElementCountEffect(effect, unitEntity, targetSide) diff --git a/lua/app/userdata/battle/team/battle_unit_entity.lua b/lua/app/userdata/battle/team/battle_unit_entity.lua index 124a8b34..708f7be8 100644 --- a/lua/app/userdata/battle/team/battle_unit_entity.lua +++ b/lua/app/userdata/battle/team/battle_unit_entity.lua @@ -146,12 +146,6 @@ function BattleUnitEntity:changeActiveSkillId(originSkillId, tartgetSkillId) for _, skillEntity in ipairs(self.activeSkills) do if skillEntity:getSkillid() == originSkillId then skillEntity:changeSkillId(tartgetSkillId) - if self.skillExtraUseTimes then - local extraCount = self.skillExtraUseTimes[originSkillId] - if extraCount then - self.skillExtraUseTimes[tartgetSkillId] = extraCount - end - end break end end