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
