Просмотр исходного кода

1.只能新buff-liuxue2 2.修改分摊buff会分摊debuff的bug,相关改动代码处于屏蔽状态,需要更新到线上再打开

gitxsm 1 год назад
Родитель
Сommit
558c56ea3e

+ 1 - 1
script/module/combat/BeSkill.lua

@@ -1060,7 +1060,7 @@ function onAddBuffer(obj,buffer)
 	local conf = BufferExcel[buffer.id]
 	local attacker = CombatImpl.objList[buffer.attackPos]
 	local cmd = conf.cmd
-	if cmd == "hurt" or cmd == "liuxue" or cmd == "zhongdu" or cmd == "ranshao" then
+	if cmd == "hurt" or cmd == "liuxue"or cmd == "liuxue2" or cmd == "zhongdu" or cmd == "ranshao" then
 		if obj.beSkillList[BESKILL_TYPE10] then
 			for _,v in ipairs(obj.beSkillList[BESKILL_TYPE10]) do
 				use(obj,{attacker},v)

+ 42 - 2
script/module/combat/CombatBuff.lua

@@ -16,7 +16,7 @@ local ProjectLogic = require("platform.ProjectLogic")
 
 --和血量相关的作用
 local function isHpCmd(cmd)
-	if cmd == "hp" or cmd == "hurt" or cmd == "hurt1" or cmd == "liuxue" or cmd == "zhongdu" or cmd == "ranshao" or cmd == "ranshao1" or cmd == "huiheYinji" then
+	if cmd == "hp" or cmd == "hurt" or cmd == "hurt1" or cmd == "liuxue" or cmd == "liuxue2" or cmd == "zhongdu" or cmd == "ranshao" or cmd == "ranshao1" or cmd == "huiheYinji" then
 		return true
 	end
 	return false
@@ -155,6 +155,7 @@ CMD2KEY = {
 	["ranshao"] = RoleDefine.STATUS_MIANYI_RATE5,
 	["ranshao1"] = RoleDefine.STATUS_MIANYI_RATE5,
 	["liuxue"] = RoleDefine.STATUS_MIANYI_RATE6,
+	["liuxue2"] = RoleDefine.STATUS_MIANYI_RATE6,
 	["zhongdu"] = RoleDefine.STATUS_MIANYI_RATE7,
     ["hunluan"] = RoleDefine.STATUS_MIANYI_RATE9,
 }
@@ -1305,6 +1306,35 @@ local function chixuHurtDel(target,buffer)
 	end
 	return hurt
 end
+
+--处理器, 实时计算伤害
+local function chixuHurtDel2(target,buffer)
+	local id = buffer.id
+	local conf = BufferExcel.buffer[id]
+	local attackPos = buffer.attackPos
+	local attacker
+	if attackPos > CombatDefine.COMBAT_HERO_ALL_CNT then
+		attacker = CombatImpl.helpList[attackPos]
+	else
+		attacker = CombatImpl.objList[attackPos]
+	end
+	local isAddHp = conf.cmd == "hp"
+	buffer.arg = CombatCalc.calcBufferHp(attacker,target,id,isAddHp)
+
+
+    local hurt = buffer.arg
+	local hurtDelRate = target.attr[RoleDefine.CHIXU_HURT_DEL_RATE] / 10000
+    --持续类buff 伤害加成
+    -- local attacker = CombatImpl.objList[buffer.attackPos]
+    -- local conf = BufferExcel.buffer[buffer.id]
+    local beSkillHurtRate = BeSkill.getBuffChixuHurt(attacker, conf.cmd)
+	hurtDelRate = hurtDelRate > 1 and 1 or hurtDelRate
+	if hurtDelRate > 0 or beSkillHurtRate > 0 then
+		hurt = hurt * (1 - hurtDelRate + beSkillHurtRate)
+	end
+	return hurt
+end
+
 handler = {}
 
 
@@ -1363,6 +1393,7 @@ function handler.hp(target, buffer,conf)
 	buffer.attrs[RoleDefine.HP_COMBAT] = hp
 	HANDLER_ONCE["hp"] = target.pos
 end
+
 --流血
 function handler.liuxue(target, buffer,conf)
 	local hurt = chixuHurtDel(target,buffer)
@@ -1370,6 +1401,15 @@ function handler.liuxue(target, buffer,conf)
 	buffer.attrs[RoleDefine.HP_COMBAT] = -hurt
 	onExtraCombatRecord(buffer.attackPos,hurt,"liuxue")
 end
+
+--流血2
+function handler.liuxue2(target, buffer,conf)
+	local hurt = chixuHurtDel2(target,buffer)
+	local d = CombatObj.updateHp(target, -hurt, nil, nil, buffer.attackPos,CombatObj.BUFFER_HP_TYPE)
+	buffer.attrs[RoleDefine.HP_COMBAT] = -hurt
+	onExtraCombatRecord(buffer.attackPos,hurt,"liuxue")
+end
+
 --中毒
 function handler.zhongdu(target, buffer,conf)
 	local hurt = chixuHurtDel(target,buffer)
@@ -1563,7 +1603,7 @@ function qingsuan(target)
 		local buffer = target.buffer[j]
 		local conf = BufferExcel.buffer[buffer.id]
 		local cmd = conf.cmd
-		if cmd == "ranshao" or cmd == "ranshao1" or cmd == "liuxue" or cmd == "zhongdu" or cmd == "hurt" or cmd == "hurt1" then
+		if cmd == "ranshao" or cmd == "ranshao1" or cmd == "liuxue"or cmd == "liuxue2" or cmd == "zhongdu" or cmd == "hurt" or cmd == "hurt1" then
 			round = 1
 			if buffer.round and buffer.round > 0 then
 				round = buffer.round

+ 10 - 0
script/module/combat/CombatObj.lua

@@ -491,6 +491,11 @@ function getStatusHurtRate(attacker,defender)
 	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
@@ -523,6 +528,9 @@ function getStatusBaoji(attacker,defender)
 	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
@@ -551,6 +559,8 @@ function getStatusBaojiHurtRate(attacker,defender)
 		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

+ 4 - 2
script/module/combat/Skill.lua

@@ -67,7 +67,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)
+		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
@@ -83,9 +83,11 @@ local function realUse(obj, skillID, fanjiTargets,otherArgs)
 		   CombatImpl.setSaySkill(obj.pos,skillConfig.id,skillConfig.contentType)
 	    end
 
-
 		attack(obj, targets, skillConfig)
 
+		--战斗对象有分摊buff后导致会分摊debuff的修改, 如果需要更新到线上就把注释打开
+		--targets = TargetMode.getTargets(obj, skillConfig.targetMode, fanjiTargets, nil, true, skillConfig.type == CombatDefine.SKILL_TYPE1, skillID)
+
 		if not fanjiTargets and skillConfig.otherArgs.addBuffBeforeCmd then
 			CombatBuff.onHit(obj,targets,skillConfig)
 		end

+ 5 - 2
script/module/combat/TargetMode.lua

@@ -161,7 +161,7 @@ local function handlerStatus(attacker,status)
 end
 --
 CAN_EMPTY_TARGET = { [22] = 1 }
-function getTargets(attacker, targetMode, skillTargets, cmdTargets, checkChaofen, isNormalAtk, skillID)
+function getTargets(attacker, targetMode, skillTargets, cmdTargets, checkChaofen, isNormalAtk, skillID, isNeedFentanObjs)
     for i = 1, #targets do
         targets[i] = nil
     end
@@ -202,7 +202,10 @@ function getTargets(attacker, targetMode, skillTargets, cmdTargets, checkChaofen
             handler[1](attacker, targetMode, skillTargets)
         end
 
-        handlerFenTan(attacker, targetMode, skillTargets, cmdTargets, skillID)
+		--战斗对象有分摊buff后导致会分摊debuff的修改, 如果需要更新到线上就把注释打开
+		--if isNeedFentanObjs then
+			handlerFenTan(attacker, targetMode, skillTargets, cmdTargets, skillID)
+		--end
     end
     local ret = { }
     for _, v in ipairs(targets) do