local MonsterRelevant = {}
function MonsterRelevant.CheckKillMonsterWithoutKillSpecifiedMonster(mapAchievementData, AchievementDataDic)
	for _, nMonsterId in ipairs(mapAchievementData.ClientCompleteParams1) do
		for nCharId, mapKillDic in pairs(AchievementDataDic.killDataDic) do
			if mapKillDic:ContainsKey(nMonsterId) then
				return 0
			end
		end
	end
	for _, nMonsterId in ipairs(mapAchievementData.ClientCompleteParams2) do
		for nCharId, mapKillDic in pairs(AchievementDataDic.killDataDic) do
			if mapKillDic:ContainsKey(nMonsterId) then
				return 1
			end
		end
	end
	return 0
end
function MonsterRelevant.CheckKillMonsterWithOneAttack(mapAchievementData, AchievementDataDic)
	local nTarget = mapAchievementData.ClientCompleteParams1[1]
	local nTargetChar = mapAchievementData.ClientCompleteParams2[1]
	for nCharId, nCount in pairs(AchievementDataDic.OnceSkillKillCountDic) do
		if (#nTargetChar == 0 or 0 < table.indexof(nTargetChar, nCharId)) and nCount > nTarget then
			return 1
		end
	end
	return 0
end
function MonsterRelevant.KillMonsterClass(mapAchievementData, AchievementDataDic)
	local nCount = 0
	local tbTarget = mapAchievementData.ClientCompleteParams1
	local tbTargetChar = mapAchievementData.ClientCompleteParams2
	for nCharId, mapKillDic in pairs(AchievementDataDic.killDataDic) do
		if #tbTargetChar == 0 or 0 < table.indexof(tbTargetChar, nCharId) then
			for nMonsterId, nKillCount in pairs(mapKillDic) do
				local mapMonsterCfg = ConfigTable.GetData("Monster", nMonsterId)
				if mapMonsterCfg ~= nil and 0 < table.indexof(tbTarget, mapMonsterCfg.EpicLv) then
					nCount = nCount + nKillCount
				end
			end
		end
	end
	return nCount
end
function MonsterRelevant.KillMonsterWithTag(mapAchievementData, AchievementDataDic)
	local nCount = 0
	local nTargetChar = mapAchievementData.ClientCompleteParams1
	local tbTarget = mapAchievementData.ClientCompleteParams3
	if tbTarget == nil then
		return 0
	end
	for nCharId, mapKillDic in pairs(AchievementDataDic.killDataDic) do
		if #nTargetChar == 0 or 0 < table.indexof(nTargetChar, nCharId) then
			for nMonsterId, nKillCount in pairs(mapKillDic) do
				local mapMonsterCfg = ConfigTable.GetData("Monster", nMonsterId)
				if mapMonsterCfg ~= nil then
					if 0 < table.indexof(mapMonsterCfg.Tag1, tbTarget) then
						nCount = nCount + nKillCount
					elseif 0 < table.indexof(mapMonsterCfg.Tag2, tbTarget) then
						nCount = nCount + nKillCount
					elseif 0 < table.indexof(mapMonsterCfg.Tag3, tbTarget) then
						nCount = nCount + nKillCount
					elseif 0 < table.indexof(mapMonsterCfg.Tag4, tbTarget) then
						nCount = nCount + nKillCount
					elseif 0 < table.indexof(mapMonsterCfg.Tag5, tbTarget) then
						nCount = nCount + nKillCount
					end
				end
			end
		end
	end
	return nCount
end
function MonsterRelevant.KillMonsterWithSkin(mapAchievementData, AchievementDataDic)
	local nCount = 0
	local tbTargetSkin = mapAchievementData.ClientCompleteParams1
	if tbTargetSkin == nil then
		return 0
	end
	for _, mapKillDic in pairs(AchievementDataDic.killDataDic) do
		if 0 < #tbTargetSkin then
			for nMonsterId, nKillCount in pairs(mapKillDic) do
				local mapMonsterCfg = ConfigTable.GetData("Monster", nMonsterId)
				if mapMonsterCfg ~= nil then
					local nFAId = mapMonsterCfg.FAId
					if 0 < table.indexof(tbTargetSkin, nFAId) then
						nCount = nCount + nKillCount
					end
				end
			end
		end
	end
	return nCount
end
return MonsterRelevant
