diff --git a/lua/app/module/battle/battle_const.lua b/lua/app/module/battle/battle_const.lua index 7c93e698..3b1b09c4 100644 --- a/lua/app/module/battle/battle_const.lua +++ b/lua/app/module/battle/battle_const.lua @@ -102,6 +102,112 @@ BattleConst.EFFECT_TYPE = { HOT = 102, } +local BUFF_NAME = { + ATKP_ADD = "atkp_add", + ATKP_COLOR_ADD = "atkp_color_add", + ATKP_RED_ADD = "atkp_red_add", + ATKP_YELLOW_ADD = "atkp_yellow_add", + ATKP_GREEN_ADD = "atkp_green_add", + ATKP_BLUE_ADD = "atkp_blue_add", + ATKP_PURPLE_ADD = "atkp_purple_add", + DEC_DMG_RED_ADD = "dec_dmg_red_add", + DEC_DMG_YELLOW_ADD = "dec_dmg_yellow_add", + DEC_DMG_GREEN_ADD = "dec_dmg_green_add", + DEC_DMG_BLUE_ADD = "dec_dmg_blue_add", + DEC_DMG_PURPLE_ADD = "dec_dmg_purple_add", + DEC_DMG_ALL_ADD = "dec_dmg_all_add", + WEAKNESS_RED_ADD = "weakness_red_add", + WEAKNESS_YELLOW_ADD = "weakness_yellow_add", + WEAKNESS_GREEN_ADD = "weakness_green_add", + WEAKNESS_BLUE_ADD = "weakness_blue_add", + WEAKNESS_PURPLE_ADD = "weakness_purple_add", + WEAKNESS_ALL_ADD = "weakness_all_add", + DMG_ADDITION_RED_ADD = "dmg_addition_red_add", + DMG_ADDITION_YELLOW_ADD = "dmg_addition_yellow_add", + DMG_ADDITION_GREEN_ADD = "dmg_addition_green_add", + DMG_ADDITION_BLUE_ADD = "dmg_addition_blue_add", + DMG_ADDITION_PURPLE_ADD = "dmg_addition_purple_add", + DMG_ADDITION_ALL_ADD = "dmg_addition_all_add", + STUN = "stun", + NORMAL_ATTACK_DEC = "normal_attack_dec", + NORMAL_ATTACK_ADD = "normal_attack_add", + BLOCK = "block", + HPP_ADD = "hpp_add", + CRIT_ADD = "crit_add", + CRIT_TIME_ADD = "crit_time_add", + EXP_TIME_ADD = "exp_time_add", + CURED_ADD = "cured_add", + ADD_SKILL = "add_skill", +} +BattleConst.BUFF_NAME = BUFF_NAME + +local ATTR_NAME = { + ATK = "atk", + ATK_RED = "atk_red", + ATK_YELLOW = "atk_yellow", + ATK_GREEN = "atk_green", + ATK_BLUE = "atk_blue", + ATK_PURPLE = "atk_purple", + DEC_DMG_RED = "dec_dmg_red", + DEC_DMG_YELLOW = "dec_dmg_yellow", + DEC_DMG_GREEN = "dec_dmg_green", + DEC_DMG_BLUE = "dec_dmg_blue", + DEC_DMG_PURPLE = "dec_dmg_purple", + DEC_DMG_ALL = "dec_dmg_all", + WEAKNESS_RED = "weakness_red", + WEAKNESS_YELLOW = "weakness_yellow", + WEAKNESS_GREEN = "weakness_green", + WEAKNESS_BLUE = "weakness_blue", + WEAKNESS_PURPLE = "weakness_purple", + WEAKNESS_ALL = "weakness_all", + DMG_ADDITION_RED = "dmg_addition_red", + DMG_ADDITION_YELLOW = "dmg_addition_yellow", + DMG_ADDITION_GREEN = "dmg_addition_green", + DMG_ADDITION_BLUE = "dmg_addition_blue", + DMG_ADDITION_PURPLE = "dmg_addition_purple", + DMG_ADDITION_ALL = "dmg_addition_all", + NORMAL_ATTACK_COUNT = "normal_attack_count", + BLOCK = "block", + CRIT = "crit", + CRIT_TIME = "crit_time", + EXP_TIME = "exp_time", + CURE_ADDITION = "cure_addition", +} +BattleConst.ATTR_NAME = ATTR_NAME + +-- buff->{属性名,是否按百分比乘法加成} +BattleConst.BUFF_NAME_TO_ATTR = { + [BUFF_NAME.ATKP_ADD] = {ATTR_NAME.ATK, true}, + [BUFF_NAME.ATKP_RED_ADD] = {ATTR_NAME.ATK_RED, true}, + [BUFF_NAME.ATKP_YELLOW_ADD] = {ATTR_NAME.ATK_YELLOW, true}, + [BUFF_NAME.ATKP_GREEN_ADD] = {ATTR_NAME.ATK_GREEN, true}, + [BUFF_NAME.ATKP_BLUE_ADD] = {ATTR_NAME.ATK_BLUE, true}, + [BUFF_NAME.ATKP_PURPLE_ADD] = {ATTR_NAME.ATK_PURPLE, true}, + [BUFF_NAME.DEC_DMG_RED_ADD] = {ATTR_NAME.DEC_DMG_RED, false}, + [BUFF_NAME.DEC_DMG_YELLOW_ADD] = {ATTR_NAME.DEC_DMG_YELLOW, false}, + [BUFF_NAME.DEC_DMG_GREEN_ADD] = {ATTR_NAME.DEC_DMG_GREEN, false}, + [BUFF_NAME.DEC_DMG_BLUE_ADD] = {ATTR_NAME.DEC_DMG_BLUE, false}, + [BUFF_NAME.DEC_DMG_PURPLE_ADD] = {ATTR_NAME.DEC_DMG_PURPLE, false}, + [BUFF_NAME.DEC_DMG_ALL_ADD] = {ATTR_NAME.DEC_DMG_ALL, false}, + [BUFF_NAME.WEAKNESS_RED_ADD] = {ATTR_NAME.WEAKNESS_RED, false}, + [BUFF_NAME.WEAKNESS_YELLOW_ADD] = {ATTR_NAME.WEAKNESS_YELLOW, false}, + [BUFF_NAME.WEAKNESS_GREEN_ADD] = {ATTR_NAME.WEAKNESS_GREEN, false}, + [BUFF_NAME.WEAKNESS_BLUE_ADD] = {ATTR_NAME.WEAKNESS_BLUE, false}, + [BUFF_NAME.WEAKNESS_PURPLE_ADD] = {ATTR_NAME.WEAKNESS_PURPLE, false}, + [BUFF_NAME.WEAKNESS_ALL_ADD] = {ATTR_NAME.WEAKNESS_ALL, false}, + [BUFF_NAME.DMG_ADDITION_RED_ADD] = {ATTR_NAME.DMG_ADDITION_RED, false}, + [BUFF_NAME.DMG_ADDITION_YELLOW_ADD] = {ATTR_NAME.DMG_ADDITION_YELLOW, false}, + [BUFF_NAME.DMG_ADDITION_GREEN_ADD] = {ATTR_NAME.DMG_ADDITION_GREEN, false}, + [BUFF_NAME.DMG_ADDITION_BLUE_ADD] = {ATTR_NAME.DMG_ADDITION_BLUE, false}, + [BUFF_NAME.DMG_ADDITION_PURPLE_ADD] = {ATTR_NAME.DMG_ADDITION_PURPLE, false}, + [BUFF_NAME.DMG_ADDITION_ALL_ADD] = {ATTR_NAME.DMG_ADDITION_ALL, false}, + [BUFF_NAME.BLOCK] = {ATTR_NAME.BLOCK, false}, + [BUFF_NAME.CRIT_ADD] = {ATTR_NAME.CRIT, false}, + [BUFF_NAME.CRIT_TIME_ADD] = {ATTR_NAME.CRIT_TIME, false}, + [BUFF_NAME.EXP_TIME_ADD] = {ATTR_NAME.EXP_TIME, false}, + [BUFF_NAME.CURED_ADD] = {ATTR_NAME.CURE_ADDITION, false}, +} + ---- 格子类型 BattleConst.GRID_TYPE = { EMPTY = 0, diff --git a/lua/app/module/battle/component/battle_unit_comp.lua b/lua/app/module/battle/component/battle_unit_comp.lua index b42ba678..ecc71393 100644 --- a/lua/app/module/battle/component/battle_unit_comp.lua +++ b/lua/app/module/battle/component/battle_unit_comp.lua @@ -25,7 +25,7 @@ function BattleUnitComp:initPosition() end function BattleUnitComp:playBorn() - self:playAnimation(SPINE_ANIMATION_NAME.IDLE, true, false) + self:changeState(UNIT_STATE.IDLE) end function BattleUnitComp:_initBase() @@ -37,6 +37,9 @@ function BattleUnitComp:_initBase() self.currAttackKeyTime = 0 self.isPlayHurt = 0 self.attackDurationMap = {} + self.buffList = {} + self.sameBuffCount = {} + self.shieldBuffList = {} self.currState = UNIT_STATE.INIT end @@ -82,13 +85,20 @@ end function BattleUnitComp:useNormalSkill(count, callback) self.baseObject:getTransform():SetAsLastSibling() self.actionOverCallback = callback - self.normalSkillCount = count + self.normalSkillCount = count + self.unitEntity:getNormalAttackCount() if not self:changeState(UNIT_STATE.NORMAL_ATTACK) then self.actionOverCallback = nil callback() end end +function BattleUnitComp:addShield(num, buffEffect) + if buffEffect then + table.insert(self.shieldBuffList, buffEffect) + end + self.unitEntity:addShield(num) +end + function BattleUnitComp:changeState(state) if self.currState == state and not self:repeatCurrState() then return false @@ -267,6 +277,22 @@ function BattleUnitComp:updateNormalAttack(dt) end end +function BattleUnitComp:addBuff(buffEffect) + table.insert(self.buffList, buffEffect) + self:updateBuffState(buffEffect.buff, 1) +end + +function BattleUnitComp:updateBuffState(buff, num) + local buffName = buff:getName() + local buffNum = (self.sameBuffCount[buffName] or 0) + num + self.sameBuffCount[buffName] = buffNum + -- if buffNum > 0 and buffNum == num then + -- self:showBuffFx(buffName, buff:getBuffFxId()) + -- elseif buffNum <= 0 then + -- self:hideBuffFx(buffName) + -- end +end + function BattleUnitComp:onSkillTakeEffect(skill) local effectList = skill:getEffectList() if effectList == nil then @@ -308,7 +334,7 @@ function BattleUnitComp:takeEffect(buff, target) end local func = BattleBuffHandle.takeBuffEffect[buff:getBuffType()] if func then - local result = func(self, buff, target) + local result = func(self, buff, target, buffEffect) if buffEffect then buffEffect.result = result end @@ -335,8 +361,7 @@ function BattleUnitComp:takeDamageOrCure(atker, buff, num, effectType, effectSta end local x, y, z = self.baseObject:fastGetLocalPosition() self:showEffectNumber(num, x, y) - local hpPercent = self.unitEntity:getHpPercent() - -- self.controlUnitComp:RefreshHpBar(hpPercent) + self.battleController:refreshHp(self.side, self.unitEntity:getHp(), self.unitEntity:getHpPercent()) -- local shieldHp = self.unitEntity:getShieldHp() -- if shieldHp and shieldHp.value > 0 then diff --git a/lua/app/module/battle/controller/battle_controller.lua b/lua/app/module/battle/controller/battle_controller.lua index 58502a48..67fb695b 100644 --- a/lua/app/module/battle/controller/battle_controller.lua +++ b/lua/app/module/battle/controller/battle_controller.lua @@ -165,6 +165,7 @@ function BattleController:initAtkUnits(callback) local function onloadFinished() count = count + 1 if count == totalCount then + self.battleUI:refreshAtkHp(atkTeam:getHp(), atkTeam:getHpPercent()) callback() end end @@ -187,6 +188,14 @@ function BattleController:initAtkUnits(callback) end end +function BattleController:refreshHp(side, num, percent) + if side == BattleConst.SIDE_ATK then + self.battleUI:refreshAtkHp(num, percent) + else + self.battleUI:refreshDefHp(num, percent) + end +end + function BattleController:getOtherSideMainUnit(side) if side == BattleConst.SIDE_ATK then return self.defMainUnit diff --git a/lua/app/module/battle/controller/battle_controller_stage.lua b/lua/app/module/battle/controller/battle_controller_stage.lua index 242b2f08..3a026b4a 100644 --- a/lua/app/module/battle/controller/battle_controller_stage.lua +++ b/lua/app/module/battle/controller/battle_controller_stage.lua @@ -23,6 +23,7 @@ function BattleControllerStage:initDefUnits(callback) self.defUnits[unitEntity:getMatchType()] = monsterComp table.insert(self.allUnits, monsterComp) self.defMainUnit = monsterComp + self.battleUI:refreshDefHp(unitEntity:getHp(), unitEntity:getHpPercent()) callback() end) end diff --git a/lua/app/module/battle/helper/battle_buff_handle.lua b/lua/app/module/battle/helper/battle_buff_handle.lua index 13ae00e9..5c193941 100644 --- a/lua/app/module/battle/helper/battle_buff_handle.lua +++ b/lua/app/module/battle/helper/battle_buff_handle.lua @@ -9,6 +9,7 @@ local EFFECT_TYPE = BattleConst.EFFECT_TYPE local BUFF_NAME = BattleConst.BUFF_NAME local ATTR_NAME = BattleConst.ATTR_NAME local DEFAULT_FACTOR = BattleConst.DEFAULT_FACTOR +local BUFF_NAME_TO_ATTR = BattleConst.BUFF_NAME_TO_ATTR local function _doDotWork(unitComp, buffEffect, buff) local damage, hurtStatus = BattleFormula:getDamageOrCureResult(buffEffect.sender, buff, unitComp) @@ -49,9 +50,26 @@ function BattleBuffHandle.removeBuff(unitComp, buffEffect) end BattleBuffHandle.addAttribute = { + [BUFF_NAME.ATKP_COLOR_ADD] = function(target, num) + target.unitEntity:addAttr(ATTR_NAME.ATK, num, true) + target.unitEntity:addAttr(ATTR_NAME.ATK_RED, num, true) + target.unitEntity:addAttr(ATTR_NAME.ATK_YELLOW, num, true) + target.unitEntity:addAttr(ATTR_NAME.ATK_GREEN, num, true) + target.unitEntity:addAttr(ATTR_NAME.ATK_BLUE, num, true) + target.unitEntity:addAttr(ATTR_NAME.ATK_PURPLE, num, true) + end, + [BUFF_NAME.NORMAL_ATTACK_DEC] = function(target, num) + target.unitEntity:addAttr(ATTR_NAME.NORMAL_ATTACK_COUNT, -num, false) + end, + [BUFF_NAME.NORMAL_ATTACK_ADD] = function(target, num) + target.unitEntity:addAttr(ATTR_NAME.NORMAL_ATTACK_COUNT, num, false) + end, + [BUFF_NAME.HPP_ADD] = function(target, num) + target.unitEntity:addMaxHp(num) + end, } -local function _takeEffectDirectHurt(unitComp, buff, target) +local function _takeEffectDirectHurt(unitComp, buff, target, buffEffect) local damage, hurtStatus = BattleFormula:getDamageOrCureResult(unitComp, buff, target) if damage <= 0 then damage = -1 @@ -62,11 +80,11 @@ local function _takeEffectDirectHurt(unitComp, buff, target) return damage end -local function _takeEffectDot(unitComp, buff, target) +local function _takeEffectDot(unitComp, buff, target, buffEffect) return true end -local function _takeEffectDirectCure(unitComp, buff, target) +local function _takeEffectDirectCure(unitComp, buff, target, buffEffect) local cure, hurtStatus = BattleFormula:getDamageOrCureResult(unitComp, buff, target) if cure < 0 then -- 加血不能是负数 cure = 0 @@ -75,26 +93,32 @@ local function _takeEffectDirectCure(unitComp, buff, target) return cure end -local function _takeEffectHot(unitComp, buff, target) +local function _takeEffectHot(unitComp, buff, target, buffEffect) return true end -local function _takeEffectAttr(unitComp, buff, target) +local function _takeEffectAttr(unitComp, buff, target, buffEffect) local buffName = buff:getName() - local func = BattleBuffHandle.addAttribute[buffName] - if func then - func(target, buff:getEffectNum()) - return true + local attr = BUFF_NAME_TO_ATTR[buffName] + if attr then + return target.unitEntity:addAttr(attr[1], buff:getEffectNum(), attr[2]) + else + local func = BattleBuffHandle.addAttribute[buffName] + if func then + return func(target, buff:getEffectNum()) + end end return nil end -local function _takeEffectControl(unitComp, buff, target) - target:addLimit(buff:getName()) +local function _takeEffectControl(unitComp, buff, target, buffEffect) + target.unitEntity:addLimit(buff:getName()) return true end -local function _takeEffectShield(unitComp, buff, target) +local function _takeEffectShield(unitComp, buff, target, buffEffect) + local shieldNum = target.unitEntity:getMaxHp() * buff:getEffectNum() // DEFAULT_FACTOR + target:addShield(shieldNum, buffEffect) return true end @@ -112,14 +136,23 @@ BattleBuffHandle.takeBuffEffect = { -- 还原改变的属性 local function _removeEffectAttr(buffSender, target, buff, buffEffect) - local func = BattleBuffHandle.addAttribute[buff:getName()] - if func then - func(target, -buff:getEffectNum()) + if buffEffect == nil then + return + end + local buffName = buff:getName() + local attr = BUFF_NAME_TO_ATTR[buffName] + if attr then + target.unitEntity:addAttr(attr[1], -buffEffect.effectResult, false) + else + local func = BattleBuffHandle.addAttribute[buffName] + if func then + return func(target, -buff:getEffectNum()) + end end end local function _removeEffectControl(buffSender, target, buff, buffEffect) - target:removeLimit(buff:getName()) + target.unitEntity:removeLimit(buff:getName()) end -- buff移除时的效果 diff --git a/lua/app/module/battle/helper/battle_buff_special.lua b/lua/app/module/battle/helper/battle_buff_special.lua index 3552bc06..fb8eeb2f 100644 --- a/lua/app/module/battle/helper/battle_buff_special.lua +++ b/lua/app/module/battle/helper/battle_buff_special.lua @@ -3,19 +3,29 @@ local BattleConst = require "app/module/battle/battle_const" local BattleBuffSpecial = {} local BUFF_NAME = BattleConst.BUFF_NAME -local ATTR_NAME = BattleConst.ATTR_NAME +local ATTR_NAME = BattleConst.ATTR_NAM + +local function _addSkillOn(unitComp, buff, target, buffEffect) + return 1 +end + +local function _addSkillOff(buffSender, target, buff, buffEffect) + return 1 +end local _handleOn = { + [BUFF_NAME.ADD_SKILL] = _addSkillOn, -- 添加技能 } local _handleOff = { + [BUFF_NAME.ADD_SKILL] = _addSkillOff, -- 添加技能 } -- 特殊buff添加时 -function BattleBuffSpecial.specialBuffOn(unitComp, buff, target) +function BattleBuffSpecial.specialBuffOn(unitComp, buff, target, buffEffect) local func = _handleOn[buff:getName()] if func then - return func(unitComp, buff, target) + return func(unitComp, buff, target, buffEffect) end return 0 end diff --git a/lua/app/ui/battle/battle_ui.lua b/lua/app/ui/battle/battle_ui.lua index 6f5121b7..14aa753c 100644 --- a/lua/app/ui/battle/battle_ui.lua +++ b/lua/app/ui/battle/battle_ui.lua @@ -31,6 +31,7 @@ function BattleUI:_display() self:initSkill() self:initBattlefield() self:initNumberNode() + self:initHpNode() end function BattleUI:_addListeners() @@ -86,6 +87,24 @@ function BattleUI:getBattleNumber() return self.battleNumber end +function BattleUI:initHpNode() + self.hpNode = self.uiMap["battle_ui.battle_hp_node"] + self.hpProgressLeft = self.uiMap["battle_ui.battle_hp_node.progress_left"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + self.hpProgressRight = self.uiMap["battle_ui.battle_hp_node.progress_right"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER) + self.hpTextRight = self.uiMap["battle_ui.battle_hp_node.text_right"] + self.hpTextLeft = self.uiMap["battle_ui.battle_hp_node.text_left"] +end + +function BattleUI:refreshAtkHp(num, percent) + self.hpTextLeft:setText(GFunc.num2Str(num)) + self.hpProgressLeft.value = percent +end + +function BattleUI:refreshDefHp(num, percent) + self.hpTextRight:setText(GFunc.num2Str(num)) + self.hpProgressRight.value = percent +end + function BattleUI:refreshSkill(elementMap) if not self.skillNodeCells then return diff --git a/lua/app/userdata/battle/team/battle_team_entity.lua b/lua/app/userdata/battle/team/battle_team_entity.lua index e6fe2631..dc6b7bf1 100644 --- a/lua/app/userdata/battle/team/battle_team_entity.lua +++ b/lua/app/userdata/battle/team/battle_team_entity.lua @@ -8,6 +8,9 @@ local MATCH_ATTACK_NAME = GConst.MATCH_ATTACK_NAME local MATCH_DMG_ADDITION_NAME = BattleConst.MATCH_DMG_ADDITION_NAME local MATCH_DMG_DEC_NAME = BattleConst.MATCH_DMG_DEC_NAME local MATCH_WEAKNESS_NAME = BattleConst.MATCH_WEAKNESS_NAME +local DEFAULT_FACTOR = BattleConst.DEFAULT_FACTOR +local BUFF_NAME = BattleConst.BUFF_NAME +local ATTR_NAME = BattleConst.ATTR_NAME function BattleTeamEntity:ctor() self.members = {} @@ -19,6 +22,9 @@ function BattleTeamEntity:init(side, data) self.baseAttr = {} self.attr = {} self.isDead = false + self.stunCount = 0 + self.limitAll = 0 + self.shieldHp = 0 if data then table.sort(data.units, function(a, b) if a.level == b.level then @@ -66,6 +72,39 @@ function BattleTeamEntity:addBaseAttr(unitAttr) end end +function BattleTeamEntity:addAttr(name, num, isPercent) + local addNum = 0 + if isPercent then + if self.attr[name] then + -- 百分比加减属性的时候如果是减少属性,则先取正数做计算,在减去此结果, 否则在做整除运算的时候,正数和负数整除后的绝对值会不一致 + -- 例如150 // 100 = 1, -150 // 100 = -2, 导致添加和移除的时候计算的属性值不一样 + if num < 0 then + if self.baseAttr[name] then + addNum = self.baseAttr[name] * -num // DEFAULT_FACTOR + self.attr[name] = self.attr[name] - addNum + else + addNum = self.attr[name] * -num // DEFAULT_FACTOR + self.attr[name] = self.attr[name] - addNum + end + addNum = -addNum + else + if self.baseAttr[name] then + addNum = self.baseAttr[name] * num // DEFAULT_FACTOR + self.attr[name] = self.attr[name] + addNum + else + addNum = self.attr[name] * num // DEFAULT_FACTOR + self.attr[name] = self.attr[name] + addNum + end + end + end + else + addNum = num + local currNum = self.attr[name] or 0 + self.attr[name] = currNum + num + end + return addNum +end + function BattleTeamEntity:getAllMembers() return self.members end @@ -74,6 +113,10 @@ function BattleTeamEntity:getMembersCount() return self.membersCount end +function BattleTeamEntity:getHp() + return self.attr.hp +end + function BattleTeamEntity:getHpPercent() return self.attr.hp / self.attr.max_hp end @@ -106,7 +149,36 @@ function BattleTeamEntity:getCureAddition() return self.attr.cure_addition or 0 end +function BattleTeamEntity:getNormalAttackCount() + return self.attr[ATTR_NAME.NORMAL_ATTACK_COUNT] or 0 +end + +function BattleTeamEntity:addMaxHp(num) + self.attr.max_hp = self.attr.max_hp + self.baseAttr.max_hp * num // DEFAULT_FACTOR +end + +function BattleTeamEntity:addLimit(name) + if name == BUFF_NAME.STUN then + self.stunCount = self.stunCount + 1 + end + self.limitAll = self.limitAll + 1 +end + +function BattleTeamEntity:removeLimit(name) + if name == BUFF_NAME.STUN then + self.stunCount = self.stunCount - 1 + end + self.limitAll = self.limitAll - 1 +end + +function BattleTeamEntity:addShield(num) + self.shieldHp = self.shieldHp + num +end + function BattleTeamEntity:takeDamageOrCure(num) + if self.isDead then + return 0 + end if num < 0 then -- 是伤害的话处理一下护盾 num = self:handleShield(num) if num >= 0 then -- 这次伤害被抵消了 @@ -118,6 +190,7 @@ function BattleTeamEntity:takeDamageOrCure(num) local hurtEventNum = 0 if self.attr.hp <= 0 then -- 死了 hurtEventNum = -hpBefore + self.attr.hp = 0 self:die() elseif self.attr.hp < self.attr.max_hp then hurtEventNum = num @@ -130,9 +203,6 @@ function BattleTeamEntity:takeDamageOrCure(num) end function BattleTeamEntity:handleShield(damageNum) - if self.shieldHp == nil then - return damageNum - end self.shieldHp = self.shieldHp + damageNum if self.shieldHp >= 0 then return 0 diff --git a/lua/app/userdata/battle/team/battle_unit_entity.lua b/lua/app/userdata/battle/team/battle_unit_entity.lua index 6a9c0cd7..b3810b9e 100644 --- a/lua/app/userdata/battle/team/battle_unit_entity.lua +++ b/lua/app/userdata/battle/team/battle_unit_entity.lua @@ -25,6 +25,10 @@ function BattleUnitEntity:initSkill() end end +function BattleUnitEntity:addAttr(name, num, isPercent) + return self.team:addAttr(name, num, isPercent) +end + function BattleUnitEntity:getModelId() return self.unitData.modelId end @@ -53,6 +57,10 @@ function BattleUnitEntity:takeDamageOrCure(num) return self.team:takeDamageOrCure(num) end +function BattleUnitEntity:getHp() + return self.team:getHp() +end + function BattleUnitEntity:getHpPercent() return self.team:getHpPercent() end @@ -85,4 +93,24 @@ function BattleUnitEntity:getCureAddition() return self.team:getCureAddition() end +function BattleUnitEntity:getNormalAttackCount() + return self.team:getNormalAttackCount() +end + +function BattleUnitEntity:addLimit(name) + self.team:addLimit(name) +end + +function BattleUnitEntity:removeLimit(name) + self.team:removeLimit(name) +end + +function BattleUnitEntity:addShield(num) + self.team:addShield(num) +end + +function BattleUnitEntity:addMaxHp(num) + self.team:addMaxHp(num) +end + return BattleUnitEntity \ No newline at end of file