|
|
@@ -28,7 +28,6 @@ local function calcHp(attacker,target,calcType,rate,limit,isAddHp,param, flag)
|
|
|
end
|
|
|
|
|
|
|
|
|
-
|
|
|
function GetSkillConfig(skillId)
|
|
|
return weaponSkillConfig[skillId] or SkillExcel[skillId]
|
|
|
end
|
|
|
@@ -43,8 +42,6 @@ function GetFinalSkillConfig(obj, skillId)
|
|
|
return GetSkillConfig(targetId)
|
|
|
end
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-- 技能释放条件检测表
|
|
|
COND_CMD = {}
|
|
|
|
|
|
@@ -52,8 +49,6 @@ COND_CMD = {}
|
|
|
COST_CMD = {}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-- 技能释放条件检查
|
|
|
function COND_CMD.attrCheck(obj, skillId)
|
|
|
local skillConfig = GetSkillConfig(skillId)
|
|
|
@@ -86,11 +81,6 @@ function COST_CMD.attrCheck(obj, skillConfig)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-- 技能释放条件检测
|
|
|
function SkillCondCheck(obj, skillId)
|
|
|
local skillConfig = GetSkillConfig(skillId)
|
|
|
@@ -108,6 +98,18 @@ function SkillCondCheck(obj, skillId)
|
|
|
end
|
|
|
|
|
|
|
|
|
+-- 等释放技能完后的处理
|
|
|
+function ExtraHandle(obj, args)
|
|
|
+ if not args then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ local hanleType = args[1]
|
|
|
+ if hanleType == 1 then
|
|
|
+ CombatBuff.AddHPByXishouBuff(obj, args[2], -args[3])
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
|
|
|
function setSkill(obj,config,skinConfig)
|
|
|
config = skinConfig or config
|
|
|
@@ -349,8 +351,10 @@ function attack(obj, targets, skillConfig)
|
|
|
obj.isAllCalcHp = index == #targets
|
|
|
target.attackSkillID = skillConfig.id
|
|
|
local hpValue,srcValue = 0,0
|
|
|
+
|
|
|
+ local extraHandleTb
|
|
|
if hurt > 0 then
|
|
|
- hpValue,srcValue = CombatObj.updateHp(target, -hurt,nil,true, obj.pos,CombatObj.SKILL_HP_TYPE)
|
|
|
+ hpValue,srcValue, extraHandleTb = CombatObj.updateHp(target, -hurt,nil,true, obj.pos,CombatObj.SKILL_HP_TYPE)
|
|
|
|
|
|
if hpValue < 0 and CombatBuff.isStatus(target, {"chenshui"}) then
|
|
|
CombatBuff.DelBuffByCmd(target, "chenshui", 999)
|
|
|
@@ -361,6 +365,11 @@ function attack(obj, targets, skillConfig)
|
|
|
|
|
|
CombatImpl.setSkillHit(target,srcValue,nil,flag,obj,skillConfig.id)
|
|
|
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
+
|
|
|
+
|
|
|
if target.isShanBi ~= 1 then
|
|
|
len = len + 1
|
|
|
hitList[len] = target
|
|
|
@@ -418,13 +427,17 @@ function CMD.hp(obj,skillConfig,skillTargets)
|
|
|
if target.side == CombatDefine.DEFEND_SIDE then
|
|
|
hp = CombatImpl.commonArgs.hpLimit or hp
|
|
|
end
|
|
|
- local d = CombatObj.updateHp(target,hp,nil,true,obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,hp,nil,true,obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
local showHp = hp
|
|
|
if hp > 0 and d < 0 then
|
|
|
showHp = hp * (-1)
|
|
|
end
|
|
|
CombatImpl.setExtraHit(target, showHp, CMD2ID["hp"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
|
|
|
if hp < 0 then
|
|
|
@@ -501,12 +514,16 @@ function CMD.shixueHP(obj,skillConfig,skillTargets, hitObj)
|
|
|
if target.side == CombatDefine.DEFEND_SIDE then
|
|
|
hp = CombatImpl.commonArgs.hpLimit or hp
|
|
|
end
|
|
|
- local d = CombatObj.updateHp(target,hp,nil,true,obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,hp,nil,true,obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if hp > 0 and d < 0 then
|
|
|
hp = hp * (-1)
|
|
|
end
|
|
|
CombatImpl.setExtraHit(target, hp, CMD2ID["hp"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
@@ -552,12 +569,16 @@ function CMD.speedHp(obj,skillConfig,skillTargets)
|
|
|
if target.side == CombatDefine.DEFEND_SIDE then
|
|
|
hp = CombatImpl.commonArgs.hpLimit or hp
|
|
|
end
|
|
|
- local d = CombatObj.updateHp(target,hp,nil,true,obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,hp,nil,true,obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if hp > 0 and d < 0 then
|
|
|
hp = hp * (-1)
|
|
|
end
|
|
|
CombatImpl.setExtraHit(target,hp,CMD2ID["hp"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
@@ -597,12 +618,16 @@ function CMD.statusHp(obj,skillConfig,skillTargets)
|
|
|
if target.side == CombatDefine.DEFEND_SIDE then
|
|
|
hp = CombatImpl.commonArgs.hpLimit or hp
|
|
|
end
|
|
|
- local d = CombatObj.updateHp(target,hp,nil,true,obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,hp,nil,true,obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if hp > 0 and d < 0 then
|
|
|
hp = hp * (-1)
|
|
|
end
|
|
|
CombatImpl.setExtraHit(target,hp,CMD2ID["hp"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
@@ -627,12 +652,16 @@ function CMD.hurt(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -661,12 +690,16 @@ function CMD.behurt(obj,skillConfig,skillTargets)
|
|
|
end
|
|
|
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["behurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -690,12 +723,16 @@ function CMD.hurtwalun(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurtwalun"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -734,12 +771,16 @@ function CMD.posHurt(obj,skillConfig,skillTargets)
|
|
|
if bfind then
|
|
|
hp = calcHp(obj,target,calcType,rate,limit, false)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
@@ -764,12 +805,16 @@ function CMD.hurtxia(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurtxia"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -793,12 +838,16 @@ function CMD.hurtmingli(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurtmingli"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -822,12 +871,16 @@ function CMD.hurtmingli2(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurtmingli2"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -851,12 +904,16 @@ function CMD.hurtguangci(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurtguangci"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -882,12 +939,16 @@ function CMD.jobHurt(obj,skillConfig,skillTargets)
|
|
|
if target.job == job then
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp and hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["jobHurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
@@ -915,12 +976,16 @@ function CMD.statusHurt(obj,skillConfig,skillTargets)
|
|
|
if CombatBuff.isStatus(target, status) then
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp and hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["jobHurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
@@ -938,12 +1003,16 @@ function CMD.hpHurt(obj,skillConfig,skillTargets)
|
|
|
if target.hp >= hpLimit then
|
|
|
hp = calcHp(obj,target,calcType,rate)
|
|
|
if hp and hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hpHurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
@@ -995,10 +1064,14 @@ function CMD.qingsuan(obj,skillConfig,skillTargets)
|
|
|
if limit and hurt > limit then
|
|
|
hurt = limit
|
|
|
end
|
|
|
- local d = CombatObj.updateHp(target,-hurt,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hurt,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
CombatImpl.setExtraHit(target,-hurt,CMD2ID["qingsuan"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -1092,11 +1165,15 @@ function CMD.qusan(obj,skillConfig,skillTargets)
|
|
|
if calcType and rate and cnt > 0 then
|
|
|
local hp = calcHp(obj,target,calcType,rate * cnt, limit, nil, nil, args[6])
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d,_, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["qusan"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
@@ -1157,12 +1234,16 @@ function CMD.hurtwalun2(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurtwalun2"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -1187,12 +1268,16 @@ function CMD.hurtxia2(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurtxia2"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -1217,12 +1302,16 @@ function CMD.hurtxia3(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurtxia3"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -1258,12 +1347,16 @@ function CMD.attributehurt(obj, skillConfig, skillTargets)
|
|
|
-- print("[attributehurt] 计算出来的最终伤害 nEndHurt = "..nEndHurt.." 获取到的敌方 属性ID = "
|
|
|
-- ..nEnemyAttrID.." 敌方属性值 "..nEnemyValue.." 开始 nBeginHurt "..nBeginHurt)
|
|
|
|
|
|
- local d = CombatObj.updateHp(tEnemyObj, -nEndHurt, nil, true, obj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(tEnemyObj, -nEndHurt, nil, true, obj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(tEnemyObj, -nEndHurt, CMD2ID["attributehurt"])
|
|
|
CombatObj.onHpCB(tEnemyObj, d, obj.pos, skillConfig.id)
|
|
|
ret[#ret+1] = tEnemyObj
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(tEnemyObj, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
|
|
|
return ret
|
|
|
@@ -1542,13 +1635,17 @@ function CMD.zhuiji(obj,skillConfig,skillTargets)
|
|
|
end
|
|
|
|
|
|
function CMD.baohu(obj,skillConfig,skillTargets)
|
|
|
- local d = CombatObj.updateHp(obj,obj.baohuHurt,nil,nil, obj.pos,CombatObj.BUFFER_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(obj,obj.baohuHurt,nil,nil, obj.pos,CombatObj.BUFFER_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
local attrs = {}
|
|
|
attrs[RoleDefine.BAOHU_COMBAT] = skillTargets[1].pos
|
|
|
CombatImpl.setExtraHit(obj,d,CMD2ID["baohu"],attrs)
|
|
|
CombatObj.onHpCB(obj,d, skillTargets[1].pos)
|
|
|
- end
|
|
|
+ end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(obj, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
|
|
|
function CMD.yinbaoZuzhou(obj,skillConfig,skillTargets)
|
|
|
@@ -1573,11 +1670,15 @@ function CMD.zuzhouHurt(obj, skillConfig, skillTargets)
|
|
|
local zuzhouHurt = obj.args * confArgs[2] / 10000
|
|
|
for _,target in ipairs(targets) do
|
|
|
if zuzhouHurt ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-zuzhouHurt,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-zuzhouHurt,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-zuzhouHurt,CMD2ID["zuzhouHurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
obj.args = nil
|
|
|
@@ -1594,11 +1695,15 @@ function CMD.zuzhouTrueHurt(obj, skillConfig, skillTargets)
|
|
|
local nZuZhouNum = #target.bufferCmd["zuzhou"]
|
|
|
local nHurt = baseHurt * nZuZhouNum
|
|
|
if nHurt > 0 then
|
|
|
- local d = CombatObj.updateHp(target, -nHurt,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target, -nHurt,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-nHurt,CMD2ID["zuzhouTrueHurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
@@ -1626,12 +1731,16 @@ function CMD.dnexhurt(obj,skillConfig,skillTargets)
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hp,nil,true, obj.pos,CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hp,CMD2ID["hurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
ret[#ret+1] = target
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
@@ -1682,11 +1791,15 @@ function CMD.targetBuffExtraEffect(obj,skillConfig,skillTargets)
|
|
|
end
|
|
|
hurt = calcHp(obj, target, calcType, rate, limitVale)
|
|
|
if hurt ~= 0 then
|
|
|
- local d = CombatObj.updateHp(target,-hurt,nil,true, obj.pos,CombatObj.SKILL_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(target,-hurt,nil,true, obj.pos,CombatObj.SKILL_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(target,-hurt,CMD2ID["hurt"])
|
|
|
CombatObj.onHpCB(target,d, obj.pos)
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(target, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
|
|
|
@@ -1720,11 +1833,15 @@ function CMD.buffDiffHurt(obj,skillConfig,skillTargets)
|
|
|
hurt = maxHurt
|
|
|
end
|
|
|
|
|
|
- local d = CombatObj.updateHp(targetObj, -hurt, nil, true, obj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(targetObj, -hurt, nil, true, obj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(targetObj, -hurt, CMD2ID["hurt"])
|
|
|
CombatObj.onHpCB(targetObj, d, obj.pos)
|
|
|
end
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(targetObj, extraHandleTb)
|
|
|
+ end
|
|
|
end
|
|
|
|
|
|
end
|
|
|
@@ -1762,33 +1879,45 @@ function CMD.exchangeHP(obj,skillConfig,skillTargets)
|
|
|
-- 施放者血量不能最低
|
|
|
if subHP > 0 then
|
|
|
-- 给目标加血量差值
|
|
|
- local d = CombatObj.updateHp(targetObj, subHP, nil, true, obj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
+ local d, _, extraHandleTb = CombatObj.updateHp(targetObj, subHP, nil, true, obj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(targetObj, subHP, CMD2ID["hp"])
|
|
|
CombatObj.onHpCB(targetObj, d, obj.pos)
|
|
|
end
|
|
|
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(targetObj, extraHandleTb)
|
|
|
+ end
|
|
|
+
|
|
|
-- 给施放者扣血量差值
|
|
|
- d = CombatObj.updateHp(obj, -subHP, nil, true, targetObj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
+ d, _, extraHandleTb = CombatObj.updateHp(obj, -subHP, nil, true, obj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
if d ~= 0 then
|
|
|
CombatImpl.setExtraHit(obj, -subHP, CMD2ID["hp"])
|
|
|
- CombatObj.onHpCB(obj, d, targetObj.pos)
|
|
|
+ CombatObj.onHpCB(obj, d, obj.pos)
|
|
|
end
|
|
|
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(targetObj, extraHandleTb)
|
|
|
+ end
|
|
|
|
|
|
-- 给施放者恢复一定血量
|
|
|
local calcType = args[1]
|
|
|
local rate = args[2]
|
|
|
local hp = calcHp(obj,targetObj, calcType, rate, nil, true)
|
|
|
|
|
|
- d = CombatObj.updateHp(obj,hp, nil, true, obj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
+ d, _, extraHandleTb = CombatObj.updateHp(obj,hp, nil, true, obj.pos, CombatObj.EXTRA_HP_TYPE)
|
|
|
local showHp = hp
|
|
|
if hp > 0 and d < 0 then
|
|
|
showHp = hp * (-1)
|
|
|
end
|
|
|
CombatImpl.setExtraHit(obj, showHp, CMD2ID["hp"])
|
|
|
CombatObj.onHpCB(obj,d, obj.pos)
|
|
|
+
|
|
|
+ if extraHandleTb then
|
|
|
+ ExtraHandle(targetObj, extraHandleTb)
|
|
|
+ end
|
|
|
+
|
|
|
end
|
|
|
end
|
|
|
end
|