فهرست منبع

新增战斗效果:1-攻击时不被反击 2.使用技能时有概率增加技能伤害

gitxsm 7 ماه پیش
والد
کامیت
ef754844da
3فایلهای تغییر یافته به همراه52 افزوده شده و 1 حذف شده
  1. 38 0
      script/module/combat/BeSkill.lua
  2. 4 1
      script/module/combat/CombatCalc.lua
  3. 10 0
      script/module/combat/Skill.lua

+ 38 - 0
script/module/combat/BeSkill.lua

@@ -252,6 +252,7 @@ BESKILL_TYPE68 = 68 --血族英雄特殊处理
 BESKILL_TYPE69 = 69 --血族英雄特殊处理
 BESKILL_TYPE70 = 70 --增加的属性激活就生效(计入面板属性)并且概率连击
 BESKILL_TYPE71 = 71	--回合开始 在其他buff添加结束
+BESKILL_TYPE72 = 72	-- 不施放技能,只用来做其他效果的判断条件
 
 
 NO_CHECK_FANJI_LIST = {
@@ -1724,9 +1725,33 @@ function getOutAtkRate(attacker, defender)
           end
        end 
     end
+
     return outAtkRate
 end
 
+function getOutAtkRate2(attacker, skillConfig)
+	local outAtkRate = 0
+	for _, v in ipairs(attacker.beSkillList[BESKILL_TYPE72] or {})  do
+		local config = Skill.GetSkillConfig(v[1])
+		if config.cmd == "addHurtRateByRand" then
+			local addHurtRate = 0
+			for _, skillInfo in ipairs(config.beSkillArgs[2]) do
+				if table.find(skillInfo[1], skillConfig.id) then
+					addHurtRate = skillInfo[2]
+					break
+				end
+			end
+
+			local randVal = math.random(0, 10000)
+			if randVal <= config.beSkillArgs[1] then
+				outAtkRate = outAtkRate + addHurtRate
+			end
+		end
+	end
+	return outAtkRate
+end
+
+
 
 function getExtraHurtRate(attacker,defender,skillConfig)
 	if not attacker or attacker.isPet then
@@ -2242,4 +2267,17 @@ function getStatusPojia(attacker, defender)
       end
    end
    return poJia
+end
+
+-- 是否不会被反击
+function isNoFanji(obj)
+	if obj.beSkillList[BESKILL_TYPE72] then
+		for _, v in ipairs(obj.beSkillList[BESKILL_TYPE72]) do
+			local skillConfig = Skill.GetSkillConfig(v[1])
+			if skillConfig.cmd == "noFanji" then
+				return true
+			end
+        end
+	end
+	return false
 end

+ 4 - 1
script/module/combat/CombatCalc.lua

@@ -261,7 +261,6 @@ end
 local function getBeSkillOutRate(attacker, defender, skillConfig, index, targets)
     -- 被动技能影响的输出率
     local outBeSkillRate = BeSkill.getOutAtkRate(attacker, defender)
-
     outBeSkillRate = 10000 - outBeSkillRate
     outBeSkillRate = outBeSkillRate < 0 and 0 or outBeSkillRate
 
@@ -287,6 +286,10 @@ local function getOutRate(attacker, defender, skillConfig, index, targets)
        hurtRate = hurtRate + CombatImpl.fightMode[4]
     end
 
+    local outBeSkillRate = BeSkill.getOutAtkRate2(attacker, skillConfig)
+    hurtRate = hurtRate + outBeSkillRate
+
+
     -- 战斗模式的伤害加成(死战)
     
     local fentanRate = getFentanRate(skillConfig, targets)

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

@@ -950,6 +950,16 @@ function CMD.fanji(obj,skillConfig,skillTargets)
 	if obj.hp > 0 then
 		local r = math.random(0,10000)
 		if r < skillConfig.args[2] then
+			for i=#skillTargets, 1, -1 do
+				if BeSkill.isNoFanji(skillTargets[i]) then
+					table.remove(skillTargets, i)
+				end
+			end
+
+			if #skillTargets == 0 then
+				return
+			end
+
 			CombatImpl.fanjiList[#CombatImpl.fanjiList + 1] = {obj,skillConfig.args[1],skillTargets}
 		end
 	end