So I'm waiting for the npc to kill it's first victim... When it does, it calls the non-aggro function and stops even though there are other victims right next to it... I believe the bug is that it still detects the dead victim but still goes to the else statement because that victim's health is < 1. How am I supposed to fix this?? I'm so confused!

function findNearestTorso(pos)
	local list = game.Workspace:GetChildren()
	local torso = nil
	local dist = configs.Range.Value
	local temp = nil
	local human = nil
	local temp2 = nil
	for _,list in pairs(workspace:GetChildren()) do
		temp2 = list
		human = temp2:FindFirstChild("Humanoid")
		if (temp2.className == "Model") and human and (temp2 ~= script.Parent) and temp2:FindFirstChild("IsSoldier") and temp2:WaitForChild("IsSoldier").Value == false then
			temp = temp2:FindFirstChild("Torso")
			local player = game.Players:GetPlayerFromCharacter(temp2) 
			if not player and temp and human and temp.Transparency ~= 1 and human.Health > 0 and human.Parent.Name ~= "Soldier" and (temp.Position - pos).magnitude < dist then
					local tochr = temp.Position - pos
					local toPlayerRay = Ray.new(script.Parent.Head.Position, tochr)
					local part = workspace:FindPartOnRay(toPlayerRay, script.Parent)
					if part and part:IsDescendantOf(temp.Parent) then
						torso = temp
						Aggro()
				end
				elseif player and player.TeamColor ~= BrickColor.new("Bright blue") and temp and human and temp.Transparency ~= 1 and human.Health > 0 and (temp.Position - pos).magnitude < dist  then
					local tochr = temp.Position - pos
					local toPlayerRay = Ray.new(script.Parent.Head.Position, tochr)
					local part = workspace:FindPartOnRay(toPlayerRay, script.Parent)
					if part and part:IsDescendantOf(temp.Parent) then
						torso = temp
						Aggro()
					end
			else
				print("no more targets wtf")
				torso = nil
				NonAggro()
			end
		end
	end
	return torso
end