diff --git a/lua/app/module/battle/component/battle_unit_comp.lua b/lua/app/module/battle/component/battle_unit_comp.lua index 7b6ac05a..aa433ead 100644 --- a/lua/app/module/battle/component/battle_unit_comp.lua +++ b/lua/app/module/battle/component/battle_unit_comp.lua @@ -895,7 +895,13 @@ function BattleUnitComp:takeDamageOrCure(atker, buff, num, effectType, effectSta return 0 end local shieldHpBefore = self.unitEntity:getShieldHp() - self.unitEntity:takeDamageOrCure(num) + local hpRealReduce = self.unitEntity:takeDamageOrCure(num) + if hpRealReduce < 0 and self.side == BattleConst.SIDE_DEF then -- 实际掉血了 + local exp = self.unitEntity:getExp() + if exp > 0 then + self.battleController:addBattleExp(math.floor(exp/self.unitEntity:getMaxHp()*-hpRealReduce)) + end + end local shieldHpDiff = self.unitEntity:getShieldHp() - shieldHpBefore if shieldHpDiff < 0 then -- 说明护盾减少了 self:handleShield(shieldHpDiff, self) diff --git a/lua/app/userdata/battle/battle_data.lua b/lua/app/userdata/battle/battle_data.lua index 815feb5f..db0c30da 100644 --- a/lua/app/userdata/battle/battle_data.lua +++ b/lua/app/userdata/battle/battle_data.lua @@ -416,6 +416,7 @@ function BattleData:addMonster(monsterId, newTeam) normalSkillCount = monsterInfo.hurt_num, assistingSkill = nil, isBoss = monsterInfo.is_boss, + exp = monsterInfo.monster_exp or 0, attr = { hp = hp, max_hp = hp, diff --git a/lua/app/userdata/battle/team/battle_team_entity.lua b/lua/app/userdata/battle/team/battle_team_entity.lua index 184ec4b3..d66aca23 100644 --- a/lua/app/userdata/battle/team/battle_team_entity.lua +++ b/lua/app/userdata/battle/team/battle_team_entity.lua @@ -129,6 +129,10 @@ function BattleTeamEntity:getHp() return self.attr.hp end +function BattleTeamEntity:getMaxHp() + return self.attr.max_hp +end + function BattleTeamEntity:getHpPercent() return self.attr.hp / self.attr.max_hp end @@ -216,7 +220,7 @@ function BattleTeamEntity:takeDamageOrCure(num) hurtEventNum = num else -- 满血了 -- 这是加血 - hurtEventNum = 0 + hurtEventNum = self.attr.max_hp - hpBefore self.attr.hp = self.attr.max_hp end return hurtEventNum diff --git a/lua/app/userdata/battle/team/battle_unit_entity.lua b/lua/app/userdata/battle/team/battle_unit_entity.lua index efe05787..24d2ae3f 100644 --- a/lua/app/userdata/battle/team/battle_unit_entity.lua +++ b/lua/app/userdata/battle/team/battle_unit_entity.lua @@ -177,6 +177,10 @@ function BattleUnitEntity:getHp() return self.team:getHp() end +function BattleUnitEntity:getMaxHp() + return self.team:getMaxHp() +end + function BattleUnitEntity:getHpPercent() return self.team:getHpPercent() end @@ -237,6 +241,10 @@ function BattleUnitEntity:getBlock() return self.team:getBlock() end +function BattleUnitEntity:getExp() + return self.unitData.exp +end + function BattleUnitEntity:addSkillExtraUseTimes(skillId, count) if self.skillExtraUseTimes == nil then self.skillExtraUseTimes = {}