| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641 |
- --战斗对象相关
- -- init 初始化对象
- -- setInitAttr 设置默认属性
- local RoleDefine = require("role.RoleDefine")
- local RoleAttr = require("role.RoleAttr")
- local CombatDefine = require("combat.CombatDefine")
- local CombatBuff = require("combat.CombatBuff")
- local BeSkill = require("combat.BeSkill")
- local CombatImpl = require("combat.CombatImpl")
- objs = objs or {} -- [pos]->obj
- helps = helps or {}
- -- 初始化
- function initAfterStart()
- for pos = 1, CombatDefine.COMBAT_HERO_ALL_CNT do
- local attr = {} -- 最终属性
- RoleAttr.initCombatAttr(attr)
-
- local initAttr = {} -- 默认属性
- RoleAttr.initCombatAttr(initAttr)
- local sysAttr = {} -- 战前附加系统属性(比如地牢,被动技能)
- RoleAttr.initCombatAttr(sysAttr)
-
- local bufferAttr = {}
- RoleAttr.initCombatAttr(bufferAttr)
- local bufferAttr2 = {}
- local obj = {}
- objs[pos] = obj
- obj.pos = pos -- 站位位置
- obj.helpType = CombatDefine.HELP_TYPE0 -- 辅助对象类型 武将/魔兽
- obj.side = pos > CombatDefine.COMBAT_HERO_CNT and CombatDefine.DEFEND_SIDE or CombatDefine.ATTACK_SIDE -- 进攻方/防守方
- obj.backupPos = nil --
- obj.beBackup = nil --
- obj.id = nil -- 对象ID
- obj.type = nil -- 对象类型
- obj.quality = nil -- 品质
- obj.hp = nil -- 当前HP
- obj.mp = nil -- 当前MP
- obj.initHp = nil
- obj.initMp = nil
- obj.job = nil -- 职业类型
- obj.body = nil -- 模型
- obj.dietime = nil -- 死亡时间
- obj.dieSkill = nil
- obj.dieAtkCnt = nil
- obj.camp = nil
- obj.sex = nil
- obj.attr = attr
- obj.initAttr = initAttr
- obj.sysAttr = sysAttr
- obj.bufferAttr = bufferAttr
- obj.bufferAttr2 = bufferAttr2
- obj.buffer = {[0] = 0} -- obj身上的buff集合,buff[0]表示buff数量
- obj.bufferCmd = {} --控制类buffer
- obj.skillList = nil
- obj.beSkillList = nil
- obj.paramData = {}
- obj.result = {0,0,0,0} --战斗中输出和治疗 承受伤害 出手回合数 汇总
- obj.combatResult = {0,0,{},0,{}} --每次攻击造成的伤害和治疗
- obj.extraCombatRecord = nil --战斗中额外统计的数据
- obj.delayAddBuffer = nil
- obj.normalTarget = nil
- end
-
- for pos = 1,CombatDefine.COMBAT_HELP_ALL_CNT do
- local help = {}
- local attr = {} -- 最终属性
- RoleAttr.initCombatAttr(attr)
- help.attr = attr
- helps[pos + CombatDefine.COMBAT_HERO_ALL_CNT] = help
- help.pos = pos + CombatDefine.COMBAT_HERO_ALL_CNT
- help.helpType = pos%CombatDefine.COMBAT_HELP_CNT
- help.id = nil
- help.side = pos > CombatDefine.COMBAT_HELP_CNT and CombatDefine.DEFEND_SIDE or CombatDefine.ATTACK_SIDE
- help.skillList = nil
- help.beSkillList = nil
- help.lv = 0
- help.head = 0
- help.body = 0
- help.quality = 0
- help.result = {0,0,0,0} --战斗中输出和治疗 承受伤害 出手回合数 汇总
- help.combatResult = {0,0,{},0,{}} --每次攻击受到的伤害和治疗
- help.extraCombatRecord = nil --战斗中额外统计的数据
- help.isPet = help.helpType == 1
- end
- end
- function getObjByPos(pos)
- if pos <= CombatDefine.COMBAT_HERO_ALL_CNT then
- return objs[pos]
- else
- return helps[pos]
- end
- end
- function init(obj)
- obj.id = nil
- obj.type = nil
- obj.quality = nil
- obj.hp = nil
- obj.initHp = nil
- obj.initMp = nil
- obj.job = nil
- obj.body = nil
- obj.beSkillList = nil
- obj.skillList = nil
- obj.delayAddBuffer = nil
- obj.backupPos = nil
- obj.beBackup = nil
- obj.dietime = nil
- obj.dieSkill = nil
- obj.dieAtkCnt = nil
- obj.camp = nil
- obj.sex = nil
- obj.normalTarget = nil
- obj.notSkillBaoJi = nil
- obj.notBaoJi = nil
- for k in pairs(obj.buffer) do
- obj.buffer[k] = nil
- end
- obj.buffer[0] = 0
- for k,v in pairs(obj.bufferCmd) do
- obj.bufferCmd[k] = nil
- end
-
- for k,v in pairs(obj.paramData) do
- obj.paramData[k] = nil
- end
- for k in pairs(obj.bufferAttr2) do
- obj.bufferAttr2[k] = nil
- end
- obj.result[1] = 0
- obj.result[2] = 0
- obj.result[3] = 0
- obj.result[4] = 0
- obj.combatResult[1] = 0
- obj.combatResult[2] = 0
- for k in pairs(obj.combatResult[3]) do
- obj.combatResult[3][k] = nil
- end
- for k in pairs(obj.combatResult[5]) do
- obj.combatResult[5][k] = nil
- end
- obj.extraCombatRecord = nil
- RoleAttr.initCombatAttr(obj.attr)
- RoleAttr.initCombatAttr(obj.initAttr)
- RoleAttr.initCombatAttr(obj.sysAttr)
- RoleAttr.initCombatAttr(obj.bufferAttr)
- end
- --辅助对象相关
- function initHelp(help)
- help.id = nil
- help.skillList = nil
- help.beSkillList = nil
- help.lv = 0
- help.quality = 0
- help.head = 0
- help.body = 0
- help.icon = 0
- help.result[1] = 0
- help.result[2] = 0
- help.result[3] = 0
- help.result[4] = 0
- help.combatResult[1] = 0
- help.combatResult[2] = 0
- for k in pairs(help.combatResult[3]) do
- help.combatResult[3][k] = nil
- end
- for k in pairs(help.combatResult[5]) do
- help.combatResult[5][k] = nil
- end
- help.extraCombatRecord = nil
- RoleAttr.initCombatAttr(help.attr)
- end
- function setInitAttr(obj, attr)
- local initAttr = obj.initAttr
- for key in pairs(initAttr) do
- initAttr[key] = attr[key] or 0
- end
- calcAttr(obj)
- end
- NO_LIMIT_KEY = {
- [RoleDefine.ATK_RATE] = 1,
- [RoleDefine.DEF_RATE] = 1,
- [RoleDefine.HP_ADD_RATE] = 1,
- [RoleDefine.ZAOCHENG_HP_ADD_RATE] = 1,
- }
- local function checkLimit(attr)
- for k in pairs(attr) do
- if not NO_LIMIT_KEY[k] then
- attr[k] = attr[k] < 0 and 0 or attr[k]
- end
- end
- end
- local function calcFinalAttr(attr)
- attr[RoleDefine.ATK] = attr[RoleDefine.ATK] * (1 + attr[RoleDefine.ATK_RATE]/10000)
- attr[RoleDefine.SPEED] = attr[RoleDefine.SPEED] * (1 + attr[RoleDefine.SPEED_RATE]/10000)
- end
- function calcAttr(obj)
- RoleAttr.initCombatAttr(obj.attr)
- local attr = obj.attr
- local initAttr = obj.initAttr
- local sysAttr = obj.sysAttr
- local bufferAttr= obj.bufferAttr
- local bufferAttr2 = obj.bufferAttr2
-
- for key, val in pairs(initAttr) do
- attr[key] = val
- end
- for key ,val in pairs(bufferAttr) do
- attr[key] = attr[key] + val
- end
- for k ,v in pairs(bufferAttr2) do
- for key,val in pairs(v) do
- attr[key] = attr[key] + val
- end
- end
-
- for key ,val in pairs(sysAttr) do
- attr[key] = attr[key] + val
- end
- calcFinalAttr(attr)
- checkLimit(attr)
- end
- function getHpMax(obj)
- if not obj then return end
- if not obj.attr then return end
- local hpMax = obj.attr[RoleDefine.HP]
- hpMax = math.ceil(hpMax * (1 + obj.attr[RoleDefine.HP_RATE]/10000))
- return hpMax
- end
- function onHpCB(obj,d, attackPos,skillID)
- if d == 0 then return end
- if obj.hp <= 0 then
- BeSkill.onDie(obj, d, attackPos)
- obj.dietime = os.time()
- obj.dieSkill = skillID
- obj.dieAtkCnt = CombatImpl.totalAtkCnt
- CombatBuff.onExtraCombatRecord(attackPos,1,"kill")
- else
- BeSkill.onHp(obj, d, attackPos)
- end
- if d < 0 then
- updateValue(obj, RoleDefine.RATE_COMBAT_NOW, -d)
- end
- end
- --获取伤害抵减
- local function getDijianHurtRate(obj)
- local rate = 0
- rate = rate + getValue(obj,RoleDefine.FANSHE_ZHUANGJIA)
- return rate
- end
- local function beforeUpdateHp(obj,sum)
- if BeSkill.beforeUpdateHp(obj,sum) then
- return
- end
- if CombatBuff.beforeUpdateHp(obj,sum) then
- return
- end
- --世界boss模式 不掉血量
- if CombatImpl.fightMode[1] == CombatDefine.FIGHT_MODE3 and obj.type == CombatDefine.COMBAT_OBJ_TYPE3 then
- return
- end
- return true
- end
- --血量改变类型
- SKILL_HP_TYPE = 1
- EXTRA_HP_TYPE = 2
- BUFFER_HP_TYPE = 3
- function updateHp(obj, value,isRevive,delayCB, attackPos,type)
- if obj.helpType ~= CombatDefine.HELP_TYPE0 then
- return 0
- end
- if obj.hp <= 0 and not isRevive then
- return 0
- end
- -- 加血变成减血
- if value > 0 then
- value = BeSkill.beforeMinusHp(obj, value)
- end
- --反射装甲buff对技能,额外伤害的抵减
- local dijianHurt = 0
- local dijianHurtRate = getDijianHurtRate(obj)
- if value < 0 and dijianHurtRate > 0 then
- if type == SKILL_HP_TYPE or type == EXTRA_HP_TYPE then
- dijianHurt = value * dijianHurtRate/10000
- value = value - dijianHurt
- end
- end
- if value == 0 then
- value = 1
- elseif value < 0 then
- value = math.floor(value)
- else
- value = math.ceil(value )
- end
- if type == SKILL_HP_TYPE then
- value = CombatBuff.checkBaohu(obj,value)
- end
- local sum = obj.hp + value
- -- 护盾值检测
- if value < 0 then
- local huDunValue = CombatBuff.getBuffHuDun(obj)
- if huDunValue > 0 then
- if huDunValue >= (-value) then
- sum = sum + (-value)
- CombatBuff.updateHuDun(obj, value)
- else
- sum = sum + huDunValue
- CombatBuff.updateHuDun(obj, -huDunValue)
- end
- end
- end
- local hpMax = getHpMax(obj)
- if sum > hpMax then
- sum = hpMax
- end
- local d = sum - obj.hp
- if d < 0 then
- local hurt = -d
- if hurt > obj.hp then
- hurt = obj.hp
- end
- d = -hurt
- end
- if sum < 0 then
- sum = 0
- end
- local ret = beforeUpdateHp(obj,sum)
- if ret then
- obj.hp = sum
- end
- if not delayCB then
- onHpCB(obj,d, attackPos)
- end
- --[[ if attackPos > 12 or obj.pos > 12 then
- print(" moshou hurt ", d , obj.pos ,attackPos)
- end
- ]]--
- if attackPos and d < 0 then
- CombatImpl.setObjBearResult(obj, d)
- end
- if isRevive == true and d > 0 then
- CombatImpl.setObjResult(obj.pos, d)
- elseif attackPos then
- CombatImpl.setObjResult(attackPos, d)
- end
- if d > 0 then
- obj.combatResult[2] = obj.combatResult[2] + d
- else
- obj.combatResult[1] = obj.combatResult[1] + d
- end
- if attackPos then
- obj.combatResult[3][attackPos] = obj.combatResult[3][attackPos] or {}
- if dijianHurt > 0 then
- obj.combatResult[3][attackPos][2] = obj.combatResult[3][attackPos][2] or 0
- obj.combatResult[3][attackPos][2] = obj.combatResult[3][attackPos][2] + dijianHurt
- elseif dijianHurt < 0 then
- obj.combatResult[3][attackPos][1] = obj.combatResult[3][attackPos][1] or 0
- obj.combatResult[3][attackPos][1] = obj.combatResult[3][attackPos][1] + dijianHurt
- end
- local attacker = CombatImpl.objList[attackPos]
- if attacker and d < 0 then
- attacker.combatResult[4] = attacker.combatResult[4] + d
- attacker.combatResult[5] = attacker.combatResult[5] or {}
- attacker.combatResult[5][obj.pos] = d
- if type == EXTRA_HP_TYPE then
- updateValue(attacker, RoleDefine.HURT_COMBAT_NOW, -d)
- end
- end
- end
- return d,value
- end
- function updateMp(obj, value)
- value = math.floor(value + 0.5)
- local sum = obj.mp + value
- sum = sum < 0 and 0 or sum
- local d = sum - obj.mp
- obj.mp = sum
- return d
- end
- function getValue(obj,key)
- if obj.isPet then
- return 0
- end
- if key == RoleDefine.SUB_HP_COMBAT then
- local hpNow = obj.hp or 0
- local hpMax = getHpMax(obj) or 0
- if hpMax <= 0 then
- print(string.format("战斗数据错误, obj.id: %d, obj.pos: %d", obj.id, obj.pos))
- return 0
- end
- local res = hpNow / hpMax
- res = math.floor(res * 10000) --取到小数点后四位,再转成整数
- return res
- else
- return obj.attr[key] or 0
- end
- end
- function setValue(obj,key,value)
- obj.attr[key] = value
- end
- function updateValue(obj,key,value)
- obj.attr[key] = obj.attr[key] or 0
- obj.attr[key] = obj.attr[key] + value
- end
- function getJobHurtRate(attacker,defender)
- local attr = attacker.attr
-
- --职业相关伤害加成
- local extraHurtRate = 0
- if defender.job == CombatDefine.JOB_TYPE1 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.JOB_HURT_RATE1]
- elseif defender.job == CombatDefine.JOB_TYPE2 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.JOB_HURT_RATE2]
- elseif defender.job == CombatDefine.JOB_TYPE3 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.JOB_HURT_RATE3]
- elseif defender.job == CombatDefine.JOB_TYPE4 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.JOB_HURT_RATE4]
- elseif defender.job == CombatDefine.JOB_TYPE5 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.JOB_HURT_RATE5]
- end
-
- -- 物理/魔法伤害加成
- if attacker.hurtType == CombatDefine.PHY_HURT_TYPE then
- extraHurtRate = extraHurtRate + (attr[RoleDefine.PHY_HURT_ADD_RATE] or 0)
- extraHurtRate = extraHurtRate + (defender.attr[RoleDefine.AT_PHY_HURT_ADD_RATE] or 0)
- elseif attacker.hurtType == CombatDefine.MAGIC_HURT_TYPE then
- extraHurtRate = extraHurtRate + (attr[RoleDefine.MAGIC_HURT_ADD_RATE] or 0)
- extraHurtRate = extraHurtRate + (defender.attr[RoleDefine.AT_MAGIC_HURT_ADD_RATE] or 0)
- end
-
- return extraHurtRate
- end
- function getStatusHurtRate(attacker,defender)
- local status = CombatBuff.getStatus(defender)
- local attr = attacker.attr
-
- --状态相关伤害加成
- local extraHurtRate = 0
- if status["xuanyun"] then
- extraHurtRate = extraHurtRate + attr[RoleDefine.STATUS_HURT_RATE1]
- end
- if status["shihua"] then
- extraHurtRate = extraHurtRate + attr[RoleDefine.STATUS_HURT_RATE2]
- end
- if status["bingdong"] then
- extraHurtRate = extraHurtRate + attr[RoleDefine.STATUS_HURT_RATE3]
- end
- if status["jinmo"] then
- extraHurtRate = extraHurtRate + attr[RoleDefine.STATUS_HURT_RATE4]
- end
- if status["ranshao"] then
- extraHurtRate = extraHurtRate + attr[RoleDefine.STATUS_HURT_RATE5]
- end
- if status["liuxue"] then
- extraHurtRate = extraHurtRate + attr[RoleDefine.STATUS_HURT_RATE6]
- end
- if status["liuxue2"] then
- extraHurtRate = extraHurtRate + attr[RoleDefine.STATUS_HURT_RATE6]
- end
- if status["zhongdu"] then
- extraHurtRate = extraHurtRate + attr[RoleDefine.STATUS_HURT_RATE7]
- end
- return extraHurtRate
- end
- function getStatusBaoji(attacker,defender)
- local status = CombatBuff.getStatus(defender)
- local attr = attacker.attr
- --状态相关暴击率增加
- local baoji = 0
- if status["xuanyun"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE1]
- end
- if status["shihua"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE2]
- end
- if status["bingdong"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE3]
- end
- if status["jinmo"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE4]
- end
- if status["ranshao"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE5]
- end
- if status["ranshao1"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE5]
- end
- if status["liuxue"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE6]
- end
- if status["liuxue2"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE6]
- end
- if status["zhongdu"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE7]
- end
- if status["jiansu"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_RATE8]
- end
- return baoji
- end
- function getStatusBaojiHurtRate(attacker,defender)
- local status = CombatBuff.getStatus(defender)
- local attr = attacker.attr
- --状态相关暴击率增加
- local baoji = 0
- if status["xuanyun"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE1]
- elseif status["shihua"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE2]
- elseif status["bingdong"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE3]
- elseif status["jinmo"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE4]
- elseif status["ranshao"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE5]
- elseif status["ranshao1"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE5]
- elseif status["liuxue"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE6]
- elseif status["liuxue2"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE6]
- elseif status["zhongdu"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE7]
- elseif status["jiansu"] then
- baoji = baoji + attr[RoleDefine.STATUS_BAOJI_HURT_RATE8]
- end
- return baoji
- end
- function getJobJianshangRate(attacker,defender)
- local job = attacker.job
- local attr = defender.attr
- local jianshangRate = 0
- --职业相关伤害加成
- if job == CombatDefine.JOB_TYPE1 then
- jianshangRate = jianshangRate + attr[RoleDefine.JOB_JIANSHANG_RATE1]
- elseif job == CombatDefine.JOB_TYPE2 then
- jianshangRate = jianshangRate + attr[RoleDefine.JOB_JIANSHANG_RATE2]
- elseif job == CombatDefine.JOB_TYPE3 then
- jianshangRate = jianshangRate + attr[RoleDefine.JOB_JIANSHANG_RATE3]
- elseif job == CombatDefine.JOB_TYPE4 then
- jianshangRate = jianshangRate + attr[RoleDefine.JOB_JIANSHANG_RATE4]
- elseif job == CombatDefine.JOB_TYPE5 then
- jianshangRate = jianshangRate + attr[RoleDefine.JOB_JIANSHANG_RATE5]
- end
- return jianshangRate
- end
- function getCampJianshangRate(attacker,defender)
- local camp = attacker.camp
- local attr = defender.attr
- local jianshangRate = 0
- --阵营相关减伤
- if camp == CombatDefine.CAMP_TYPE1 then
- jianshangRate = jianshangRate + attr[RoleDefine.CAMP_JIANSHANG_RATE1]
- elseif camp == CombatDefine.CAMP_TYPE2 then
- jianshangRate = jianshangRate + attr[RoleDefine.CAMP_JIANSHANG_RATE2]
- elseif camp == CombatDefine.CAMP_TYPE3 then
- jianshangRate = jianshangRate + attr[RoleDefine.CAMP_JIANSHANG_RATE3]
- elseif camp == CombatDefine.CAMP_TYPE4 then
- jianshangRate = jianshangRate + attr[RoleDefine.CAMP_JIANSHANG_RATE4]
- elseif camp == CombatDefine.CAMP_TYPE5 then
- jianshangRate = jianshangRate + attr[RoleDefine.CAMP_JIANSHANG_RATE5]
- end
- return jianshangRate
- end
- function getCampHurtRate(attacker,defender)
- local attr = attacker.attr
-
- --阵营相关伤害加成
- local extraHurtRate = 0
- if defender.camp == CombatDefine.CAMP_TYPE1 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.CAMP_HURT_RATE1]
- elseif defender.camp == CombatDefine.CAMP_TYPE2 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.CAMP_HURT_RATE2]
- elseif defender.camp == CombatDefine.CAMP_TYPE3 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.CAMP_HURT_RATE3]
- elseif defender.camp == CombatDefine.CAMP_TYPE4 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.CAMP_HURT_RATE4]
- elseif defender.camp == CombatDefine.CAMP_TYPE5 then
- extraHurtRate = extraHurtRate + attr[RoleDefine.CAMP_HURT_RATE5]
- end
- return extraHurtRate
- end
|