|
|
@@ -66,6 +66,7 @@ local function realUse(obj, skillID, fanjiTargets,otherArgs)
|
|
|
CombatCalc.initAttacker(obj)
|
|
|
--print("skill realuse:",obj.pos,skillID,skillConfig.targetMode[1],skillConfig.targetMode[2])
|
|
|
local targets = TargetMode.getTargets(obj, skillConfig.targetMode, fanjiTargets, nil, true,skillConfig.type == CombatDefine.SKILL_TYPE1,skillID, true)
|
|
|
+
|
|
|
local len = #targets
|
|
|
if len < 1 then return end
|
|
|
for i=1, len do
|
|
|
@@ -92,7 +93,6 @@ local function realUse(obj, skillID, fanjiTargets,otherArgs)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
-
|
|
|
if not fanjiTargets and skillConfig.otherArgs.addBuffBeforeCmd then
|
|
|
CombatBuff.onHit(obj,newTargets,skillConfig)
|
|
|
end
|
|
|
@@ -1236,6 +1236,8 @@ function CMD.dnexhurt(obj,skillConfig,skillTargets)
|
|
|
if r > args[4] then
|
|
|
return
|
|
|
end
|
|
|
+
|
|
|
+
|
|
|
local calcType = args[1]
|
|
|
local rate = args[2]
|
|
|
local targets = TargetMode.getTargets(obj, args[3],skillTargets)
|
|
|
@@ -1245,6 +1247,7 @@ function CMD.dnexhurt(obj,skillConfig,skillTargets)
|
|
|
if args[5] then
|
|
|
limit = args[5] * CombatObj.getValue(obj,RoleDefine.ATK)
|
|
|
end
|
|
|
+
|
|
|
for _,target in ipairs(targets) do
|
|
|
hp = calcHp(obj,target,calcType,rate,limit)
|
|
|
if hp ~= 0 then
|
|
|
@@ -1257,4 +1260,60 @@ function CMD.dnexhurt(obj,skillConfig,skillTargets)
|
|
|
end
|
|
|
end
|
|
|
return ret
|
|
|
+end
|
|
|
+
|
|
|
+--拥有指定buff后的额外效果
|
|
|
+function CMD.targetBuffExtraEffect(obj,skillConfig,skillTargets)
|
|
|
+ local args = skillConfig.args
|
|
|
+ if not args then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ local targetBuffCmd = args[1]
|
|
|
+ local targetBuffCnt = args[2]
|
|
|
+ if not targetBuffCmd or not targetBuffCnt then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ local nowTargetBuffCnt = CombatBuff.getBuffCnt(obj, targetBuffCmd)
|
|
|
+ if nowTargetBuffCnt < targetBuffCnt then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ local targetMode = args[3]
|
|
|
+ local targets = TargetMode.getTargets(obj, targetMode, skillTargets)
|
|
|
+
|
|
|
+
|
|
|
+ local hurt, limitVale
|
|
|
+ local calcType, rate = args[4], args[5]
|
|
|
+
|
|
|
+
|
|
|
+ local maxNum = args[6] or 1
|
|
|
+ local nowNum = math.floor(nowTargetBuffCnt / targetBuffCnt)
|
|
|
+ if nowNum < maxNum then
|
|
|
+ maxNum = nowNum
|
|
|
+ end
|
|
|
+
|
|
|
+ local limitAttrType = args[7]
|
|
|
+ local limitAttrRate = args[8]
|
|
|
+ if limitAttrType and limitAttrRate then
|
|
|
+ limitVale = limitAttrRate * CombatObj.getValue(obj, limitAttrType)
|
|
|
+ end
|
|
|
+
|
|
|
+ table.shuffle(targets)
|
|
|
+ for idx, target in ipairs(targets) do
|
|
|
+ if idx > maxNum then
|
|
|
+ break
|
|
|
+ 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)
|
|
|
+ if d ~= 0 then
|
|
|
+ CombatImpl.setExtraHit(target,-hurt,CMD2ID["hurt"])
|
|
|
+ CombatObj.onHpCB(target,d, obj.pos)
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ CombatBuff.DelBuffByCmd(obj, targetBuffCmd, nowTargetBuffCnt)
|
|
|
end
|