Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local PathFindingService = game:GetService("PathfindingService")
- local deaths = workspace.Deaths
- local PATROL_DELAY = 0
- local enemy = script.Parent.Parent
- local humanoid = enemy.Humanoid
- local humanoidRootPart = enemy.HumanoidRootPart
- local pointA = workspace.Firetowers.FireSentry2.UpperTorso
- local pointB = workspace.Firetowers.FireSentry1.UpperTorso
- local currentDestination = pointA
- local my_target = nil
- local p = nil
- local points = nil
- local plr_value = false
- local minion_value = false
- local enabled = true
- local animation = Instance.new("Animation")
- animation.AnimationId = "http://www.roblox.com/asset/?id=1998751758"
- function distance_to_object(obj)
- local total = nil
- if obj then
- local magn = (obj.UpperTorso.Position - script.Parent.Parent.UpperTorso.Position).magnitude
- total = magn
- end
- return total
- end
- function Find_Nearest(plr, minion, tower)
- local nearest = nil
- if minion ~= nil then
- local plr_magn = (humanoidRootPart.Position - plr:WaitForChild("UpperTorso").Position).magnitude
- local minion_magn = (humanoidRootPart.Position - minion:WaitForChild("UpperTorso").Position).magnitude
- local tower_magn = (humanoidRootPart.Position - tower:WaitForChild("UpperTorso").Position).magnitude
- if plr_magn < minion_magn and plr_magn < tower_magn then
- nearest = plr_magn
- return plr
- elseif minion_magn < plr_magn and minion_magn < tower_magn then
- nearest = minion_magn
- return minion
- elseif tower_magn < plr_magn and tower_magn < minion_magn then
- nearest = tower_magn
- return tower
- end
- end
- end
- function Calculate_Path(start, target)
- local startingPosition = start.Position
- local goalPosition = target:WaitForChild("UpperTorso").Position
- local path = PathFindingService:FindPathAsync(startingPosition, goalPosition)
- return path:GetWaypoints()
- end
- while wait() do
- local Moveloop = coroutine.create(function()
- while wait() do
- local currentplayer = nil
- local currentminion = nil
- local current_tower = nil
- local player = workspace.Teams.Red:GetChildren()
- local minion = workspace.FireMinions:GetChildren()
- local tower = workspace.Firetowers:GetChildren()
- for i, object in pairs(player) do
- currentplayer = object
- end
- for i, object in pairs(minion) do
- currentminion = object
- end
- for i, object in pairs(tower) do
- current_tower = object
- end
- my_target = Find_Nearest(currentplayer, currentminion, current_tower)
- if my_target ~= nil then
- if distance_to_object(my_target) > 4 then
- humanoid.WalkSpeed = 10
- p = Calculate_Path(humanoidRootPart, my_target)
- for waypointIndex,waypoint in pairs(p) do
- humanoid:MoveTo(waypoint.Position)
- script.Parent.MoveToFinished:Wait()
- end
- else
- humanoid.WalkSpeed = 0
- local animTrack = humanoid:LoadAnimation(animation)
- enabled = false
- wait(.01)
- animTrack:Play()
- wait(1)
- enabled = true
- animTrack:Stop()
- end
- end
- end
- end)
- coroutine.resume(Moveloop)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement