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

新增targetMode.lua的handler24方法

mafei 1 год назад
Родитель
Сommit
88bf09bf46
1 измененных файлов с 38 добавлено и 20 удалено
  1. 38 20
      script/module/combat/TargetMode.lua

+ 38 - 20
script/module/combat/TargetMode.lua

@@ -518,6 +518,44 @@ local function handler21(attacker,targetMode)
 	end
 end
 
+
+--职业+攻击力排名
+--[[
+	@param2 = {
+		handlerID,
+		side
+		cnt,
+		jobs,    职业列表
+	}
+]]
+local function handler24(attacker,targetMode)
+	local targetSide = getTargetSide(attacker,targetMode)
+	local targetList = {}
+	local jobs = targetMode[4] or {}
+	for _,pos in ipairs(CombatDefine.DEFAULT_TARGET_POS3[targetSide]) do
+		local obj = getObj(pos)
+		if canTarget(obj) then 
+			table.insert(targetList,obj)
+		end
+	end
+	local attr = RoleDefine.ATK
+	-- 降序排列
+	table.sort(targetList,function(a,b)
+		local a_attr = CombatObj.getValue(a,attr)
+		local b_attr = CombatObj.getValue(b,attr) 
+		ret = a_attr > b_attr
+		if a_attr== b_attr then 
+			local a_idx = table.find(jobs,a.job)
+			local b_idx = table.find(jobs,b.job)
+			if a_idx ~= b_idx then 
+				return a_idx < b_idx
+			end
+		end
+		return ret
+	end)
+
+end
+
 ------------------------------------ 未实现功能 分界线   ------------------------------------
 --技能目标(所有目标)
 function handler11(attacker,targetMode,skillTargets)
@@ -861,26 +899,6 @@ function handler23(attacker,targetMode,skillTargets)
 end
 
 
---职业+攻击力排名
-function handler24(attacker,targetMode)
-	local targetSide = getTargetSide(attacker,targetMode)
-	--if targetSide ~= CombatDefine.ATTACK_SIDE and targetSide ~= CombatDefine.DEFEND_SIDE then
-	--	assert()
-	--end
-	local cnt = targetMode[3] or CombatDefine.COMBAT_HERO_ALL_CNT
-	local atkPos = attacker.backupPos or attacker.pos
-	atkPos = atkPos % CombatDefine.COMBAT_HERO_ALL_CNT
-	for _,pos in ipairs(CombatDefine.DEFAULT_TARGET_POS3[targetSide]) do
-		local obj = getObj(pos)
-
-		if canTarget(obj)  and obj.pos ~= attacker.pos then 
-			targets[#targets+1] = obj
-		end
-		if #targets >= cnt then
-			return 
-		end
-	end
-end
 
 --职业优先
 function handler25(attacker,targetMode)