diff --git a/lua/app/module/battle/helper/battle_passive.lua b/lua/app/module/battle/helper/battle_passive.lua index 183da36b..4c24d36c 100644 --- a/lua/app/module/battle/helper/battle_passive.lua +++ b/lua/app/module/battle/helper/battle_passive.lua @@ -25,16 +25,16 @@ end local function _checkhpLowerThan(unitComp, skill, targetComp, hpPercent) local triggerValue = skill:getPassiveTriggerValue() or 0 if hpPercent*DEFAULT_FACTOR < triggerValue then -- 低于指定血量,触发技能 - local data = skill:getRecordData(SKILL_RECORD_DATA_NAME.HP_LOWER_THAN) or 0 + local data = unitComp.unitEntity:getTeamRecordData(SKILL_RECORD_DATA_NAME.HP_LOWER_THAN) or 0 if data == 1 then -- 已经触发过了 return 0 end - skill:setRecordData(SKILL_RECORD_DATA_NAME.HP_LOWER_THAN, 1) + unitComp.unitEntity:setTeamRecordData(SKILL_RECORD_DATA_NAME.HP_LOWER_THAN, 1) return 1 else - local data = skill:getRecordData(SKILL_RECORD_DATA_NAME.HP_LOWER_THAN) or 0 + local data = unitComp.unitEntity:getTeamRecordData(SKILL_RECORD_DATA_NAME.HP_LOWER_THAN) or 0 if data == 1 then -- 已经触发过了,那么需要取消 - skill:setRecordData(SKILL_RECORD_DATA_NAME.HP_LOWER_THAN, 0) + unitComp.unitEntity:setTeamRecordData(SKILL_RECORD_DATA_NAME.HP_LOWER_THAN, 0) return -1 end end diff --git a/lua/app/userdata/battle/team/battle_team_entity.lua b/lua/app/userdata/battle/team/battle_team_entity.lua index d9bef4c7..00672b56 100644 --- a/lua/app/userdata/battle/team/battle_team_entity.lua +++ b/lua/app/userdata/battle/team/battle_team_entity.lua @@ -229,11 +229,34 @@ function BattleTeamEntity:handleShield(damageNum) end end +function BattleTeamEntity:getRecordData(name) + if self.recordData == nil then + self.recordData = {} + end + return self.recordData[name] +end + +function BattleTeamEntity:setRecordData(name, value) + if self.recordData == nil then + self.recordData = {} + end + self.recordData[name] = value +end + +function BattleTeamEntity:clearRecordData() + if self.recordData then + for k, v in pairs(self.recordData) do + self.recordData[k] = nil + end + end +end + function BattleTeamEntity:die() if self.isDead then return end self.isDead = true + self:clearRecordData() end function BattleTeamEntity:getIsDead() diff --git a/lua/app/userdata/battle/team/battle_unit_entity.lua b/lua/app/userdata/battle/team/battle_unit_entity.lua index 124a8b34..24dfbec0 100644 --- a/lua/app/userdata/battle/team/battle_unit_entity.lua +++ b/lua/app/userdata/battle/team/battle_unit_entity.lua @@ -253,6 +253,14 @@ function BattleUnitEntity:getSkillExtraUseTimes(skillId) return self.skillExtraUseTimes[skillId] or 0 end +function BattleUnitEntity:getTeamRecordData(name) + return self.team:getRecordData(name) +end + +function BattleUnitEntity:setTeamRecordData(name, value) + self.team:setRecordData(name, value) +end + function BattleUnitEntity:onRoundEnd() for k, v in ipairs(self.activeSkills) do v:cooldown()