For some reason they just dont spawn in game, i dont get any errors so thats why im going here to try to fix it
Here is the code for where they npcs spawn
local MobStructure = require(game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Modules"):WaitForChild("Structures"):WaitForChild("Mob"))
local SoundUtility = require(game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Modules"):WaitForChild("Utilities"):WaitForChild("Sound"))
local ObserverUtility = require(game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Modules"):WaitForChild("Utilities"):WaitForChild("Observer"))
local GameUtility = require(game:GetService("ReplicatedStorage"):WaitForChild("Shared"):WaitForChild("Modules"):WaitForChild("Utilities"):WaitForChild("Game"))
local MobSpawnPositions = require(script:WaitForChild("SpawnData"))
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local PhysicsService = game:GetService("PhysicsService")
local HttpService = game:GetService("HttpService")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
-- Assets
local SharedFolder = ReplicatedStorage:WaitForChild("Shared")
local SharedAssets = SharedFolder:WaitForChild("Assets")
local InteractorAssets = SharedAssets:WaitForChild("Interactors")
local InteractorModels = InteractorAssets:WaitForChild("Models")
local ToolAssets = SharedAssets:WaitForChild("Tools")
local ToolModels = ToolAssets:WaitForChild("Models")
-- Variables
local Player = Players.LocalPlayer
local WorkspaceMobs = workspace:WaitForChild("Mobs")
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
local HumanoidRootPart = Humanoid.RootPart
local Module = {}
Module["MaxRenderZones"] = 2
Module["ActiveAreaMobs"] = {}
Module["StoredAreaMobs"] = {}
Module["AttackingMobs"] = {}
Module["DeadAreaMobs"] = {}
Module["AttackUnitsPerZone"] = {} -- [Zone] = {[Area] = {Current, Max}, ...}
local AttackUnitsPerZone = Module["AttackUnitsPerZone"]
local ActiveAreaMobs = Module["ActiveAreaMobs"]
local StoredAreaMobs = Module["StoredAreaMobs"]
local AttackingMobs = Module["AttackingMobs"]
local DeadAreaMobs = Module["DeadAreaMobs"]
local MobPrototypes = MobStructure["Prototypes"]
local MobSetupData = MobStructure["Setups"]
local CharacterOrientationAttachment
local MobSpawnBoundaries = {}
-- Settings
local MinimumIdleYield = 5
local MaximumIdleYield = 50
local SeperatingString = "_"
local MobCollisionGroupName = "MobGroup"
local CharacterOrientationAttachmentName = "MobOrientationAttachment"
local DefaultBodyPosition = Vector3.new(-33.487, 1.35, 122.901)
local DamagePlayerDataIndex = "MobDamage"
local RewardPlayerDataIndex = "MobReward"
local DisabledHumanoidStates = {
Enum.HumanoidStateType.StrafingNoPhysics,
Enum.HumanoidStateType.PlatformStanding,
Enum.HumanoidStateType.RunningNoPhysics,
Enum.HumanoidStateType.FallingDown,
Enum.HumanoidStateType.GettingUp,
Enum.HumanoidStateType.Climbing,
Enum.HumanoidStateType.Swimming,
Enum.HumanoidStateType.Jumping,
Enum.HumanoidStateType.Running,
Enum.HumanoidStateType.Ragdoll,
Enum.HumanoidStateType.Physics,
Enum.HumanoidStateType.Flying,
Enum.HumanoidStateType.Seated,
Enum.HumanoidStateType.Dead,
}
local AreaTypes = {
"Circle",
"Triangle",
"Rectangle",
}
local MobStates = {
"Idle",
"Moving",
"Attacking",
"Dead",
}
-- Main
local function SetupMob(MobModel, MobInstances, MobInformation)
local MobHealth = MobInformation["Health"]
local MobHumanoid = MobModel:FindFirstChild("Humanoid")
local Animations = MobModel:FindFirstChild("Animations")
local ActivationRing = MobModel:FindFirstChild("ActivationRing")
local MobRootPart = MobModel.PrimaryPart
local MobOrientation = MobRootPart:FindFirstChild("MobOrientation")
local HealthBar
local HealthText
local MobDescendants = MobModel:GetDescendants()
for Index = 1, #MobDescendants do
local Part = MobDescendants[Index]
if Part:IsA("BasePart") then
PhysicsService:SetPartCollisionGroup(Part, MobCollisionGroupName)
print("HEart")
end
if Part:IsA("ImageLabel") and Part.Name == "Bar" then
HealthBar = Part
end
if Part:IsA("TextLabel") and Part.Name == "DisplayText" then
HealthText = Part
end
end
MobModel.Name = MobInformation["Name"]
HealthText.Text = MobHealth[1].."/"..MobHealth[2]
HealthBar.Size = UDim2.new(MobHealth[1]/MobHealth[2], 0, 1, 0)
for IndexTwo = 1, #DisabledHumanoidStates do
local State = DisabledHumanoidStates[IndexTwo]
MobHumanoid:SetStateEnabled(State, false)
end
--]]
MobInstances["Orientation"] = MobOrientation
MobInstances["Humanoid"] = MobHumanoid
MobInstances["RootPart"] = MobRootPart
MobInstances["ActivationRing"] = ActivationRing
MobInstances["Animations"] = Animations
MobInstances["HealthText"] = HealthText
MobInstances["HealthBar"] = HealthBar
return MobHumanoid
end
function Module.InitializeMobs()
for Zone, ZoneSetupData in next, MobSetupData do
AttackUnitsPerZone[Zone] = {}
for Area, AreaSetupData in next, ZoneSetupData do
local MobAmount = AreaSetupData["Amount"]
local MobTypes = AreaSetupData["Types"]
MobSpawnBoundaries[Area] = AreaSetupData["Boundary"]
ActiveAreaMobs[Area] = {}
StoredAreaMobs[Area] = {}
for Index = 1, MobAmount do
local MobData = MobPrototypes[MobTypes[math.random(1, #MobTypes)]]
local MobParent = WorkspaceMobs:FindFirstChild(Area)
local UniqueId = HttpService:GenerateGUID(false)
if MobData and MobParent then
MobData = GameUtility.CloneTable(MobData)
local MobInstances = MobData["Instances"]
local MobPositions = MobData["Positions"]
local PositionData = MobSpawnPositions[Area]
local MobInformation = MobData["Information"]
local MobWeapon = ToolModels:FindFirstChild(MobInformation["Weapon"])
if PositionData and MobWeapon then
MobInstances["WeaponTemplate"] = MobWeapon
MobInformation["UniqueId"] = UniqueId
MobInstances["Parent"] = MobParent
StoredAreaMobs[Area][UniqueId] = MobData
end
end
end
AttackUnitsPerZone[Zone][Area] = {0, AreaSetupData["Max"]}
end
end
end
function Module.RegenerateRandomSpawnPosition(Area)
local PositionData = MobSpawnPositions[Area]
local SpawnBoundary = MobSpawnBoundaries[Area]
if PositionData and MobSpawnBoundaries then
local CurrentIndex = math.random(1, #PositionData)
local NewPosition = PositionData[CurrentIndex]
NewPosition = Vector3.new(NewPosition[1][1], NewPosition[1][2], NewPosition[1][3])
if SpawnBoundary[3] == AreaTypes[3] then
while not GameUtility.CheckPointOnRectangle(SpawnBoundary[1], SpawnBoundary[2], NewPosition) do
CurrentIndex = math.random(1, #PositionData)
NewPosition = PositionData[CurrentIndex]
NewPosition = Vector3.new(NewPosition[1][1], NewPosition[1][2], NewPosition[1][3])
end
return NewPosition
elseif SpawnBoundary[3] == SpawnBoundary[1] then
local Radius = SpawnBoundary[2]
local CenterPosition = SpawnBoundary[1]
while not GameUtility.CheckPointOnCircle(CenterPosition, NewPosition, Radius) do
CurrentIndex = math.random(1, #PositionData)
NewPosition = PositionData[CurrentIndex]
NewPosition = Vector3.new(NewPosition[1][1], NewPosition[1][2], NewPosition[1][3])
end
return NewPosition
else
end
end
end
-- Functionalities --
function Module.ActivateZoneMobs(NewArea)
local ActivateMobsThread = coroutine.create(function()
local AreaStoredMobData = StoredAreaMobs[NewArea]
local AreaActiveMobData = ActiveAreaMobs[NewArea]
for UniqueId, MobData in next, AreaStoredMobData do
local MobInstances = MobData["Instances"]
local MobInformation = MobData["Information"]
local MobModel = InteractorModels:FindFirstChild(MobInformation["Name"])
if MobModel then
MobModel = MobModel:Clone()
MobInstances["Mob"] = MobModel
local MobHumanoid = SetupMob(MobModel, MobInstances, MobInformation)
if MobHumanoid then
local SpawnPosition = Module.RegenerateRandomSpawnPosition(NewArea)
MobModel.Name = UniqueId..SeperatingString..NewArea
MobModel.Parent = MobInstances["Parent"]
MobModel:MoveTo(SpawnPosition)
AreaActiveMobData[UniqueId] = MobData
AreaStoredMobData[UniqueId] = nil
end
end
end
end)
local MobStimulationThread = coroutine.create(function()
while true do GameUtility.Yield()
Module.UpdateActiveMobs()
end
end)
coroutine.resume(MobStimulationThread)
coroutine.resume(ActivateMobsThread)
end
function Module.DeactivateZoneMobs(Area)
local DeactivateMobsThread = coroutine.create(function()
local AreaStoredMobData = StoredAreaMobs[Area]
local AreaActiveMobData = ActiveAreaMobs[Area]
for UniqueId, MobData in next, AreaActiveMobData do
local MobInstances = MobData["Instances"]
local MobInformation = MobData["Information"]
local Mob = MobInstances["Mob"]
if Mob then
Mob:Destroy()
MobInstances["Mob"] = nil
end
MobInstances["Humanoid"] = nil
MobInstances["RootPart"] = nil
MobInformation["CanUpdateState"] = true
MobInformation["PlayingAnimation"] = nil
AreaStoredMobData[UniqueId] = MobData
AreaActiveMobData[UniqueId] = nil
end
end)
coroutine.resume(DeactivateMobsThread)
end
WorkspaceMobs:Clone()
-- States --
function Module.ActivatePlayerAttack(ActiveMob, Area, UniqueId)
if not AttackingMobs[Area] then
AttackingMobs[Area]= {}
end
if AttackingMobs[Area][UniqueId] then return end
local MobInstances = ActiveMob["Instances"]
local MobPositions = ActiveMob["Positions"]
local MobInformation = ActiveMob["Information"]
local MobOrientation = MobInstances["Orientation"]
local MobRootPart = MobInstances["Humanoid"].RootPart
local ZoneUnitsData = AttackUnitsPerZone[MobInformation["Zone"]][MobInformation["Area"]]
if ZoneUnitsData[1] >= ZoneUnitsData[2] then
for UniqueId, MobData in next, AttackingMobs[Area] do
Module.DeactivatePlayerAttack(UniqueId, Area)
break
end
end
do
local MobHumanoid = MobInstances["Humanoid"]
local ActivationRing = MobInstances["ActivationRing"]
ActivationRing.Transparency = 0
MobHumanoid:MoveTo(MobHumanoid.RootPart.Position)
local PlayingAnimations = MobHumanoid:GetPlayingAnimationTracks()
for Index = 1, #PlayingAnimations do
PlayingAnimations[Index]:Stop()
end
MobInstances["PlayingAnimation"] = nil
MobInformation["CanUpdateState"] = true
Module.EquipMobWeapon(ActiveMob)
ZoneUnitsData[1] = ZoneUnitsData[1] + 1
AttackingMobs[Area][UniqueId] = ActiveMob
ActiveMob["Information"]["State"] = MobStates[3]
local MobOrientationThread = coroutine.create(function()
while MobInformation["State"] == MobStates[3] do
local Direction = ((HumanoidRootPart.Position - MobRootPart.Position) * Vector3.new(1,0,1))
local ResultOrientation = CFrame.new(MobRootPart.Position, MobRootPart.Position + Direction)
MobOrientation.CFrame = ResultOrientation
RunService.Heartbeat:Wait()
end
end)
coroutine.resume(MobOrientationThread)
end
end
function Module.DeactivatePlayerAttack(UniqueId, Area)
local AreaActiveMobs = ActiveAreaMobs[Area]
if AreaActiveMobs then
local Mob = AreaActiveMobs[UniqueId]
if Mob then
local MobInformation = Mob["Information"]
local MobInstances = Mob["Instances"]
local MobHumanoid = MobInstances["Humanoid"]
local MobOrientation = MobInstances["Orientation"]
local ActivationRing = MobInstances["ActivationRing"]
local ZoneUnitsData = AttackUnitsPerZone[MobInformation["Zone"]][MobInformation["Area"]]
MobHumanoid:UnequipTools()
ActivationRing.Transparency = 1
MobHumanoid:MoveTo(MobHumanoid.RootPart.Position)
local PlayingAnimations = MobHumanoid:GetPlayingAnimationTracks()
for Index = 1, #PlayingAnimations do
PlayingAnimations[Index]:Stop()
end
MobInstances["PlayingAnimation"] = nil
MobInformation["CanUpdateState"] = true
AttackingMobs[Area][UniqueId] = nil
MobInformation["State"] = MobStates[1]
ZoneUnitsData[1] = ZoneUnitsData[1] - 1
MobOrientation.MaxTorque = Vector3.new(0, 0, 0)
local HealthData = MobInformation["Health"]
local HealthRegenData = MobInformation["RegenData"]
local MobRegenThread = coroutine.create(function()
while MobInformation["State"] ~= MobStates[3] and HealthData[1] < HealthData[2] do
HealthData[1] = HealthData[1] + HealthRegenData["Amount"] <= HealthData[2] and HealthData[1] + HealthRegenData["Amount"] or HealthData[2]
Module.AdjustMobHealth(MobInstances, HealthData)
wait(HealthRegenData["Rate"])
end
end)
coroutine.resume(MobRegenThread)
return
end
end
end
function Module.AdjustMobHealth(MobInstances, Health, IsResetting)
local HealthBar = MobInstances["HealthBar"]
local HealthText = MobInstances["HealthText"]
if HealthBar and HealthText then
if not IsResetting then
HealthBar.Size = UDim2.new(Health[1]/Health[2], 0, 1, 0)
HealthText.Text = Health[1].."/"..Health[2]
return Health
else
HealthBar.Size = UDim2.new(Health[2]/Health[2], 0, 1, 0)
HealthText.Text = Health[2].."/"..Health[2]
Health[1] = Health[2]
return Health
end
end
end
function Module.KillAttackingMob(Mob, UniqueId, Area)
local MobDeadHandlerThread = coroutine.create(function()
RunService.Heartbeat:Wait()
if DeadAreaMobs[UniqueId] then return end
Module.DeactivatePlayerAttack(UniqueId, Area)
local MobInstances = Mob["Instances"]
local MobInformation = Mob["Information"]
local MobRespawnData = MobInformation["RespawnData"]
MobInformation["State"] = MobStates[4]
Module.UnequipMobWeapon(Mob)
local MobModel = MobInstances["Mob"]
local MobTemplate = InteractorModels:FindFirstChild(MobInformation["Name"])
local MobYieldTime = math.random(MobRespawnData[1], MobRespawnData[2])
if MobModel then
MobModel:Destroy()
DeadAreaMobs[UniqueId] = Mob
wait(MobYieldTime)
MobModel = MobTemplate:Clone()
MobInstances["Mob"] = MobModel
local MobHumanoid = SetupMob(MobModel, MobInstances, MobInformation)
if MobHumanoid then
local SpawnPosition = Vector3.new(76.7499924, 19.949955, 122.59938)
MobModel.Name = UniqueId..SeperatingString..MobInformation["Area"]
MobModel.Parent = MobInstances["Parent"]
MobModel:MoveTo(SpawnPosition)
DeadAreaMobs[UniqueId] = nil
MobInformation["State"] = MobStates[1]
end
end
end)
coroutine.resume(MobDeadHandlerThread)
end
function Module.DamageMobUnit(MobName, WeaponData)
if Humanoid.Health <= 0 then return end
local Area = GameUtility.SeperateClumpedSecondString(MobName, SeperatingString)
local UniqueId = GameUtility.SeperateClumpedFirstString(MobName, SeperatingString)
local AreaActiveMobs = ActiveAreaMobs[Area]
if AreaActiveMobs then
local ActiveMob = AreaActiveMobs[UniqueId]
if ActiveMob then
Module.ActivatePlayerAttack(ActiveMob, Area, UniqueId)
local MobInformation = ActiveMob["Information"]
local MobInstances = ActiveMob["Instances"]
local HealthData = MobInformation["Health"]
local CurrentHealth = HealthData[1]
if HealthData then
local WeaponDamage = WeaponData["Damage"]
WeaponDamage = (CurrentHealth - WeaponDamage) >= 0 and WeaponDamage or CurrentHealth
HealthData[1] = CurrentHealth - WeaponDamage
if HealthData[1] <= 0 then
Module.KillAttackingMob(ActiveMob, UniqueId, Area)
Module.AdjustMobHealth(MobInstances, HealthData, true)
end
local HealthAdjustThread = coroutine.create(function()
local RewardData = MobInformation["AttackReward"]
local Reward = RewardData[math.random(1, #RewardData)]
--UpdateUserstatsRemote:FireServer("Souls", RewardPlayerDataIndex, MobInformation["Name"], Reward[1])
Module.AdjustMobHealth(MobInstances, HealthData)
--SpawnUserstatsValueBindable:Fire(Reward)
end)
coroutine.resume(HealthAdjustThread)
end
end
end
end
function Module.EquipMobWeapon(Mob)
local MobInstances = Mob["Instances"]
local MobInformation = Mob["Information"]
local MobHumanoid = MobInstances["Humanoid"]
Module.UnequipMobWeapon(Mob)
if MobHumanoid then
local WeaponTemplate = MobInstances["WeaponTemplate"]
local RightHand = MobHumanoid.Parent:FindFirstChild("RightHand")
if WeaponTemplate and RightHand then
local Weapon = WeaponTemplate:Clone()
local Weld=Instance.new("Weld")
Weld.C0 = RightHand.RightGripAttachment.CFrame
Weld.C1=CFrame.new(
Weapon.GripPos.x, Weapon.GripPos.y, Weapon.GripPos.z,
Weapon.GripRight.x, Weapon.GripUp.x, -Weapon.GripForward.x,
Weapon.GripRight.y, Weapon.GripUp.y, -Weapon.GripForward.y,
Weapon.GripRight.z, Weapon.GripUp.z, -Weapon.GripForward.z
)
Weld.Part0 = RightHand
Weld.Part1 = Weapon.Handle
Weld.Parent = Weapon.Handle
Weapon.Parent = MobHumanoid.Parent
return Weapon
end
end
end
function Module.UnequipMobWeapon(Mob)
local MobInstances = Mob["Instances"]
local MobInformation = Mob["Information"]
local MobHumanoid = MobInstances["Humanoid"]
MobHumanoid:UnequipTools()
return MobHumanoid
end
function Module.UpdateActiveMobs()
local MobUpdateThread = coroutine.create(function()
for Area, AreaMobs in next, ActiveAreaMobs do
for UniqueId, MobData in next, AreaMobs do
local MobHandlerThread = coroutine.create(function()
local MobInformation = MobData["Information"]
local MobPositions = MobData["Positions"]
local MobInstances = MobData["Instances"]
local CanUpdateState = MobInformation["CanUpdateState"]
if MobInformation["State"] ~= MobStates[3] and MobInformation["State"] ~= MobStates[4] and CanUpdateState then
MobInformation["CanUpdateState"] = false
local MobHumanoid = MobInstances["Humanoid"]
local Animations = MobInstances["Animations"]
local PlayingAnimations = MobHumanoid:GetPlayingAnimationTracks()
for Index = 1, #PlayingAnimations do
PlayingAnimations[Index]:Stop()
end
MobInstances["PlayingAnimation"] = nil
local WalkAnimation = Animations:FindFirstChild("Walk")
local IdleAnimation = Animations:FindFirstChild("Idle")
if WalkAnimation and IdleAnimation then
local WalkAnimationTrack = MobHumanoid:LoadAnimation(WalkAnimation)
local NewPosition = Module.RegenerateRandomSpawnPosition(MobInformation["Area"])
MobInstances["PlayingAnimation"] = WalkAnimationTrack
WalkAnimationTrack.Looped = true
WalkAnimationTrack:Play()
local MovingMobCheck = tick()
while MobInstances["PlayingAnimation"] == WalkAnimationTrack do
MobHumanoid:MoveTo(NewPosition)
MobHumanoid.MoveToFinished:Wait()
if (tick() - MovingMobCheck) <= .1 then
MobInstances["PlayingAnimation"] = nil
WalkAnimationTrack:Stop()
break
end
MovingMobCheck = tick()
end
local IdleAnimationTrack = MobHumanoid:LoadAnimation(IdleAnimation)
MobInstances["PlayingAnimation"] = IdleAnimationTrack
IdleAnimationTrack.Looped = true
IdleAnimationTrack:Play()
wait(math.random(MinimumIdleYield, MaximumIdleYield))
PlayingAnimations = MobHumanoid:GetPlayingAnimationTracks()
for Index = 1, #PlayingAnimations do
PlayingAnimations[Index]:Stop()
end
MobInstances["PlayingAnimation"] = nil
MobInformation["CanUpdateState"] = true
end
end
end)
coroutine.resume(MobHandlerThread)
end
end
end)
coroutine.resume(MobUpdateThread)
for Area, AreaAttackingMobs in next, AttackingMobs do
for UniqueId, MobData in next, AreaAttackingMobs do
local MobHandlerThread = coroutine.create(function()
local MobInformation = MobData["Information"]
local MobPositions = MobData["Positions"]
local MobInstances = MobData["Instances"]
local MobModel = MobInstances["Mob"]
local MobHumanoid = MobInstances["Humanoid"]
local MobRootPart = MobInstances["RootPart"]
local MobOrientation = MobInstances["Orientation"]
local CanUpdatePosition = MobInformation["CanUpdateState"]
if MobModel and MobHumanoid and CanUpdatePosition and MobInformation["State"] ~= MobStates[4] then
local Animations = MobInstances["Animations"]
local SpawnBoundary = MobSpawnBoundaries[Area]
local AttackDistance = MobInformation["AttackDistance"]
local PlayingAnimation = MobInstances["PlayingAnimation"]
if GameUtility.CalculatePointOnCircle(HumanoidRootPart.Position + Vector3.new(0, 0, 2), MobRootPart.Position, AttackDistance) then
local AttackAnimation = Animations:FindFirstChild("Attack")
if MobInformation["CanUpdateState"] ~= "Idle" then
MobInformation["CanUpdateState"] = "Idle"
local PlayingAnimations = MobHumanoid:GetPlayingAnimationTracks()
for Index = 1, #PlayingAnimations do
PlayingAnimations[Index]:Stop()
end
local AttackAnimationTrack = MobHumanoid:LoadAnimation(AttackAnimation)
MobInstances["PlayingAnimation"] = AttackAnimationTrack
MobHumanoid:MoveTo(MobHumanoid.RootPart.Position)
AttackAnimationTrack.Looped = true
AttackAnimationTrack:Play()
AttackAnimationTrack.DidLoop:Connect(function()
if Humanoid.Health <= 0 then
Module.DeactivatePlayerAttack(UniqueId, Area)
else
--UpdateUserstatsRemote:FireServer("MaxHealth", DamagePlayerDataIndex, MobInformation["Name"])
end
end)
MobOrientation.MaxTorque = DefaultBodyPosition
end
else
local WalkAnimation = Animations:FindFirstChild("Walk")
MobOrientation.MaxTorque = Vector3.new(0, 0, 0)
if MobInformation["CanUpdateState"] ~= "Moving" then
MobInformation["CanUpdateState"] = "Moving"
local PlayingAnimations = MobHumanoid:GetPlayingAnimationTracks()
for Index = 1, #PlayingAnimations do
PlayingAnimations[Index]:Stop()
end
local WalkAnimationTrack = MobHumanoid:LoadAnimation(WalkAnimation)
MobInstances["PlayingAnimation"] = WalkAnimationTrack
WalkAnimationTrack.Looped = true
MobHumanoid.WalkSpeed = 10
WalkAnimationTrack:Play()
while MobInstances["PlayingAnimation"] == WalkAnimationTrack do
MobHumanoid:MoveTo(HumanoidRootPart.Position)
RunService.Heartbeat:Wait()
end
end
end
if not GameUtility.CalculatePointOnRecetange(SpawnBoundary[1], SpawnBoundary[2], MobRootPart.Position) then
Module.DeactivatePlayerAttack(UniqueId, Area)
end
end
end)
coroutine.resume(MobHandlerThread)
end
end
end
ObserverUtility.ListenToEvent("UpdateCharacter", "CharacterUtilityListener", function(NewCharacter)
if not NewCharacter or NewCharacter and not NewCharacter.Parent then return end
Humanoid = NewCharacter:WaitForChild("Humanoid")
HumanoidRootPart = Character.PrimaryPart
Character = NewCharacter
local Attachment = Instance.new("Attachment")
Attachment.Parent = HumanoidRootPart
Attachment.Name = CharacterOrientationAttachmentName
CharacterOrientationAttachment = HumanoidRootPart
end)
return Module```
Heres the spawn data
```return {
["SpawnMain"] = {
{{179.792542, 4.75, 184.662704,
-29.777, 7.858, 86.277}},
{{118.299751, 4.75, 234.952499}},
{125.058, 2.35, 249.532},
{{143.393921, 4.75, 179.752472}},
{{-3.86442566, 4.75, 351.732178}},
{{127.16301, 4.75, 284.481262}},
{{123.378937, 4.75, 174.98587}},
{{148.453949, 4.75, 175.165924}},
{{105.048126, 4.75, 302.634308}},
{{215.168304, 4.75, 283.991425}},
{{99.6460876, 4.75, 353.710266}},
{{103.033806, 4.75, 314.058075}},
{{12.7978058, 4.75, 285.817596}},
{{105.308548, 4.75, 218.942627}},
{{25.0929794, 4.75, 312.833618}},
{{202.627045, 4.75, 265.483826}},
{{72.8000031, 4.75, 181.985916}},
{{134.400253, 4.75, 276.697876}},
{{103.059906, 4.75, 230.979553}},
{{165.02211, 4.75, 285.007141}},
{{211.949036, 4.75, 221.109436}},
{{132.085144, 4.75, 276.403931}},
{{43.484726, 4.75, 265.398468}},
{{92.8120651, 4.75, 343.908722}},
{{124.237732, 4.75, 298.210785}},
{{63.1500015, 4.75, 165.271637}},
{{161.528168, 4.75, 187.307831}},
{{54.3499947, 4.75, 355.970428}},
{{94.1815186, 4.75, 179.782822}},
{{128.165833, 4.75, 225.981796}},
{{40.2603531, 4.75, 306.429688}},
{{152.216583, 4.75, 228.994644}},
{{245.436218, 4.75, 227.412537}},
{{69.1815643, 4.75, 297.618439}},
{{112.910294, 4.75, 236.0233}},
{{98.0309296, 4.75, 321.303345}},
{{65.4955902, 4.75, 209.506516}},
{{233.257782, 4.75, 280.57901}},
{{17.546669, 4.75, 276.998657}},
{{36.3306503, 4.75, 348.666656}},
{{122.702728, 4.75, 288.706879}},
{{148.122482, 4.75, 228.967148}},
{{122.257492, 4.75, 230.967499}},
{{47.4026794, 4.75, 319.397339}},
{{24.6102524, 4.75, 207.555542}},
{{81.331871, 4.75, 337.582397}},
{{50.9295197, 4.75, 279.686951}},
{{114.735451, 4.75, 306.591827}},
{{120.526039, 4.75, 282.133667}},
{{7.5559845, 4.75, 178.607147}},
{{25.4524765, 4.75, 335.385406}},
{{149.548721, 4.75, 281.94873}},
{{100.26506, 4.75, 211.343719}},
{{257.604767, 4.75, 294.235321}},
{{123.000504, 4.75, 213.148254}},
{{247.089096, 4.75, 309.577881}},
{{103.924194, 4.75, 206.537994}},
{{94.8924332, 4.75, 287.110168}},
{{169.394226, 4.75, 324.157379}},
{{118.361, 4.75, 267.918365}},
{{172.39682, 4.75, 205.54924}},
{{56.3075447, 4.75, 314.653137}},
{{16.5009995, 4.75, 270.156433}},
{{12.8198624, 4.75, 165.219299}},
{{187.624908, 4.75, 274.168945}},
{{145.715851, 4.75, 302.146088}},
{{117.111916, 4.75, 215.144592}},
{{138.300354, 4.75, 230.153061}},
{{50.7070084, 4.75, 309.809204}},
{{77.72229, 4.75, 214.311386}},
{{189.891922, 4.75, 295.178436}},
{{99.3298187, 4.75, 344.361176}},
{{107.210869, 4.75, 267.799438}},
{{61.0730286, 4.75, 337.380768}},
{{9.67725372, 4.75, 210.931671}},
{{98.9313583, 4.75, 275.895691}},
{{74.6389618, 4.75, 315.670746}},
{{97, 4.75, 223.90155}},
{{136.559158, 4.75, 286.741821}},
{{149.673111, 4.75, 214.530792}},
{{159.022263, 4.75, 299.82901}},
{{81.237442, 4.75, 234.199997}},
{{9.25861359, 4.75, 174.222412}},
{{246.148331, 4.75, 285.998138}},
{{89.8056335, 4.75, 322.684723}},
{{93.1398773, 4.75, 335.863251}},
{{88.7078247, 4.75, 175.7742}},
{{84.3283997, 4.75, 229.974258}},
{{248.705246, 4.75, 307.50528}},
{{49.5877228, 4.75, 271.412567}},
{{164.996109, 4.75, 323.465393}},
{{183.679153, 4.75, 209.334641}},
{{117.108467, 4.75, 347.742249}},
{{238.711945, 4.75, 266.128754}},
{{94.0349884, 4.75, 173.726837}},
{{237.247131, 4.75, 293.110413}},
{{171.259415, 4.75, 341.479736}},
{{74.5905914, 4.75, 164.934219}},
{{148.434937, 4.75, 272.198456}},
{{8.98899841, 4.75, 220.95607}},
{{158.776871, 4.75, 345.216278}},
{{93.7887268, 4.75, 183.212402}},
{{206.081131, 4.75, 226.538834}},
{{194.105927, 4.75, 270.06958}},
{{178.764084, 4.75, 300.199158}},
{{48.6376495, 4.75, 296.952545}},
{{165.657623, 4.75, 195.406281}},
{{60.5194321, 4.75, 272.392548}},
{{129.156723, 4.75, 210.8078}},
{{32.6352921, 4.75, 297.990326}},
{{6.96334839, 4.75, 196.193939}},
{{219.089172, 4.75, 220.809906}},
{{88.3730392, 4.75, 224.760498}},
{{36.8437424, 4.75, 221.907654}},
{{135.944031, 4.75, 220.170105}},
{{114.615028, 4.75, 299.692902}},
{{34.2953033, 4.75, 199.373398}},
{{99.6955719, 4.75, 191.906998}},
{{201.369858, 4.75, 286.614899}},
{{263.928619, 4.75, 229.221954}},
{{100.289642, 4.75, 303.421326}},
{{166.406784, 4.75, 180.592987}},
{{72.9567413, 4.75, 226.476074}},
{{263.808289, 4.75, 293.19458}},
{{8.5118103, 4.75, 358.288208}},
{{136.590332, 4.75, 297.728516}},
{{207.517853, 4.75, 281.652435}},
{{69.5721893, 4.75, 273.623779}},
{{202.494598, 4.75, 167.348633}},
{{55.9655838, 4.75, 176.251129}},
{{172.706299, 4.75, 337.126923}},
{{60.0499954, 4.75, 346.097717}},
{{63.737175, 4.75, 228.582733}},
{{225.286987, 4.75, 280.796844}},
{{101.794678, 4.75, 221.725052}},
{{117.187973, 4.75, 280.592773}},
{{130.320755, 4.75, 296.038055}},
{{23.4294205, 4.75, 218.309982}},
{{154.56517, 4.75, 313.436829}},
{{174.90007, 4.75, 294.212524}},
{{94.0606537, 4.75, 274.92276}},
{{53.3228378, 4.75, 227.328964}},
{{143.17955, 4.75, 172.280411}},
{{66.8625946, 4.75, 220.134064}},
{{66.6057205, 4.75, 303.60968}},
{{232.084381, 4.75, 212.271423}},
{{80.5487823, 4.75, 174.665039}},
{{118.207687, 4.75, 275.675598}},
{{203.581848, 4.75, 278.744507}},
{{58.2990875, 4.75, 266.837921}},
{{183.351746, 4.75, 279.698395}},
{{159.400024, 4.75, 174.018494}},
{{225.087006, 4.75, 264.696716}},
{{83.7538223, 4.75, 309.508636}},
{{25.7342224, 4.75, 292.209412}},
{{24.5340042, 4.75, 300.463562}},
{{89.2509308, 4.75, 217.940292}},
{{156.866776, 4.75, 304.324982}},
{{22.5270615, 4.75, 167.886597}},
{{55.2731972, 4.75, 325.274567}},
{{155.267761, 4.75, 291.669312}},
{{106.862411, 4.75, 332.297089}},
{{134.121429, 4.75, 334.504852}},
{{47.5286026, 4.75, 331.979187}},
{{227.07312, 4.75, 292.003052}},
{{158.250015, 4.75, 176.010345}},
{{-9.06678772, 4.75, 352.495544}},
{{128.531158, 4.75, 268.797241}},
{{33.0900803, 4.75, 175.059326}},
{{105.135094, 4.75, 182.429962}},
{{197.84967, 4.75, 177.32132}},
{{75.6444397, 4.75, 235.207779}},
{{233.741791, 4.75, 202.087723}},
{{25.8566666, 4.75, 268.506775}},
{{105.688599, 4.75, 175.825104}},
{{79.5278625, 4.75, 225.246979}},
{{61.5741005, 4.75, 298.399292}},
{{53.1982765, 4.75, 289.413177}},
{{219.388611, 4.75, 184.429932}},
{{18.7786255, 4.75, 314.707611}},
{{74.3986969, 4.75, 284.906555}},
{{211.825958, 4.75, 290.628601}},
{{136.267044, 4.75, 200.070969}},
{{247.59523, 4.75, 269.427948}},
{{211.177429, 4.75, 271.928223}},
{{66.102356, 4.75, 294.462921}},
{{110.64077, 4.75, 230.52092}},
{{61.1763306, 4.75, 225.019501}},
{{96.4908295, 4.75, 298.091919}},
{{43.3101273, 4.75, 191.724091}},
{{32.7136993, 4.75, 189.648438}},
{{25.5507813, 4.75, 319.50058}},
{{235.784119, 4.75, 218.021637}},
{{155.067749, 4.75, 172.007507}},
{{150.370285, 4.75, 206.192154}},
{{95.7579422, 4.75, 355.321533}},
{{85.1499405, 4.75, 277.040253}},
{{262.434479, 4.75, 183.690613}},
{{270.770996, 4.75, 216.760361}},
{{132.06398, 4.75, 237.123383}},
{{268.123169, 4.75, 263.791351}},
{{17.3060532, 4.75, 234.243484}},
{{151.212311, 4.75, 312.872192}},
{{129.916672, 4.75, 221.369263}},
{{36.8029404, 4.75, 230.921448}},
{{39.110672, 4.75, 315.671783}},
{{155.186691, 4.75, 186.767456}},
{{32.9735413, 4.75, 345.980225}},
{{253.164429, 4.75, 193.843292}},
{{158.266296, 4.75, 300.684265}},
{{171.984955, 4.75, 280.13208}},
{{219.733398, 4.75, 230.483185}},
{{89.5743332, 4.75, 316.110046}},
{{177.573212, 4.75, 213.150055}},
{{228.20166, 4.75, 181.51387}},
{{145.797424, 4.75, 195.275085}},
{{240.915482, 4.75, 273.133118}},
{{112.613419, 4.75, 286.979279}},
{{247.592621, 4.75, 198.944244}},
{{7.79729462, 4.75, 167.160706}},
{{101.886787, 4.75, 168.233063}},
{{108.418655, 4.75, 286.976471}},
{{73.7328796, 4.75, 335.14978}},
{{255.764954, 4.75, 189.793121}},
{{149.120468, 4.75, 183.679688}},
{{236.280212, 4.75, 237.961349}},
{{16.6819458, 4.75, 189.930801}},
{{189.000946, 4.75, 291.316803}},
{{32.3228378, 4.75, 228.089935}},
{{12.5187988, 4.75, 357.87973}},
{{195.297424, 4.75, 303.925262}},
{{36.057106, 4.75, 325.496429}},
{{212.985504, 4.75, 180.937561}},
{{209.32486, 4.75, 208.456039}},
{{36.9712753, 4.75, 310.894623}},
{{17.4169159, 4.75, 306.426025}},
{{208.532898, 4.75, 206.7957}},
{{80.1452179, 4.75, 345.465759}},
{{126.547409, 4.75, 211.305115}},
{{197.194733, 4.75, 281.715118}},
{{140.106064, 4.75, 212.492218}},
{{263.575012, 4.75, 237.258026}},
{{59.8359642, 4.75, 282.91275}},
{{13.2005539, 4.75, 293.644806}},
{{22.1942368, 4.75, 290.011139}},
{{42.2895737, 4.75, 335.263367}},
{{15.3423309, 4.75, 263.348328}},
{{156.352554, 4.75, 202.287872}},
{{221.778229, 4.75, 215.820114}},
{{165.15448, 4.75, 308.070953}},
{{128.223251, 4.75, 344.06488}},
{{223.055115, 4.75, 274.23703}},
{{191.511047, 4.75, 175.288971}},
{{221.640198, 4.75, 268.155975}},
{{238.887405, 4.75, 286.517059}},
{{145.376526, 4.75, 286.861694}},
{{19.6063843, 4.75, 298.941284}},
{{161.109177, 4.75, 196.619141}},
{{8.82085419, 4.75, 304.201752}},
{{144.485977, 4.75, 315.915588}},
{{130.952728, 4.75, 333.697174}},
{{134.782257, 4.75, 188.423248}},
{{70.90448, 4.75, 234.791931}},
{{112.239754, 4.75, 342.386383}},
{{68, 4.75, 173.672073}},
{{145.041275, 4.75, 227.701324}},
{{146.240936, 4.75, 333.294128}},
{{162.903656, 4.75, 281.350006}},
{{218.494904, 4.75, 279.103363}},
{{202.094757, 4.75, 206.052826}},
{{111.782814, 4.75, 310.764801}},
{{154.659149, 4.75, 333.190582}},
{{52.255249, 4.75, 340.89502}},
{{233.578384, 4.75, 298.978577}},
{{256.348755, 4.75, 183.474365}},
{{244.852112, 4.75, 191.889404}},
{{9.84777832, 4.75, 340.226288}},
{{47.2938919, 4.75, 223.389572}},
{{145.406952, 4.75, 220.270035}},
{{147.977524, 4.75, 188.721405}},
{{118.023514, 4.75, 333.589417}},
{{59.016098, 4.75, 218.767212}},
{{30.5216827, 4.75, 200.961929}},
{{199.960327, 4.75, 296.900909}},
{{79.496254, 4.75, 270.478638}},
{{186.257889, 4.75, 204.126541}},
{{221.721909, 4.75, 294.427307}},
{{6.58379364, 4.75, 302.995758}},
{{93.4157486, 4.75, 294.793915}},
{{74.9838104, 4.75, 329.181061}},
{{156.002991, 4.75, 194.912582}},
{{191.999481, 4.75, 287.81665}},
{{89.0758667, 4.75, 303.691986}},
{{230.437378, 4.75, 190.982788}},
{{171.5793, 4.75, 173.473633}},
{{78.6397705, 4.75, 303.21402}},
{{18.6596069, 4.75, 183.876465}},
{{50.3015747, 4.75, 174.585968}},
{{34.545639, 4.75, 304.468384}},
{{12.8654251, 4.75, 203.77092}},
{{20.838829, 4.75, 323.05127}},
{{60.6475868, 4.75, 291.617493}},
{{217.442444, 4.75, 195.550049}},
{{173.934494, 4.75, 202.541183}},
{{187.986877, 4.75, 306.899902}},
{{149.527252, 4.75, 326.251709}},
{{-26.2244263, 4.75, 158.552322}},
{{14.8982773, 4.75, 202.607056}},
{{223.775787, 4.75, 210.784271}},
{{140.812439, 4.75, 306.014893}},
{{146.839325, 4.75, 293.800171}},
{{11.8941193, 4.75, 329.791595}},
{{242.544022, 4.75, 181.636017}},
{{117.373383, 4.75, 212.156021}},
{{115.767136, 4.75, 224.868698}},
{{115.138618, 4.75, 176.311676}},
{{166.466583, 4.75, 334.099457}},
{{169.20401, 4.75, 191.467606}},
{{93.197998, 4.75, 329.887695}},
{{132.621521, 4.75, 177.510986}},
{{219.833923, 4.75, 181.479218}},
{{132.155609, 4.75, 196.507233}},
{{187.591003, 4.75, 288.990265}},
{{70.1030884, 4.75, 292.344879}},
{{66.1711502, 4.75, 359.976166}},
{{53.0526772, 4.75, 202.026947}},
{{224.554443, 4.75, 172.532227}},
{{29.2626572, 4.75, 227.154343}},
{{5.52768707, 4.75, 326.030579}},
{{23.4335938, 4.75, 334.366272}},
{{-3.46824646, 4.75, 358.588806}},
{{260.110168, 4.75, 306.252533}},
{{44.6814957, 4.75, 181.42569}},
{{63.3402367, 4.75, 217.667694}},
{{169.312927, 4.75, 302.984039}},
{{130.01329, 4.75, 205.913177}},
{{26.5555801, 4.75, 177.159576}},
{{180.971313, 4.75, 333.051636}},
{{98.5264969, 4.75, 268.273499}},
{{86.7845535, 4.75, 214.417938}},
{{84.6014481, 4.75, 299.727448}},
{{51.6730919, 4.75, 197.060684}},
{{103.514236, 4.75, 336.770905}},
{{62.1197968, 4.75, 211.150192}},
{{24.9123917, 4.75, 183.553375}},
{{82.9057083, 4.75, 302.441193}},
{{136.806763, 4.75, 345.275116}},
{{174.907867, 4.75, 271.682556}},
{{38.2863235, 4.75, 270.433716}},
{{257.143402, 4.75, 291.408752}},
{{147.965591, 4.75, 281.668335}},
{{110.830055, 4.75, 167.951843}},
{{146.764221, 4.75, 323.692017}},
{{160.418518, 4.75, 165.323303}},
{{212.214142, 4.75, 167.449921}},
{{55.5164871, 4.75, 219.350006}},
{{84.2216568, 4.75, 322.68222}},
{{51.5874748, 4.75, 352.560852}},
{{60.4843178, 4.75, 203.282318}},
{{87.2863464, 4.75, 171.399353}},
{{5.87713623, 4.75, 174.589447}},
{{255.448822, 4.75, 225.466278}},
{{15.3005371, 4.75, 232.063293}},
{{54.1822205, 4.75, 215.746674}},
{{48.5853348, 4.75, 276.736206}},
{{45.1972122, 4.75, 201.304092}},
{{230.59082, 4.75, 277.824677}},
{{258.042847, 4.75, 305.500092}},
{{26.3314362, 4.75, 202.5}},
{{8.7044754, 4.75, 351.003174}},
{{113.800003, 4.75, 293.399994}},
{{215.202911, 4.75, 192.071014}},
{{231.666794, 4.75, 227.946671}},
{{170.457977, 4.75, 297.266052}},
{{242.029526, 4.75, 201.191879}},
{{-19.8856049, 4.75, 159.392334}},
{{54.6890869, 4.75, 185.000671}},
{{96.1483002, 4.75, 169.955261}},
{{74.0235748, 4.75, 346.707397}},
{{6.49945831, 4.75, 314.950012}},
{{143.131699, 4.75, 325.598511}},
{{62.4455223, 4.75, 197.929062}},
{{241.78772, 4.75, 196.01619}},
{{105.234047, 4.75, 293.299683}},
{{30.5863647, 4.75, 217.677917}},
{{166.886887, 4.75, 208.454819}},
{{267.747437, 4.75, 193.905151}},
{{56.3774452, 4.75, 212.792297}},
{{32.9462128, 4.75, 331.07962}},
{{163.96228, 4.75, 207.833679}},
{{214.348206, 4.75, 177.231476}},
{{8.91797638, 4.75, 234.50647}},
{{125.935898, 4.75, 339.351379}},
{{241.607864, 4.75, 228.156677}},
{{10.8988724, 4.75, 231.127701}},
{{25.0947342, 4.75, 213.505875}},
{{41.2549973, 4.75, 300.111267}},
{{58.9673386, 4.75, 311.800842}},
{{182.995438, 4.75, 292.949982}},
{{146.568695, 4.75, 204.418396}},
{{226.454071, 4.75, 200.468567}},
{{57.015934, 4.75, 334.096069}},
{{50.229454, 4.75, 304.478394}},
{{212.774139, 4.75, 175.672913}},
{{249.117111, 4.75, 294.370636}},
{{68.2455063, 4.75, 355.317078}},
{{24.3794556, 4.75, 237.232742}},
{{222.603271, 4.75, 204.557663}},
{{70.8412018, 4.75, 284.211395}},
{{217.213348, 4.75, 299.042603}},
{{159.535416, 4.75, 213.242828}},
{{41.6641235, 4.75, 359.945862}},
{{100.220703, 4.75, 330.011963}},
{{19.5864105, 4.75, 357.634796}},
{{163.456345, 4.75, 326.61853}},
{{160.063705, 4.75, 212.7836}},
{{107.542229, 4.75, 324.526794}},
{{22.1044846, 4.75, 176.058319}},
{{67.3403091, 4.75, 186.648682}},
{{207.212952, 4.75, 177.355682}},
{{237.942444, 4.75, 186.992279}},
{{51.5771103, 4.75, 192.912048}},
{{-7.03355408, 4.75, 161.945374}},
{{244.855591, 4.75, 295.58255}},
{{167.362549, 4.75, 321.556946}},
{{64.6611633, 4.75, 320.63382}},
{{214.943954, 4.75, 205.835815}},
{{136.618698, 4.75, 306.757477}},
{{70.7774506, 4.75, 345.262146}},
{{83.7918472, 4.75, 323.694763}},
{{128.143341, 4.75, 334.345123}},
{{216.212067, 4.75, 231.231674}},
{{13.4403076, 4.75, 279.891296}},
{{26.3365402, 4.75, 194.005157}},
{{91.9692841, 4.75, 355.705505}},
{{20.0991135, 4.75, 285.263794}},
{{253.451248, 4.75, 235.853012}},
{{35.3102036, 4.75, 321.230133}},
},
["SpawnHill"] = {
{{76.5282822, 13.5500002, 153.690933}},
{{97.0770035, 13.5500002, 125.097031}},
{{11.6495972, 13.5500002, 136.149811}},
{{101.343758, 13.5500002, 107.31234}},
{{83.094696, 13.5500002, 120.535751}},
{{96.9977417, 13.5500002, 119.225586}},
{{110.766335, 13.5500002, 99.1409149}},
{{113.293625, 13.5500002, 98.713562}},
{{94.8582458, 13.5500002, 137.001968}},
{{6.85561371, 13.5500002, 120.813675}},
{{95.3139801, 13.5500002, 110.892822}},
{{103.449219, 13.5500002, 130.605743}},
{{120.827682, 13.5500002, 109.798157}},
{{83.3919449, 13.5500002, 136.341522}},
{{18.5683746, 13.5500002, 157.759171}},
{{38.8819695, 13.5500002, 115.677444}},
{{108.288582, 13.5500002, 115.143204}},
{{117.978592, 13.5500002, 146.867706}},
{{21.1776733, 13.5500002, 133.44487}},
{{119.265793, 13.5500002, 135.732391}},
{{91.3417816, 13.5500002, 116.49424}},
{{99.9973755, 13.5500002, 96.8662567}},
{{30.7617722, 13.5500002, 133.463776}},
{{140.995514, 13.5500002, 142.208069}},
{{85.0748215, 13.5500002, 114.536659}},
{{87.4711227, 13.5500002, 130.386475}},
{{49.3853607, 13.5500002, 147.75972}},
{{3.1319046, 13.5500002, 117.359177}},
{{131.672226, 13.5500002, 115.629501}},
{{63.8485603, 13.5500002, 132.539841}},
{{60.7186699, 13.5500002, 113.983704}},
{{110.08741, 13.5500002, 153.669876}},
{{79.2909546, 13.5500002, 142.809036}},
{{90.5071487, 13.5500002, 144.861176}},
{{74.9893265, 13.5500002, 116.490891}},
{{97.7509537, 13.5500002, 104.003044}},
{{108.049034, 13.5500002, 126.665833}},
{{156.317749, 13.5500002, 138.51532}},
{{115.872231, 13.5500002, 109.087326}},
{{73.7416153, 13.5500002, 105.644638}},
{{125.253601, 13.5500002, 103.538284}},
{{93.0771866, 13.5500002, 125.345856}},
{{33.139595, 13.5500002, 121.731529}},
{{159.462601, 13.5500002, 121.857185}},
{{123.565048, 13.5500002, 122.665428}},
{{171.413773, 13.5500002, 143.644363}},
{{147.181366, 13.5500002, 114.459557}},
{{157.869049, 13.5500002, 105.726784}},
{{68.9189835, 13.5500002, 96.7882614}},
{{123.668106, 13.5500002, 144.704636}},
{{91.6942291, 13.5500002, 108.145157}},
{{24.8005905, 13.5500002, 120.158539}},
{{105.044846, 13.5500002, 122.523827}},
{{106.58963, 13.5500002, 153.606857}},
{{115.634842, 13.5500002, 159.951767}},
{{40.434227, 13.5500002, 108.5485}},
{{73.3151093, 13.5500002, 124.865509}},
{{73.426651, 13.5500002, 147.826782}},
{{19.2480621, 13.5500002, 121.246429}},
{{103.877693, 13.5500002, 118.612213}},
{{144.891983, 13.5500002, 108.796356}},
{{66.0629272, 13.5500002, 147.276291}},
{{63.7607155, 13.5500002, 94.1493149}},
{{157.023682, 13.5500002, 150.234512}},
{{84.6607361, 13.5500002, 152.820587}},
{{140.609894, 13.5500002, 89.5761719}},
{{58.2196693, 13.5500002, 119.808411}},
{{102.483948, 13.5500002, 155.193451}},
{{59.2324524, 13.5500002, 157.787033}},
{{-2.61494446, 13.5500002, 143.577011}},
{{118.741821, 13.5500002, 155.785614}},
{{49.3860741, 13.5500002, 119.738083}},
{{130.395538, 13.5500002, 130.277618}},
{{157.518463, 13.5500002, 127.113998}},
{{169.761841, 13.5500002, 115.20105}},
{{139.531631, 13.5500002, 113.66993}},
{{72.4710312, 13.5500002, 116.164436}},
{{144.620117, 13.5500002, 131.368073}},
{{93.2505264, 13.5500002, 93.3816605}},
{{169.79541, 13.5500002, 134.076141}},
{{52.3020401, 13.5500002, 112.581284}},
{{166.284515, 13.5500002, 144.846115}},
{{34.9451065, 13.5500002, 142.109375}},
{{45.6213913, 13.5500002, 145.202728}},
{{117.85376, 13.5500002, 127.128693}},
{{174.381042, 13.5500002, 157.962509}},
{{6.6091156, 13.5500002, 159.120056}},
{{151.967163, 13.5500002, 125.881073}},
{{116.099609, 13.5500002, 143.990601}},
{{54.3369179, 13.5500002, 106.318565}},
{{58.0883636, 13.5500002, 154.15094}},
{{50.9541779, 13.5500002, 138.413925}},
{{61.8534317, 13.5500002, 132.368179}},
{{77.0655518, 13.5500002, 139.28241}},
{{81.3136444, 13.5500002, 137.593323}},
{{137.108032, 13.5500002, 102.377487}},
{{110.924042, 13.5500002, 144.522766}},
{{72.2338104, 13.5500002, 113.020454}},
{{98.0999985, 13.5500002, 149}},
{{153.56456, 13.5500002, 120.121536}},
{{45.3288574, 13.5500002, 127.690117}},
{{37.9314232, 13.5500002, 117.676033}},
{{139.242004, 13.5500002, 135.797272}},
{{97.5135956, 13.5500002, 157.594879}},
{{128.038147, 13.5500002, 129.2789}},
{{108.337692, 13.5500002, 112.629883}},
{{103.422279, 13.5500002, 145.346512}},
{{155.263336, 13.5500002, 148.264404}},
{{85.3720779, 13.5500002, 111.272079}},
{{102.232826, 13.5500002, 147.438416}},
{{164.26593, 13.5500002, 141.729095}},
{{83.7525711, 13.5500002, 159.511139}},
{{173.683655, 13.5500002, 131.944153}},
{{118.145752, 13.5500002, 108.89444}},
{{70.2840271, 13.5500002, 141.381348}},
{{152.807816, 13.5500002, 145.000351}},
{{135.207581, 13.5500002, 98.0169907}},
{{170.722595, 13.5500002, 130.353653}},
{{60.5009193, 13.5500002, 150.327164}},
{{113.418144, 13.5500002, 134.725876}},
{{68.5405655, 13.5500002, 125.549141}},
{{173.888458, 13.5500002, 125.322884}},
{{138.24855, 13.5500002, 131.804077}},
{{164.260468, 13.5500002, 154.851135}},
{{24.2751007, 13.5500002, 145.168945}},
{{45.971199, 13.5500002, 136.034882}},
{{30.576149, 13.5500002, 139.589111}},
{{136.576538, 13.5500002, 125.34362}},
{{9.22314453, 13.5500002, 158.116623}},
{{142.572891, 13.5500002, 122.446983}},
{{24.7299271, 13.5500002, 140.938812}},
{{85.7595444, 13.5500002, 97.5358124}},
{{164.546982, 13.5500002, 133.338531}},
{{48.8700371, 13.5500002, 155.970306}},
{{60.0050812, 13.5500002, 95.2934265}},
{{111.028885, 13.5500002, 140.548233}},
{{61.4132385, 13.5500002, 146.043625}},
{{-0.237075806, 13.5500002, 152.197708}},
{{57.7960892, 13.5500002, 129.664337}},
{{15.2126236, 13.5500002, 122.5532}},
{{73.982399, 13.5500002, 134.737854}},
{{6.70983887, 13.5500002, 140.114548}},
{{150.000534, 13.5500002, 156.431061}},
{{41.5582733, 13.5500002, 134.990601}},
{{39.762867, 13.5500002, 156.336792}},
{{3.41109467, 13.5500002, 135.626328}},
{{20.830574, 13.5500002, 147.623642}},
{{118.387634, 13.5500002, 123.291542}},
{{106.679146, 13.5500002, 142.398041}},
{{168.503387, 13.5500002, 127.689697}},
{{51.013176, 13.5500002, 107.786705}},
{{62.5488396, 13.5500002, 142.114227}},
{{143.668854, 13.5500002, 101.77459}},
{{43.0857544, 13.5500002, 132.713394}},
{{159.462006, 13.5500002, 117.550598}},
{{82.8913193, 13.5500002, 94.1512833}},
{{71.3187256, 13.5500002, 158.278473}},
{{148.672882, 13.5500002, 93.6127625}},
{{165.592194, 13.5500002, 109.654106}},
{{157.262527, 13.5500002, 114.62957}},
{{136.109848, 13.5500002, 110.912155}},
{{1.02898407, 13.5500002, 135.918823}},
{{129.730148, 13.5500002, 109.250626}},
{{22.586319, 13.5500002, 141.433701}},
},
}```