Преглед на файлове

1。增加选择目标策略38 2.增加新英雄技能效果

gitxsm преди 1 месец
родител
ревизия
b65bb38c7c
променени са 3 файла, в които са добавени 97 реда и са изтрити 0 реда
  1. 27 0
      script/module/combat/BeSkill.lua
  2. 36 0
      script/module/combat/CombatBuff.lua
  3. 34 0
      script/module/combat/TargetMode.lua

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

@@ -504,6 +504,29 @@ local function isCanRevive(obj, attacker , data)
 	return true
 end
 
+-- 连击检测
+local function comboCheck(targetObj, side)
+	if Skill.GroupSkillCnt ~= 1 then return end--技能包首次技能攻击才能触发
+
+	for _,pos in ipairs(CombatDefine.SIDE2POS[side]) do
+		local obj = CombatImpl.objList[pos]
+		if obj and obj.beSkillList then
+			for _, skillInfo in ipairs(obj.beSkillList[BESKILL_TYPE72] or {}) do
+				local skillCfg = Skill.GetSkillConfig(skillInfo[1])
+				if skillCfg and skillCfg.cmd == "comboProb" then
+					local comboProbVal = skillCfg.beSkillArgs[1] or 0
+					local randval = math.random(0, 10000)
+					if comboProbVal >= randval then
+						CombatImpl.comboList[#CombatImpl.comboList + 1] = {targetObj, 1}
+					end
+				end
+			end
+		end
+    end
+end
+
+
+
 function onSkillID(obj,skillID)
 	--local skillConfig = SkillExcel[skillID]
 	local skillConfig = Skill.GetSkillConfig(skillID)
@@ -945,8 +968,12 @@ function onHit(attacker,targets,skillID)
 			end
 		end
 	end
+
+	comboCheck(attacker, side)
 end
 
+
+
 function onHp(obj, hurt, attackPos)
 	if obj.beSkillList[BESKILL_TYPE3] then
 		for _,v in ipairs(obj.beSkillList[BESKILL_TYPE3]) do

+ 36 - 0
script/module/combat/CombatBuff.lua

@@ -306,6 +306,37 @@ local function isMiankong(obj, cmd, attacker, skillKongRate)
 	end
 end
 
+-- 是否可能被禁止增加buff
+local function isBanBuff(obj, cmd)
+	initCombatBufferType()
+	if BUFFER_COMBAT_TYPE[cmd] and BUFFER_COMBAT_TYPE[cmd] == 2 then
+		local res, _, ind = isStatus(obj, { "linghun" })
+		if not res then
+			return false
+		end
+
+		local buffList = getBuffer(obj)
+		local buff = buffList[ind]
+		if not buff then
+			return false
+		end
+
+		local buffCfg = GetBuffConfig(buff.id)
+		if not buffCfg then
+			return false
+		end
+
+		local banProbVal = buffCfg.args[1] or 0
+		local randval = math.random(0, 10000)
+		if banProbVal >= randval then
+			return true
+		end
+	end
+
+	return false
+end
+
+
 function getStatus(obj)
 	return obj.bufferCmd or {}
 end
@@ -635,6 +666,11 @@ local function canAdd(obj, id, random, attacker, skillConfig)
 	-- 		return
 	-- 	end
 	-- end
+
+	if isBanBuff(obj, conf.cmd) then
+		return
+	end
+
 	return true
 end
 --根据cmd删除buff

+ 34 - 0
script/module/combat/TargetMode.lua

@@ -1401,6 +1401,39 @@ local function handler37(attacker,targetMode,skillTargets)
 end
 
 
+-- 从全体中根据职业选择
+--[[
+	@param2 = {
+		handlerID,
+		side    0: 全部双方  1:敌方 2: 己方
+		jobList    -- 职业集合
+		onjCnt 目标数量, 默认1
+	}
+]]
+local function handler38(attacker,targetMode,skillTargets)
+	local targetSide = getTargetSide(attacker,targetMode)
+	local jobList = targetMode[3] or {}
+	local cnt = targetMode[4] or 1
+
+	local targetList = {}
+	for _,pos in ipairs(CombatDefine.DEFAULT_TARGET_POS3[targetSide]) do
+		local obj = getObj(pos)
+		if canTarget(obj) and table.find(jobList, obj.job) then
+			targetList[#targetList+1] = obj
+		end
+	end
+
+
+	for _, obj in ipairs (targetList) do
+		if #targets >= cnt then
+			break
+		end
+
+		targets[#targets + 1] = obj
+	end
+end
+
+
 ------------------------------ 分界线 ------------------------------
 -- 目前是一样了,等策划配置好skill表后删掉 @mafei
 local function handler3(attacker,targetMode)
@@ -1446,5 +1479,6 @@ handler[34] = handler34	--从技能目标中根据职业选择
 handler[35] = handler35	--从全体中根据种族选择
 handler[36] = handler36	--按照属性X排序,选择前Y个目标, 且排除技能施放者,属性值需要比技能施放者高/低
 handler[37] = handler37 -- 在技能目标中选择友方/敌方
+handler[38] = handler38	--从全体中根据职业选择
 
 --对象选择器end