Răsfoiți Sursa

targetMode 新增handler8表示血量蓝量筛选

mafei 1 an în urmă
părinte
comite
82b6e0d2f9
1 a modificat fișierele cu 42 adăugiri și 22 ștergeri
  1. 42 22
      script/module/combat/TargetMode.lua

+ 42 - 22
script/module/combat/TargetMode.lua

@@ -273,6 +273,48 @@ local function handler7(attacker,targetMode)
 	end
 end
 
+--当前最低
+--[[
+	@param2 = {
+		handlerID,
+		side,
+		cnt,
+		hp/mp, -- 血量还是蓝量
+		order,
+	}
+]]
+local function handler8(attacker,targetMode)
+	local cnt = targetMode[3] or 1
+	local status =  "hp" -- 默认是HP
+	if targetMode[4] == 2 then 
+		status = "mp"
+	end
+	local order = targetMode[5] or 0 -- 默认升序
+	local targetSide = getTargetSide(attacker,targetMode)
+	local targetList = {}
+	for _,pos in ipairs(CombatDefine.DEFAULT_TARGET_POS3[targetSide]) do
+		local obj = getObj(pos)
+		if canTarget(obj) then 
+			targetList[#targetList+1] = obj
+		end
+	end 
+	table.sort(targetList,function(a,b)
+		local a_value = a[status] or 0
+		local b_value = b[status] or 0
+		local ret  = a_value < b_value
+		if order ~= 0 then 
+			ret = a_value > b_value
+		end
+		return ret
+	end)
+	for i = 1,cnt do 
+		targets[#targets + 1] = targetList[i]
+		if #targets >= cnt then 
+			break
+		end
+	end
+end
+
  -- 选择正前方一列的X目标
  --[[
 	@param2 = {
@@ -694,28 +736,6 @@ function handler5(attacker,targetMode)
 	-- abandon
 end
 
-
---血量最高
-function handler8(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
-
 --攻击最高
 --[[
 	attacker = {