Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[ By: Brutez. ]]--
- local SCP096Script=script;
- repeat Wait(0);until script and script.Parent and script.Parent.ClassName=="Model"and script.Parent:FindFirstChild("Head")and script.Parent:FindFirstChild("Torso")and script.Parent:FindFirstChild("HumanoidRootPart");
- local SCP096=SCP096Script.Parent;
- if SCP096Script and SCP096 and SCP096:FindFirstChild("Thumbnail")then
- SCP096:FindFirstChild("Thumbnail"):Destroy();
- end
- local Hush=SCP096:FindFirstChild("Hush");
- local Notice=SCP096:FindFirstChild("Notice");
- local SCP096Humanoid;
- for _,Child in pairs(SCP096:GetChildren())do
- if Child and Child.ClassName=="Humanoid"and Child.Health~=0 then
- SCP096Humanoid=Child;
- end;
- end;
- local CanSee=false;
- local Pathing=false;
- local SCP096Head=SCP096:FindFirstChild("Head");
- local Damage5=SCP096Head:FindFirstChild("Damage5");
- local Idle=SCP096Head:FindFirstChild("Idle");
- local Panic=SCP096Head:FindFirstChild("Panic");
- local Screaming=SCP096Head:FindFirstChild("Screaming");
- local SCP096HumanoidRootPart=SCP096:FindFirstChild("HumanoidRootPart");
- local SCP096Torso=SCP096:FindFirstChild("Torso");
- local AttackDebounce=false;
- local Chasing=false;
- function raycast(Spos,vec,currentdist)
- local hit2,pos2=game.Workspace:FindPartOnRay(Ray.new(Spos+(vec*.05),vec*currentdist),SCP096);
- if hit2~=nil and pos2 then
- if hit2.Name=="Handle" and not hit2.CanCollide or string.sub(hit2.Name,1,6)=="Effect"and not hit2.CanCollide then
- local currentdist=currentdist-(pos2-Spos).magnitude;
- return raycast(pos2,vec,currentdist);
- end;
- end;
- return hit2,pos2;
- end;
- function RayCast(Position,Direction,MaxDistance,IgnoreList)
- return Game:GetService("Workspace"):FindPartOnRayWithIgnoreList(Ray.new(Position,Direction.unit*(MaxDistance or 999.999)),IgnoreList);
- end;
- Spawn(function()
- while Wait(0)do
- if SCP096Script and SCP096 and SCP096HumanoidRootPart and SCP096Head and SCP096Humanoid and SCP096Humanoid.Health~=0 then
- local TargetPoint=SCP096Humanoid.TargetPoint;
- local Blockage,BlockagePos=RayCast((SCP096HumanoidRootPart.CFrame+CFrame.new(SCP096HumanoidRootPart.Position,Vector3.new(TargetPoint.X,SCP096HumanoidRootPart.Position.Y,TargetPoint.Z)).lookVector*(SCP096HumanoidRootPart.Size.Z/2)).p,SCP096HumanoidRootPart.CFrame.lookVector,(SCP096HumanoidRootPart.Size.Z*2.5),{SCP096,SCP096})
- local Jumpable=false;
- if Blockage then
- Jumpable=true;
- if Blockage and Blockage.Parent and Blockage.Parent.ClassName~="Workspace"then
- local BlockageHumanoid;
- for _,Child in pairs(Blockage.Parent:GetChildren())do
- if Child and Child.ClassName=="Humanoid"and Child.Health~=0 then
- BlockageHumanoid=Child;
- end;
- end;
- if Blockage and Blockage:IsA("Terrain")then
- local CellPos=Blockage:WorldToCellPreferSolid((BlockagePos-Vector3.new(0,2,0)));
- local CellMaterial,CellShape,CellOrientation=Blockage:GetCell(CellPos.X,CellPos.Y,CellPos.Z);
- if CellMaterial==Enum.CellMaterial.Water then
- Jumpable=false;
- end;
- elseif BlockageHumanoid or Blockage.ClassName=="TrussPart"or Blockage.ClassName=="WedgePart"or Blockage.Name=="Handle"and Blockage.Parent.ClassName=="Hat"or Blockage.Name=="Handle"and Blockage.Parent.ClassName=="Tool"then
- Jumpable=false;
- end;
- end;
- if SCP096Script and SCP096 and SCP096Humanoid and SCP096Humanoid.Health~=0 and not SCP096Humanoid.Sit and Jumpable then
- SCP096Humanoid.Jump=true;
- end;
- end;
- end;
- end;
- end);
- local DynamicWander=true;
- while Wait(0)do
- if Game~=nil and Game:GetService("Workspace")~=nil and not Game:GetService("Workspace"):FindFirstChild("BrutezCredit")then
- local BrutezCredit=Instance.new("Hint",Game:GetService("Workspace"));
- BrutezCredit.Name="BrutezCredit";
- BrutezCredit.Text="The creator of this game wants to thank Brutez for his SCP-096 script! Kudos!";
- BrutezCredit.Archivable=false;
- end
- if SCP096Script and SCP096 and SCP096Humanoid then
- SCP096Humanoid.CameraOffset=Vector3.new(0,0,0);
- SCP096Humanoid.DisplayDistanceType="None";
- SCP096Humanoid.HealthDisplayDistance=0;
- SCP096Humanoid.Name="SCP";
- SCP096Humanoid.NameDisplayDistance=0;
- SCP096Humanoid.NameOcclusion="EnemyOcclusion";
- SCP096Humanoid.Archivable=true;
- SCP096Humanoid.AutoRotate=true;
- SCP096Humanoid.MaxHealth=99999e99999;
- SCP096Humanoid.Health=99999e99999;
- SCP096Humanoid.JumpPower=100;
- SCP096Humanoid.MaxSlopeAngle=89.9;
- if not Chasing then
- local SwitchWander=math.random(1,2000);
- if SwitchWander==1 and not DynamicWander then
- DynamicWander=true;
- elseif SwitchWander==1 and DynamicWander then
- DynamicWander=false;
- end;
- local WalkChance=math.random(1,100);
- if WalkChance==1 and SCP096Script and SCP096 and SCP096:FindFirstChild("Torso")and SCP096:FindFirstChild("Head")and SCP096Humanoid and SCP096Humanoid.Health~=0 and not DynamicWander then
- SCP096Humanoid:MoveTo(Game:GetService("Workspace"):FindFirstChild("Terrain").Position+Vector3.new(math.random(-2048,2048),0,math.random(-2048,2048)),Game:GetService("Workspace"):FindFirstChild("Terrain"));
- elseif SCP096Script and SCP096 and SCP096Torso and SCP096Head and SCP096Humanoid and SCP096Humanoid.Health~=0 and DynamicWander then
- local WanderAngle=(math.random()-0.5)*1;
- local RotatingLookVector=CFrame.Angles(0,WanderAngle,0)*SCP096Torso.CFrame.lookVector;
- SCP096Humanoid:MoveTo(SCP096Torso.Position+6*RotatingLookVector,SCP096Torso);
- end;
- SCP096Humanoid.WalkSpeed=10;
- else
- SCP096Humanoid=50;
- end;
- end;
- if SCP096Script and SCP096 and Hush and Hush.IsPlaying then
- Hush:Stop();
- end;
- if SCP096Script and SCP096 and Idle and not Idle.IsPlaying then
- Idle:Play();
- end;
- if SCP096Script and SCP096 and Panic and Panic.IsPlaying then
- Panic:Stop();
- end;
- if SCP096Script and SCP096 and Screaming and Screaming.IsPlaying then
- Screaming:Stop();
- end;
- local NoticeDistance=10;
- local TargetTorso;
- for _,TargetModel in pairs(Game:GetService("Workspace"):GetChildren())do
- if TargetModel.className=="Model"and TargetModel~=SCP096 and TargetModel.Name~=SCP096.Name and TargetModel:FindFirstChild("Torso")and TargetModel:FindFirstChild("Head")then
- local TargetPart=TargetModel:FindFirstChild("Torso");
- local FoundHumanoid;
- for _,Child in pairs(TargetModel:GetChildren())do
- if Child and Child.ClassName=="Humanoid"and Child.Health~=0 then
- FoundHumanoid=Child;
- end;
- end;
- if TargetPart and FoundHumanoid and FoundHumanoid.Health~=0 and(TargetPart.Position-SCP096HumanoidRootPart.Position).magnitude<NoticeDistance then
- TargetTorso=TargetPart;
- NoticeDistance=(TargetPart.Position-SCP096HumanoidRootPart.Position).magnitude;
- AttackDebounce=true;
- Spawn(function()
- Chasing=true;
- if SCP096Script and SCP096 and Idle then
- Notice:Play();
- end;
- if SCP096Script and SCP096 and Hush and Hush.IsPlaying then
- Hush:Stop();
- end;
- if SCP096Script and SCP096 and Idle and Idle.IsPlaying then
- Idle:Stop();
- end;
- if SCP096Script and SCP096 and Panic then
- Panic:Play();
- end;
- if SCP096Script and SCP096 and Screaming and Screaming.IsPlaying then
- Screaming:Stop();
- end;
- SCP096Humanoid.WalkSpeed=0;
- SCP096Humanoid:MoveTo(SCP096HumanoidRootPart.Position+(SCP096HumanoidRootPart.Position-SCP096HumanoidRootPart.Position).unit*2,Game:GetService("Workspace"):FindFirstChild("Terrain"));
- Wait(30);
- if SCP096Script and SCP096 and Hush and not Hush.IsPlaying then
- Hush:Play();
- end;
- if SCP096Script and SCP096 and Idle and Idle.IsPlaying then
- Idle:Stop();
- end;
- if SCP096Script and SCP096 and Panic and Panic.IsPlaying then
- Panic:Stop();
- end;
- if SCP096Script and SCP096 and Screaming and not Screaming.IsPlaying then
- Screaming:Play();
- end;
- SCP096Humanoid.WalkSpeed=50;
- Spawn(function()
- while Wait(0)do
- local hit,pos=raycast(SCP096HumanoidRootPart.Position,(TargetPart.Position-SCP096HumanoidRootPart.Position).unit,500)
- if hit and hit.Parent and hit.Parent.ClassName=="Model"and hit.Parent:FindFirstChild("Torso")and hit.Parent:FindFirstChild("Head")then
- CanSee=true;
- else
- CanSee=false;
- end;
- end;
- end);
- repeat
- Wait(0)
- if CanSee then
- SCP096:FindFirstChild("MainAnimation"):FindFirstChild("CanSee").Value=true;
- SCP096Humanoid:MoveTo(TargetPart.Position+(TargetPart.Position-SCP096HumanoidRootPart.Position).unit*2,Game:GetService("Workspace"):FindFirstChild("Terrain"));
- elseif not CanSee then
- SCP096:FindFirstChild("MainAnimation"):FindFirstChild("CanSee").Value=false;
- end;
- if not CanSee and not Pathing then
- Spawn(function()
- Pathing=true;
- local RenderedPath=game:GetService("PathfindingService"):ComputeRawPathAsync(SCP096Torso.Position,TargetPart.Position,500);
- local RenderedPathCoordinates=RenderedPath:GetPointCoordinates();
- for _=1,#RenderedPathCoordinates do
- if not CanSee then
- local Point=RenderedPathCoordinates[_];
- local PathTimer=0;
- repeat Wait(0);
- SCP096Humanoid:MoveTo(Point);PathTimer=PathTimer+1;
- if PathTimer>15 or CanSee then
- break;
- end;
- until(SCP096Torso.Position-Point).Magnitude<7 or PathTimer>15 or CanSee;
- if PathTimer>15 or CanSee then
- break;
- end;
- end;
- end;
- Pathing=false;
- end);
- end;
- if TargetModel and TargetPart and FoundHumanoid and FoundHumanoid.Health~=0 and (TargetPart.Position-SCP096HumanoidRootPart.Position).magnitude<10 then
- Damage5:Play();
- FoundHumanoid:TakeDamage(99999e99999);
- end
- until TargetModel.Parent==nil or TargetPart.Parent==nil or FoundHumanoid.Parent==nil or TargetModel and TargetPart and FoundHumanoid and FoundHumanoid.Health==0;
- Chasing=false;
- end);
- repeat Wait(0);until not Chasing;
- CanSee=false;
- AttackDebounce=false
- end;
- end;
- end;
- end;
- --[[ By: Brutez. ]]--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement