View difference between Paste ID: uUXd8UBs and fSJ1wWUa
SHOW: | | - or go back to the newest paste.
1
-- [ By StarzoZero ] --
2
     -- [ WIP ] --
3
4
5
6
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
7-
if game:GetService("RunService"):IsClient()then error("Please run as a server script. Use h/ instead of hl/.")end;print("FE Compatibility: by WaverlyCole");InternalData = {}
7+
local Player,Mouse,mouse,UserInputService,ContextActionService = owner
8-
do
8+
local RealPlayer = Player
9-
    script.Parent = owner.Character
9+
do print("FE Compatibility code by Mokiros");InternalData = {}InternalData.RealOwner = owner;InternalData.RealObjs = {};InternalData.SoundLoudness = {};local a=RealPlayer;script.Parent=a.Character;local b=Instance.new("RemoteEvent")b.Name="UserInput_Event"local function c()local d={_fakeEvent=true,Functions={},Connect=function(self,e)table.insert(self.Functions,e)end}d.connect=d.Connect;return d end;local f={Target=nil,Hit=CFrame.new(),KeyUp=c(),KeyDown=c(),Button1Up=c(),Button1Down=c()}local g={InputBegan=c(),InputEnded=c()}local CAS={Actions={},BindAction=function(self,h,i,j,...)CAS.Actions[h]=i and{Name=h,Function=i,Keys={...}}or nil end}CAS.UnbindAction=CAS.BindAction;local function k(self,l,...)local d=f[l]if d and d._fakeEvent then for m,e in pairs(d.Functions)do e(...)end end end;f.TrigEvent=k;g.TrigEvent=k;b.OnServerEvent:Connect(function(n,o)if n~=a then return end;f.Target=o.Target;f.Hit=o.Hit;if not o.isMouse then local p=o.UserInputState==Enum.UserInputState.Begin;if o.UserInputType==Enum.UserInputType.MouseButton1 then return f:TrigEvent(p and"Button1Down"or"Button1Up")end;for m,d in pairs(CAS.Actions)do for m,q in pairs(d.Keys)do if q==o.KeyCode then d.Function(d.Name,o.UserInputState,o)end end end;f:TrigEvent(p and"KeyDown"or"KeyUp",o.KeyCode.Name:lower())g:TrigEvent(p and"InputBegan"or"InputEnded",o,false)end end)b.Parent=NLS([==[local a=game:GetService("Players").LocalPlayer;local b=script:WaitForChild("UserInput_Event")local c=a:GetMouse()local d=game:GetService("UserInputService")local e=function(f,g)if g then return end;b:FireServer({KeyCode=f.KeyCode,UserInputType=f.UserInputType,UserInputState=f.UserInputState,Hit=c.Hit,Target=c.Target})end;d.InputBegan:Connect(e)d.InputEnded:Connect(e)local h,i;while wait(1/30)do if h~=c.Hit or i~=c.Target then h,i=c.Hit,c.Target;b:FireServer({isMouse=true,Target=i,Hit=h})end end]==],Player.Character)local r=game;local s={__index=function(self,q)local t=rawget(self,"_RealService")if t then return t[q]end end,__newindex=function(self,q,u)local t=rawget(self,"_RealService")if t then t[q]=u end end,__call=function(self,...)local t=rawget(self,"_RealService")if t then return t(...)end end}local function v(d,w)d._RealService=typeof(w)=="string"and r:GetService(w)or w;return setmetatable(d,s)end;local x={GetService=function(self,t)return self[t]end,Players=v({LocalPlayer=v({GetMouse=function(self)return f end},Player)},"Players"),UserInputService=v(g,"UserInputService"),ContextActionService=v(CAS,"ContextActionService")}rawset(x.Players,"localPlayer",x.Players.LocalPlayer)x.service=x.GetService;x.RunService=v({RenderStepped=r:GetService("RunService").Heartbeat,BindToRenderStep=function(self,h,m,i)self._btrs[h]=self.Heartbeat:Connect(i)end,UnbindFromRenderStep=function(self,h)self._btrs[h]:Disconnect()end},"RunService")setmetatable(x,{__index=function(self,t)return r:GetService(t)or typeof(r[t])=="function"and function(m,...)return r[t](r,...)end or r[t]end,__newindex=s.__newindex,__call=s.__call})game,owner=x,x.Players.LocalPlayer
10-
    local Event = Instance.new("RemoteEvent");Event.Name = "UserInput"
10+
	script.Parent = InternalData.RealOwner.Character
11-
    local function NewFakeEvent()
11+
	local Event = Instance.new("RemoteEvent");Event.Name = "UserInput";InternalData.Event = Event
12-
        local Bind = Instance.new("BindableEvent")
12+
	local function createObject (connections, index)
13-
        local Fake;Fake = {Connections = {},
13+
    	local proxy = newproxy (true);local meta = getmetatable (proxy);
14-
        fakeEvent=true;
14+
    	local runbind = function (self, i, ...) connections[i]:Fire (...); end;
15-
        Connect=function(self,Func)
15+
		while (#connections > 0) do connections[table.remove(connections, 1)] = Instance.new ('BindableEvent');end;
16-
            Bind.Event:connect(Func)
16+
    	meta.__index = function (self, i)
17-
            self.Connections[Bind] = true
17+
        	if (i == 'TriggerEvent') then return runbind end;
18-
            return setmetatable({Connected = true},{
18+
        	return connections[i] and connections[i].Event or index[i];
19-
            __index = function (self,Index)
19+
    	end;
20-
                if Index:lower() == "disconnect" then
20+
    	meta.__newindex = index;meta.__metatable = false;return proxy
21-
                    return function() Fake.Connections[Bind] = false;self.Connected = false end
21+
	end;
22-
                end
22+
	local Mouse = createObject({"KeyUp","KeyDown","Button1Down","Button1Up"},{["Target"] = nil;["Hit"] = CFrame.new()})
23-
                return Fake[Index]
23+
	local UserInputService = createObject({"InputBegan","InputEnded"},{})
24-
            end;
24+
	local ContextActionService = {Actions={},BindAction = function(self,actionName,Func,touch,...)
25-
            __tostring = function() return "Connection" end;
25+
		self.Actions[actionName] = Func and {Name=actionName,Function=Func,Keys={...}} or nil
26
	end};ContextActionService.UnBindAction = ContextActionService.BindAction
27-
        end}
27+
	Event.OnServerEvent:Connect(function(FiredBy,Input)
28-
        Fake.connect = Fake.Connect;return Fake;
28+
		if FiredBy ~= InternalData.RealOwner then return end
29-
    end
29+
		if Input.MouseEvent then
30-
    local Mouse = {Target=nil,Hit=CFrame.new(),KeyUp=NewFakeEvent(),KeyDown=NewFakeEvent(),Button1Up=NewFakeEvent(),Button1Down=NewFakeEvent()}
30+
			Mouse.Target = Input.Target;Mouse.Hit = Input.Hit
31-
    local UserInputService = {InputBegan=NewFakeEvent(),InputEnded=NewFakeEvent()}
31+
		elseif Input.Sound then
32-
    local ContextActionService = {Actions={},BindAction = function(self,actionName,Func,touch,...)
32+
			if InternalData.SoundLoudness[Input.Sound] then InternalData.SoundLoudness[Input.Sound] = Input.Loudness end
33-
        self.Actions[actionName] = Func and {Name=actionName,Function=Func,Keys={...}} or nil
33+
		else
34-
    end};ContextActionService.UnBindAction = ContextActionService.BindAction
34+
			local Begin = Input.UserInputState == Enum.UserInputState.Begin
35-
    local function TriggerEvent(self,Event,...)
35+
			if Input.UserInputType == Enum.UserInputType.MouseButton1 then return Mouse:TriggerEvent(Begin and "Button1Down" or "Button1Up") end
36-
        local Trigger = Mouse[Event]
36+
			for _,Action in pairs(ContextActionService.Actions) do
37-
        if Trigger and Trigger.fakeEvent and Trigger.Connections then
37+
				for _,Key in pairs(Action.Keys) do if Key==Input.KeyCode then Action.Function(Action.Name,Input.UserInputState,Input) end end
38-
            for Connection,Active in pairs(Trigger.Connections) do if Active then Connection:Fire(...) end end
38+
			end
39-
        end
39+
			Mouse:TriggerEvent(Begin and "KeyDown" or "KeyUp",Input.KeyCode.Name:lower());UserInputService:TriggerEvent(Begin and "InputBegan" or "InputEnded",Input,false)
40-
    end
40+
		end
41-
    Mouse.TrigEvent = TriggerEvent;UserInputService.TrigEvent = TriggerEvent
41+
	end)
42-
    Event.OnServerEvent:Connect(function(FiredBy,Input)
42+
	InternalData["Mouse"] = Mouse;InternalData["ContextActionService"] = ContextActionService;InternalData["UserInputService"] = UserInputService
43-
        if FiredBy.Name ~= owner.Name then return end
43+
	Event.Parent = NLS([[
44-
        if Input.MouseEvent then
44+
		local Player = owner;
45-
            Mouse.Target = Input.Target;Mouse.Hit = Input.Hit
45+
		local Sounds = {};
46-
        else
46+
		local Event = script:WaitForChild("UserInput");
47-
            local Begin = Input.UserInputState == Enum.UserInputState.Begin
47+
		local UserInputService = game:GetService("UserInputService");
48-
            if Input.UserInputType == Enum.UserInputType.MouseButton1 then return Mouse:TrigEvent(Begin and "Button1Down" or "Button1Up") end
48+
		local Mouse = Player:GetMouse();
49-
            for _,Action in pairs(ContextActionService.Actions) do
49+
		local Input = function(Input,gameProcessedEvent)
50-
                for _,Key in pairs(Action.Keys) do if Key==Input.KeyCode then Action.Function(Action.Name,Input.UserInputState,Input) end end
50+
			if gameProcessedEvent then return end
51-
            end
51+
			Event:FireServer({KeyCode=Input.KeyCode,UserInputType=Input.UserInputType,UserInputState=Input.UserInputState})
52-
            Mouse:TrigEvent(Begin and "KeyDown" or "KeyUp",Input.KeyCode.Name:lower())
52+
		end
53-
            UserInputService:TrigEvent(Begin and "InputBegan" or "InputEnded",Input,false)
53+
		Event.OnClientEvent:connect(function(Args)
54-
        end
54+
			if Args[1] == "NewSound" then table.insert(Sounds,Args[2]) end
55-
    end)
55+
		end)
56-
    InternalData["Mouse"] = Mouse;InternalData["ContextActionService"] = ContextActionService;InternalData["UserInputService"] = UserInputService
56+
		UserInputService.InputBegan:Connect(Input);UserInputService.InputEnded:Connect(Input)
57-
    Event.Parent = NLS([[
57+
		local Hit,Target
58-
        local Player = owner;local Event = script:WaitForChild("UserInput");local UserInputService = game:GetService("UserInputService");local Mouse = Player:GetMouse()
58+
		while wait(1/30) do
59-
        local Input = function(Input,gameProcessedEvent)
59+
			for x,Sound in pairs(Sounds) do
60-
            if gameProcessedEvent then return end
60+
				if Sound.Parent then Event:FireServer({["Sound"]=Sound,["Loudness"]=Sound.PlaybackLoudness}) end
61-
            Event:FireServer({KeyCode=Input.KeyCode,UserInputType=Input.UserInputType,UserInputState=Input.UserInputState})
61+
			end
62-
        end
62+
			if Hit ~= Mouse.Hit or Target ~= Mouse.Target then
63-
        UserInputService.InputBegan:Connect(Input);UserInputService.InputEnded:Connect(Input)
63+
				Hit = Mouse.Hit;Target = Mouse.Target;
64-
        local Hit,Target
64+
				Event:FireServer({["MouseEvent"]=true,["Target"]=Target,["Hit"]=Hit})
65-
        while wait(1/30) do
65+
			end
66-
            if Hit ~= Mouse.Hit or Target ~= Mouse.Target then
66+
		end
67-
                Hit,Target = Mouse.Hit,Mouse.Target;Event:FireServer({["MouseEvent"]=true,["Target"]=Target,["Hit"]=Hit})
67+
	]],InternalData.RealOwner.Character)
68-
            end
68+
69-
        end
69+
InternalData.NewOwner = setmetatable({},{
70-
    ]],owner.Character)
70+
	__index = function (self,Index)
71
			local Type = type(InternalData.RealOwner[Index])
72-
RealGame = game;game = setmetatable({},{
72+
			if Type == "function" then
73-
    __index = function (self,Index)
73+
				if Index:lower() == "getmouse" or Index:lower() == "mouse" then
74-
        local Sandbox = function (Thing)
74+
				return function (self)return InternalData["Mouse"] end
75-
            if Thing:IsA("Player") then
75+
				end
76-
                local RealPlayer = Thing
76+
			return function (self,...)return InternalData.RealOwner[Index](InternalData.RealOwner,...) end
77-
                return setmetatable({},{
77+
		elseif Index == "FakePlayer" then
78-
                    __index = function (self,Index)
78+
			return true
79-
                        local Type = type(RealPlayer[Index])
79+
		end
80-
                        if Type == "function" then
80+
		return InternalData.RealOwner[Index]
81-
                            if Index:lower() == "getmouse" or Index:lower() == "mouse" then
81+
	end;
82-
                                return function (self)return InternalData["Mouse"] end
82+
	__tostring = function(self) return tostring(InternalData.RealOwner) end
83-
                            end
83+
})
84-
                            return function (self,...)return RealPlayer[Index](RealPlayer,...) end
84+
--LoadLibrary("RbxUtility").Create
85-
                        end
85+
InternalData.LoadLibrary = LoadLibrary;LoadLibrary = function(Library)
86-
                        return RealPlayer[Index]
86+
	if Library == "RbxUtility" then
87-
                    end;
87+
		return setmetatable({},{
88-
                    __tostring = function(self) return RealPlayer.Name end
88+
			__tostring = function() return "RbxUtility" end;
89-
                })
89+
			__index = function(self, Index)
90-
            end
90+
				if Index:lower() == "create" then
91-
        end
91+
					return function(Type)
92-
        if RealGame[Index] then
92+
						return function(Data)
93-
            local Type = type(RealGame[Index])
93+
							Data = Data or {}
94-
            if Type == "function" then
94+
							local Inst = Instance.new(Type)
95-
                if Index:lower() == "getservice" or Index:lower() == "service" then
95+
							for x,y in pairs(Data) do
96-
                    return function (self,Service)
96+
								if InternalData.RealObjs[y] then y = InternalData.RealObjs[y] end
97-
                        local FakeServices = {
97+
								if y == owner then y = InternalData.RealOwner end
98-
                            ["players"] = function()
98+
								Inst[x] = y
99-
                                return setmetatable({},{
99+
							end
100-
                                    __index = function (self2,Index2)
100+
							return Inst
101-
                                        local RealService = RealGame:GetService(Service)
101+
						end
102-
                                        local Type2 = type(Index2)
102+
					end
103-
                                        if Type2 == "function" then
103+
				end
104-
                                            return function (self,...) return RealService[Index2](RealService,...)end
104+
				return InternalData.LoadLibrary(Library)[Index]
105-
                                        else
105+
			end
106-
                                            if Index2:lower() == "localplayer" then return Sandbox(owner) end
106+
		})
107-
                                            return RealService[Index2]
107+
	end
108-
                                        end
108+
	return InternalData.LoadLibrary(Library)
109-
                                    end;
109+
110-
                                    __tostring = function(self) return RealGame:GetService(Service).Name end
110+
InternalData.RealInstance = Instance;Instance = setmetatable({},{
111-
                                })
111+
	__index = function (self,Index)
112-
                            end;
112+
		if Index:lower() == 'new' then
113-
                            ["contextactionservice"] = function() return InternalData["ContextActionService"] end;
113+
			return function (Type, Parent)
114-
                            ["userinputservice"] = function() return InternalData["UserInputService"] end;
114+
				if Parent == owner then Parent = InternalData.RealOwner end
115-
                            ["runservice"] = function()
115+
				if InternalData.RealObjs[Parent] then Parent = InternalData.RealObjs[Parent] end
116-
                                return setmetatable({},{
116+
				local Real = InternalData.RealInstance.new(Type,Parent)
117-
                                    __index = function(self2,Index2)
117+
				if not Type then return end
118-
                                        local RealService = RealGame:GetService(Service)
118+
				if Type == "BillboardGui" then
119-
                                        local Type2 = type(Index2)
119+
					local ToReturn = setmetatable({},{
120-
                                        if Type2 == "function" then
120+
						__index = function (self,Index)
121-
                                            return function (self,...) return RealService[Index2](RealService,...) end
121+
							if type(Real[Index]) == "function" then
122-
                                        else
122+
								if Index:lower() == "clone" then
123-
                                            local RunServices = {
123+
									return function (self)
124-
                                                ["bindtorenderstep"] = function() return function (self,Name,Priority,Function) return RealGame:GetService("RunService").Stepped:Connect(Function) end end;
124+
										local Real = Real:Clone()
125-
                                                ["renderstepped"] = function() return RealService["Stepped"] end
125+
										local ToReturn = setmetatable({RealObject = Real},{
126-
                                            }
126+
											__index = function (self,Index)
127-
                                            if RunServices[Index2:lower()] then return RunServices[Index2:lower()]() end
127+
												if type(Real[Index]) == "function" then return function (self,...) return Real[Index](Real,...)end end
128-
                                            return RealService[Index2]
128+
												return Real[Index]
129-
                                        end
129+
											end;
130-
                                    end
130+
											__newindex = function (self,Index,Value)
131-
                                })
131+
												if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
132-
                            end
132+
												if Value == owner then Value = InternalData.RealOwner end
133-
                        }
133+
												Real[Index] = Value
134-
                        if FakeServices[Service:lower()] then return FakeServices[Service:lower()]() end
134+
											end;
135-
                        return RealGame:GetService(Service)
135+
											__tostring = function(self) return tostring(Real) end;
136-
                    end
136+
										})
137-
                end
137+
										InternalData.RealObjs[ToReturn] = Real;return ToReturn;
138-
                return function (self,...) return RealGame[Index](RealGame,...) end
138+
									end
139-
            else
139+
								end
140-
                if game:GetService(Index) then return game:GetService(Index) end
140+
								return function (self,...) return Real[Index](Real,...)end
141-
                return RealGame[Index]
141+
							end
142-
            end
142+
							return Real[Index]
143-
        end
143+
						end;
144-
        return nil
144+
						__newindex = function (self,Index,Value)
145-
    end
145+
							if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
146-
});Game = game;owner = game:GetService("Players").LocalPlayer;script = Instance.new("Script");print("Complete! Running...")
146+
							if Value == owner then Value = InternalData.RealOwner end
147
							Real[Index] = Value
148
						end;
149
						__tostring = function(self) return tostring(Real) end;
150
					})
151
					InternalData.RealObjs[ToReturn] = Real;return ToReturn;
152
				elseif Type:lower() == "sound" then
153
					Real.Parent = owner.Character;
154
					local ToReturn = setmetatable({RealObject = Real},{
155
						__index = function (self,Index)
156
							if Index:lower() == "playbackloudness" then
157
								return InternalData.SoundLoudness[Real] or 0
158
							elseif type(Real[Index]) == "function" then
159
								if Index:lower() == "clone" then
160
									return function (self)
161
										local Real = Real:Clone()
162
										local ToReturn = setmetatable({},{
163
											__index = function (self,Index)
164
												if type(Real[Index]) == "function" then return function (self,...) return Real[Index](Real,...)end end
165
												return Real[Index]
166
											end;
167
											__newindex = function (self,Index,Value)
168
												if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
169
												if Value == owner then Value = InternalData.RealOwner end
170
												Real[Index] = Value
171
											end;
172
											__tostring = function(self) return tostring(Real) end;
173
										})
174
										InternalData.RealObjs[ToReturn] = Real;return ToReturn;
175
									end
176
								end
177
								return function (self,...) return Real[Index](Real,...)end
178
							end
179
							return Real[Index]
180
						end;
181
						__newindex = function (self,Index,Value)
182
							if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
183
							if Value == owner then Value = InternalData.RealOwner end
184
							Real[Index] = Value
185
						end;
186
						__tostring = function(self) return tostring(Real) end;
187
					})
188
					InternalData.RealObjs[ToReturn] = Real;InternalData.SoundLoudness[Real] = 0;repeat wait() until InternalData.Event.Parent InternalData.Event:FireClient(InternalData.RealOwner,{"NewSound",Real}) return ToReturn;
189
				else
190
					local ToReturn = setmetatable({RealObject = Real},{
191
						__index = function (self,Index)
192
							if type(Real[Index]) == "function" then
193
								if Index:lower() == "clone" then
194
									return function (self)
195
										local Real = Real:Clone()
196
										local ToReturn = setmetatable({},{
197
											__index = function (self,Index)
198
												if type(Real[Index]) == "function" then return function (self,...) return Real[Index](Real,...)end end
199
												return Real[Index]
200
											end;
201
											__newindex = function (self,Index,Value)
202
												if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
203
												if Value == owner then Value = InternalData.RealOwner end
204
												Real[Index] = Value
205
											end;
206
											__tostring = function(self) return tostring(Real) end;
207
										})
208
										InternalData.RealObjs[ToReturn] = Real;return ToReturn;
209
									end
210
								end
211
								return function (self,...) return Real[Index](Real,...)end
212
							end
213
							return Real[Index]
214
						end;
215
						__newindex = function (self,Index,Value)
216
							if InternalData.RealObjs[Value] then Value = InternalData.RealObjs[Value] end
217
							if Value == owner then Value = InternalData.RealOwner end
218
							Real[Index] = Value
219
						end;
220
						__tostring = function(self) return tostring(Real) end;
221
					})
222
					InternalData.RealObjs[ToReturn] = Real;return ToReturn;
223
				end
224
			end
225
		end
226
		return InternalData.RealInstance[Index]
227
	end;
228
	__tostring = function(self) return tostring(InternalData.RealInstance) end;
229
});
230
InternalData.RealGame = game;game = setmetatable({},{
231
	__index = function (self,Index)
232
		if InternalData.RealGame[Index] then
233
			local Type = type(InternalData.RealGame[Index])
234
			if Type == "function" then
235
				if Index:lower() == "getservice" or Index:lower() == "service" then
236
					return function (self,Service)
237
						local FakeServices = {
238
							["players"] = function()
239
								return setmetatable({},{
240
									__index = function (self2,Index2)
241
										local RealService = InternalData.RealGame:GetService(Service)
242
										local Type2 = type(RealService[Index2])
243
										if Type2 == "function" then
244
											return function (self,...) return RealService[Index2](RealService,...)end
245
										else
246
											if Index2:lower() == "localplayer" then return InternalData.NewOwner end
247
											return RealService[Index2]
248
										end
249
									end;
250
									__tostring = function(self) return tostring(InternalData.RealGame:GetService(Service)) end
251
								})
252
							end;
253
							["contextactionservice"] = function() return InternalData["ContextActionService"] end;
254
							["userinputservice"] = function() return InternalData["UserInputService"] end;
255
							["debris"] = function()
256
								return setmetatable({},{
257
									__index = function(self2,Index2)
258
										local RealService = InternalData.RealGame:GetService(Service)
259
										local Type2 = type(RealService[Index2])
260
										if Type2 == "function" then
261
											if Index2:lower() == "additem" then
262
												return function (self,Item,Time)
263
													if InternalData.RealObjs[Item] then Item = InternalData.RealObjs[Item] end
264
													return RealService:AddItem(Item,Time)
265
												end
266
											end
267
											return function (self,...) return RealService[Index2](RealService,...) end
268
										end
269
										return RealService[Index2]
270
									end;
271
									__tostring = function(self) return tostring(InternalData.RealGame:GetService("Debris")) end
272
								})
273
							end;
274
							["runservice"] = function()
275
								return setmetatable({},{
276
									__index = function(self2,Index2)
277
										local RealService = InternalData.RealGame:GetService(Service)
278
										local Type2 = type(RealService[Index2])
279
										if Type2 == "function" then
280
											return function (self,...) return RealService[Index2](RealService,...) end
281
										else
282
											local RunServices = {
283
												["bindtorenderstep"] = function() return function (self,Name,Priority,Function) return InternalData.RealGame:GetService("RunService").Stepped:Connect(Function) end end;
284
												["renderstepped"] = function() return RealService["Stepped"] end
285
											}
286
											if RunServices[Index2:lower()] then return RunServices[Index2:lower()]() end
287
											return RealService[Index2]
288
										end
289
									end;
290
									__tostring = function(self) return tostring(InternalData.RealGame:GetService("RunService")) end
291
								})
292
							end
293
						}
294
						if FakeServices[Service:lower()] then return FakeServices[Service:lower()]() end
295
						return InternalData.RealGame:GetService(Service)
296
					end
297
				end
298
				return function (self,...) return InternalData.RealGame[Index](InternalData.RealGame,...) end
299
			else
300
				if game:GetService(Index) then return game:GetService(Index) end
301
				return InternalData.RealGame[Index]
302
			end
303
		end
304
		return nil
305
	end;
306
	__tostring = function(self) return tostring(InternalData.game) end
307
});Game = game;owner = game:GetService("Players").LocalPlayer;script = Instance.new("Script");print("Complete!")
308
wait()
309
310
local music = Instance.new("Sound", game.Players.LocalPlayer.Character.Head)
311
music.SoundId = "rbxassetid://157133918"
312
music.Volume = 3.2
313
music.Looped = true
314
music.Pitch = 1
315
music:Play()
316
317
thing = 0
318
LoudVolume = false
319
Submerged = false
320
Music = true
321
script.Name = "SANIIIIC"
322
Player = game.Players.LocalPlayer
323
c = game.Players.LocalPlayer.Character
324
Head = c.Head
325
Humanoid = c.Humanoid
326
anim = c.Humanoid.Animator
327
rage = false
328
p = game.Players.LocalPlayer
329
Music = false
330
anim = Humanoid.Animator
331
local Effects = {}
332
attack = false
333
local attacking = false
334
vt = Vector3.new
335
bc = BrickColor.new
336
br = BrickColor.random
337
it = Instance.new
338
cf = CFrame.new
339
euler = CFrame.fromEulerAnglesXYZ
340
angles = CFrame.Angles
341
matr = math.random
342
mouse = Player:GetMouse()
343
344
  RSC0 = CFrame.new(1, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
345
  RSC1 = CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
346
  LSC0 = CFrame.new(-1, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
347
  LSC1 = CFrame.new(0.5, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
348
  RHC0 = CFrame.new(1, -1, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
349
  RHC1 = CFrame.new(0.5, 1, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
350
  LHC0 = CFrame.new(-1, -1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
351
  LHC1 = CFrame.new(-0.5, 1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
352
  NC0 = CFrame.new(0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)
353
  NC1 = CFrame.new(0, -0.5, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)
354
  RJC0 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)
355
  RJC1 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)
356
  RS = c.Torso:FindFirstChild("Right Shoulder")
357
  LS = c.Torso:FindFirstChild("Left Shoulder")
358
  RH = c.Torso:FindFirstChild("Right Hip")
359
  LH = c.Torso:FindFirstChild("Left Hip")
360
  RJ = c.HumanoidRootPart:FindFirstChild("RootJoint")
361
  N = c.Torso:FindFirstChild("Neck")
362
  cf = CFrame.new
363
  ang = CFrame.Angles
364
  rd = math.rad
365
  rd2 = math.random
366
367
--[[mainShirt = c.Shirt
368
mainPants = c.Pants
369
mainBColors = c["Body Colors"]
370
mainShirt.ShirtTemplate = "rbxassetid://769869277"
371
mainPants.PantsTemplate = "rbxassetid://805486769"
372
mainBColors.HeadColor = BrickColor.new("Pastel brown")
373
mainBColors.LeftArmColor = BrickColor.new("Pastel brown")
374
mainBColors.LeftLegColor = BrickColor.new("Pastel brown")
375
mainBColors.RightArmColor = BrickColor.new("Pastel brown")
376
mainBColors.RightLegColor = BrickColor.new("Pastel brown")
377
mainBColors.TorsoColor = BrickColor.new("Pastel brown")]]
378
function swait(num)
379
if num==0 or num==nil then
380
game:service'RunService'.Heartbeat:wait(0)
381
else
382
for i=0,num do
383
game:service'RunService'.Heartbeat:wait(0)
384
end
385
end
386
end
387
	
388
  function lerpz(joint, prop, cfrmz, alp)
389
    joint[prop] = joint[prop]:lerp(cfrmz, alp)
390
  end
391
  function resetlerp()
392
    RJ.C0 = RJC0
393
    RJ.C1 = RJC1
394
    N.C0 = NC0
395
    N.C1 = NC1
396
    RS.C0 = RSC0
397
    RS.C1 = RSC1
398
    LS.C0 = LSC0
399
    LS.C1 = LSC1
400
    RH.C0 = RHC0
401
    RH.C1 = RHC1
402
    LH.C0 = LHC0
403
	LH.C1 = LHC1
404
  end
405
406
local S2 = Instance.new("Sound",c.HumanoidRootPart)S2.SoundId = "rbxassetid://0" S2.Volume = 1 S2.PlaybackSpeed = 1 S2.Looped = true S2:Play()
407
408
local ColorArray = {ColorSequenceKeypoint.new(0, Color3.new(0/255,170/255,255/255)),ColorSequenceKeypoint.new(1, Color3.new(0/255,170/255,255/255))}
409
local att1 = Instance.new("Attachment", c["Right Leg"])
410
att1.Name = "att1"
411
att1.Position = Vector3.new(0.5, 1, 0.5)
412
local att2 = Instance.new("Attachment", c["Right Leg"])
413
att2.Name = "att2"
414
att2.Position = Vector3.new(-0.5, 1, 0.5)
415
local att3 = Instance.new("Attachment", c["Right Leg"])
416
att3.Name = "att3"
417
att3.Position = Vector3.new(0.5, -1, 0.5)
418
local att4 = Instance.new("Attachment", c["Right Leg"])
419
att4.Name = "att4"
420
att4.Position = Vector3.new(-0.5, -1, 0.5)
421
422
local attt1 = Instance.new("Attachment", c["Left Leg"])
423
attt1.Name = "att1"
424
attt1.Position = Vector3.new(0.5, 1, 0.5)
425
local attt2 = Instance.new("Attachment", c["Left Leg"])
426
attt2.Name = "att2"
427
attt2.Position = Vector3.new(-0.5, 1, 0.5)
428
local attt3 = Instance.new("Attachment", c["Left Leg"])
429
attt3.Name = "att3"
430
attt3.Position = Vector3.new(0.5, -1, 0.5)
431
local attt4 = Instance.new("Attachment", c["Left Leg"])
432
attt4.Name = "att4"
433
attt4.Position = Vector3.new(-0.5, -1, 0.5)
434
435
local trailtop1 = Instance.new("Trail", c["Right Leg"])
436
trailtop1.Enabled = true
437
trailtop1.Texture = "rbxassetid://16607923"
438
trailtop1.Name = "toptrail"
439
trailtop1.MinLength = 0
440
trailtop1.Lifetime = 0.1
441
442
trailtop1.Color = ColorSequence.new(ColorArray)
443
444
trailtop1.Attachment0 = att1
445
trailtop1.Attachment1 = att2
446
trailtop1.Transparency = NumberSequence.new({
447
          NumberSequenceKeypoint.new(0, 0.5, 0),
448
          NumberSequenceKeypoint.new(1, 1, 0)
449
        })
450
451
local trailbot1 = Instance.new("Trail", c["Right Leg"])
452
trailbot1.Enabled = true
453
trailbot1.Texture = "rbxassetid://16607923"
454
trailbot1.Name = "bottrail"
455
trailbot1.MinLength = 0
456
trailbot1.Lifetime = 0.1
457
458
trailbot1.Color = ColorSequence.new(ColorArray)
459
460
trailbot1.Attachment0 = att3
461
trailbot1.Attachment1 = att4
462
trailbot1.Transparency = NumberSequence.new({
463
          NumberSequenceKeypoint.new(0, 0.5, 0),
464
          NumberSequenceKeypoint.new(1, 1, 0)
465
        })
466
467
local trailside1 = Instance.new("Trail", c["Right Leg"])
468
trailside1.Enabled = true
469
trailside1.Texture = "rbxassetid://16607923"
470
trailside1.Name = "sidetrail1"
471
trailside1.MinLength = 0
472
trailside1.Lifetime = 0.1
473
474
trailside1.Color = ColorSequence.new(ColorArray)
475
476
trailside1.Attachment0 = att1
477
trailside1.Attachment1 = att3
478
trailside1.Transparency = NumberSequence.new({
479
          NumberSequenceKeypoint.new(0, 0.5, 0),
480
          NumberSequenceKeypoint.new(1, 1, 0)
481
        })
482
483
local trailside2 = Instance.new("Trail", c["Right Leg"])
484
trailside2.Enabled = true
485
trailside2.Texture = "rbxassetid://16607923"
486
trailside2.Name = "sidetrail2"
487
trailside2.MinLength = 0
488
trailside2.Lifetime = 0.1
489
spawn(function()
490
while true do wait()
491
trailside2.Color = ColorSequence.new(ColorArray)
492
end
493
end)
494
trailside2.Attachment0 = att2
495
trailside2.Attachment1 = att4
496
trailside2.Transparency = NumberSequence.new({
497
          NumberSequenceKeypoint.new(0, 0.5, 0),
498
          NumberSequenceKeypoint.new(1, 1, 0)
499
        })
500
501
502
local trailtop12 = Instance.new("Trail", c["Left Leg"])
503
trailtop12.Enabled = true
504
trailtop12.Texture = "rbxassetid://16607923"
505
trailtop12.Name = "toptrail"
506
trailtop12.MinLength = 0
507
trailtop12.Lifetime = 0.1
508
spawn(function()
509
while true do wait()
510
trailtop12.Color = ColorSequence.new(ColorArray)
511
end
512
end)
513
trailtop12.Attachment0 = attt1
514
trailtop12.Attachment1 = attt2
515
trailtop12.Transparency = NumberSequence.new({
516
          NumberSequenceKeypoint.new(0, 0.5, 0),
517
          NumberSequenceKeypoint.new(1, 1, 0)
518
        })
519
520
local trailbot2 = Instance.new("Trail", c["Left Leg"])
521
trailbot2.Enabled = true
522
trailbot2.Texture = "rbxassetid://16607923"
523
trailbot2.Name = "bottrail"
524
trailbot2.MinLength = 0
525
trailbot2.Lifetime = 0.1
526
527
trailbot2.Color = ColorSequence.new(ColorArray)
528
529
trailbot2.Attachment0 = attt3
530
trailbot2.Attachment1 = attt4
531
trailbot2.Transparency = NumberSequence.new({
532
          NumberSequenceKeypoint.new(0, 0.5, 0),
533
          NumberSequenceKeypoint.new(1, 1, 0)
534
        })
535
536
local trailside12 = Instance.new("Trail", c["Left Leg"])
537
trailside12.Enabled = true
538
trailside12.Texture = "rbxassetid://16607923"
539
trailside12.Name = "sidetrail1"
540
trailside12.MinLength = 0
541
trailside12.Lifetime = 0.1
542
543
trailside12.Color = ColorSequence.new(ColorArray)
544
545
trailside12.Attachment0 = attt1
546
trailside12.Attachment1 = attt3
547
trailside12.Transparency = NumberSequence.new({
548
          NumberSequenceKeypoint.new(0, 0.5, 0),
549
          NumberSequenceKeypoint.new(1, 1, 0)
550
        })
551
552
local trailside22 = Instance.new("Trail", c["Left Leg"])
553
trailside22.Enabled = true
554
trailside22.Texture = "rbxassetid://16607923"
555
trailside22.Name = "sidetrail2"
556
trailside22.MinLength = 0
557
trailside22.Lifetime = 0.1
558
559
trailside22.Color = ColorSequence.new(ColorArray)
560
561
trailside22.Attachment0 = attt2
562
trailside22.Attachment1 = attt4
563
trailside22.Transparency = NumberSequence.new({
564
          NumberSequenceKeypoint.new(0, 0.5, 0),
565
          NumberSequenceKeypoint.new(1, 1, 0)
566
        })
567
568
569
local att1 = Instance.new("Attachment", c["Right Arm"])
570
att1.Name = "att1"
571
att1.Position = Vector3.new(0.5, 1, 0.5)
572
local att2 = Instance.new("Attachment", c["Right Arm"])
573
att2.Name = "att2"
574
att2.Position = Vector3.new(-0.5, 1, 0.5)
575
local att3 = Instance.new("Attachment", c["Right Arm"])
576
att3.Name = "att3"
577
att3.Position = Vector3.new(0.5, -1, 0.5)
578
local att4 = Instance.new("Attachment", c["Right Arm"])
579
att4.Name = "att4"
580
att4.Position = Vector3.new(-0.5, -1, 0.5)
581
582
local attt1 = Instance.new("Attachment", c["Left Arm"])
583
attt1.Name = "att1"
584
attt1.Position = Vector3.new(0.5, 1, 0.5)
585
local attt2 = Instance.new("Attachment", c["Left Arm"])
586
attt2.Name = "att2"
587
attt2.Position = Vector3.new(-0.5, 1, 0.5)
588
local attt3 = Instance.new("Attachment", c["Left Arm"])
589
attt3.Name = "att3"
590
attt3.Position = Vector3.new(0.5, -1, 0.5)
591
local attt4 = Instance.new("Attachment", c["Left Arm"])
592
attt4.Name = "att4"
593
attt4.Position = Vector3.new(-0.5, -1, 0.5)
594
595
local trailtop1 = Instance.new("Trail", c["Right Arm"])
596
trailtop1.Enabled = true
597
trailtop1.Texture = "rbxassetid://16607923"
598
trailtop1.Name = "toptrail"
599
trailtop1.MinLength = 0
600
trailtop1.Lifetime = 0.1
601
602
trailtop1.Color = ColorSequence.new(ColorArray)
603
604
trailtop1.Attachment0 = att1
605
trailtop1.Attachment1 = att2
606
trailtop1.Transparency = NumberSequence.new({
607
          NumberSequenceKeypoint.new(0, 0.5, 0),
608
          NumberSequenceKeypoint.new(1, 1, 0)
609
        })
610
611
local trailbot1 = Instance.new("Trail", c["Right Arm"])
612
trailbot1.Enabled = true
613
trailbot1.Texture = "rbxassetid://16607923"
614
trailbot1.Name = "bottrail"
615
trailbot1.MinLength = 0
616
trailbot1.Lifetime = 0.1
617
spawn(function()
618
while true do wait()
619
trailbot1.Color = ColorSequence.new(ColorArray)
620
end
621
end)
622
trailbot1.Attachment0 = att3
623
trailbot1.Attachment1 = att4
624
trailbot1.Transparency = NumberSequence.new({
625
          NumberSequenceKeypoint.new(0, 0.5, 0),
626
          NumberSequenceKeypoint.new(1, 1, 0)
627
        })
628
629
local trailside1 = Instance.new("Trail", c["Right Arm"])
630
trailside1.Enabled = true
631
trailside1.Texture = "rbxassetid://16607923"
632
trailside1.Name = "sidetrail1"
633
trailside1.MinLength = 0
634
trailside1.Lifetime = 0.1
635
636
trailside1.Color = ColorSequence.new(ColorArray)
637
638
trailside1.Attachment0 = att1
639
trailside1.Attachment1 = att3
640
trailside1.Transparency = NumberSequence.new({
641
          NumberSequenceKeypoint.new(0, 0.5, 0),
642
          NumberSequenceKeypoint.new(1, 1, 0)
643
        })
644
645
local trailside2 = Instance.new("Trail", c["Right Arm"])
646
trailside2.Enabled = true
647
trailside2.Texture = "rbxassetid://16607923"
648
trailside2.Name = "sidetrail2"
649
trailside2.MinLength = 0
650
trailside2.Lifetime = 0.1
651
652
trailside2.Color = ColorSequence.new(ColorArray)
653
654
trailside2.Attachment0 = att2
655
trailside2.Attachment1 = att4
656
trailside2.Transparency = NumberSequence.new({
657
          NumberSequenceKeypoint.new(0, 0.5, 0),
658
          NumberSequenceKeypoint.new(1, 1, 0)
659
        })
660
661
662
local trailtop12 = Instance.new("Trail", c["Left Arm"])
663
trailtop12.Enabled = true
664
trailtop12.Texture = "rbxassetid://16607923"
665
trailtop12.Name = "toptrail"
666
trailtop12.MinLength = 0
667
trailtop12.Lifetime = 0.1
668
669
trailtop12.Color = ColorSequence.new(ColorArray)
670
671
trailtop12.Attachment0 = attt1
672
trailtop12.Attachment1 = attt2
673
trailtop12.Transparency = NumberSequence.new({
674
          NumberSequenceKeypoint.new(0, 0.5, 0),
675
          NumberSequenceKeypoint.new(1, 1, 0)
676
        })
677
678
local trailbot2 = Instance.new("Trail", c["Left Arm"])
679
trailbot2.Enabled = true
680
trailbot2.Texture = "rbxassetid://16607923"
681
trailbot2.Name = "bottrail"
682
trailbot2.MinLength = 0
683
trailbot2.Lifetime = 0.1
684
685
trailbot2.Color = ColorSequence.new(ColorArray)
686
687
trailbot2.Attachment0 = attt3
688
trailbot2.Attachment1 = attt4
689
trailbot2.Transparency = NumberSequence.new({
690
          NumberSequenceKeypoint.new(0, 0.5, 0),
691
          NumberSequenceKeypoint.new(1, 1, 0)
692
        })
693
694
local trailside12 = Instance.new("Trail", c["Left Arm"])
695
trailside12.Enabled = true
696
trailside12.Texture = "rbxassetid://16607923"
697
trailside12.Name = "sidetrail1"
698
trailside12.MinLength = 0
699
trailside12.Lifetime = 0.1
700
701
trailside12.Color = ColorSequence.new(ColorArray)
702
703
trailside12.Attachment0 = attt1
704
trailside12.Attachment1 = attt3
705
trailside12.Transparency = NumberSequence.new({
706
          NumberSequenceKeypoint.new(0, 0.5, 0),
707
          NumberSequenceKeypoint.new(1, 1, 0)
708
        })
709
710
local trailside22 = Instance.new("Trail", c["Left Arm"])
711
trailside22.Enabled = true
712
trailside22.Texture = "rbxassetid://16607923"
713
trailside22.Name = "sidetrail2"
714
trailside22.MinLength = 0
715
trailside22.Lifetime = 0.1
716
717
trailside22.Color = ColorSequence.new(ColorArray)
718
719
trailside22.Attachment0 = attt2
720
trailside22.Attachment1 = attt4
721
trailside22.Transparency = NumberSequence.new({
722
          NumberSequenceKeypoint.new(0, 0.5, 0),
723
          NumberSequenceKeypoint.new(1, 1, 0)
724
        })	
725
726
local att1 = Instance.new("Attachment", c["Torso"])
727
att1.Name = "att1"
728
att1.Position = Vector3.new(1, 1, 0.5)
729
local att2 = Instance.new("Attachment", c["Torso"])
730
att2.Name = "att2"
731
att2.Position = Vector3.new(-1, 1, 0.5)
732
local att3 = Instance.new("Attachment", c["Torso"])
733
att3.Name = "att3"
734
att3.Position = Vector3.new(1, -1, 0.5)
735
local att4 = Instance.new("Attachment", c["Torso"])
736
att4.Name = "att4"
737
att4.Position = Vector3.new(-1, -1, 0.5)
738
739
local attt1 = Instance.new("Attachment", c["Head"])
740
attt1.Name = "att1"
741
attt1.Position = Vector3.new(.55, .55, 0.025)
742
local attt2 = Instance.new("Attachment", c["Head"])
743
attt2.Name = "att2"
744
attt2.Position = Vector3.new(-.55, .55, 0.025)
745
local attt3 = Instance.new("Attachment", c["Head"])
746
attt3.Name = "att3"
747
attt3.Position = Vector3.new(.55, -.5, 0.025)
748
local attt4 = Instance.new("Attachment", c["Head"])
749
attt4.Name = "att4"
750
attt4.Position = Vector3.new(-.55, -.5, 0.025)
751
local trailtop1 = Instance.new("Trail", c["Torso"])
752
trailtop1.Enabled = true
753
trailtop1.Texture = "rbxassetid://16607923"
754
trailtop1.Name = "toptrail"
755
trailtop1.MinLength = 0
756
trailtop1.Lifetime = 0.1
757
758
trailtop1.Color = ColorSequence.new(ColorArray)
759
760
trailtop1.Attachment0 = att1
761
trailtop1.Attachment1 = att2
762
trailtop1.Transparency = NumberSequence.new({
763
          NumberSequenceKeypoint.new(0, 0.5, 0),
764
          NumberSequenceKeypoint.new(1, 1, 0)
765
        })
766
local trailbot1 = Instance.new("Trail", c["Torso"])
767
trailbot1.Enabled = true
768
trailbot1.Texture = "rbxassetid://16607923"
769
trailbot1.Name = "bottrail"
770
trailbot1.MinLength = 0
771
trailbot1.Lifetime = 0.1
772
773
trailbot1.Color = ColorSequence.new(ColorArray)
774
775
trailbot1.Attachment0 = att3
776
trailbot1.Attachment1 = att4
777
trailbot1.Transparency = NumberSequence.new({
778
          NumberSequenceKeypoint.new(0, 0.5, 0),
779
          NumberSequenceKeypoint.new(1, 1, 0)
780
        })
781
local trailside1 = Instance.new("Trail", c["Torso"])
782
trailside1.Enabled = true
783
trailside1.Texture = "rbxassetid://16607923"
784
trailside1.Name = "sidetrail1"
785
trailside1.MinLength = 0
786
trailside1.Lifetime = 0.1
787
788
trailside1.Color = ColorSequence.new(ColorArray)
789
790
trailside1.Attachment0 = att1
791
trailside1.Attachment1 = att3
792
trailside1.Transparency = NumberSequence.new({
793
          NumberSequenceKeypoint.new(0, 0.5, 0),
794
          NumberSequenceKeypoint.new(1, 1, 0)
795
        })
796
local trailside2 = Instance.new("Trail", c["Torso"])
797
trailside2.Enabled = true
798
trailside2.Texture = "rbxassetid://16607923"
799
trailside2.Name = "sidetrail2"
800
trailside2.MinLength = 0
801
trailside2.Lifetime = 0.1
802
803
trailside2.Color = ColorSequence.new(ColorArray)
804
805
trailside2.Attachment0 = att2
806
trailside2.Attachment1 = att4
807
trailside2.Transparency = NumberSequence.new({
808
          NumberSequenceKeypoint.new(0, 0.5, 0),
809
          NumberSequenceKeypoint.new(1, 1, 0)
810
        })
811
local trailtop12 = Instance.new("Trail", c["Head"])
812
trailtop12.Enabled = true
813
trailtop12.Texture = "rbxassetid://16607923"
814
trailtop12.Name = "toptrail"
815
trailtop12.MinLength = 0
816
trailtop12.Lifetime = 0.1
817
818
trailtop12.Color = ColorSequence.new(ColorArray)
819
820
trailtop12.Attachment0 = attt1
821
trailtop12.Attachment1 = attt2
822
trailtop12.Transparency = NumberSequence.new({
823
          NumberSequenceKeypoint.new(0, 0.5, 0),
824
          NumberSequenceKeypoint.new(1, 1, 0)
825
        })
826
local trailbot2 = Instance.new("Trail", c["Head"])
827
trailbot2.Enabled = true
828
trailbot2.Texture = "rbxassetid://16607923"
829
trailbot2.Name = "bottrail"
830
trailbot2.MinLength = 0
831
trailbot2.Lifetime = 0.1
832
833
trailbot2.Color = ColorSequence.new(ColorArray)
834
835
trailbot2.Attachment0 = attt3
836
trailbot2.Attachment1 = attt4
837
trailbot2.Transparency = NumberSequence.new({
838
          NumberSequenceKeypoint.new(0, 0.5, 0),
839
          NumberSequenceKeypoint.new(1, 1, 0)
840
        })
841
local trailside12 = Instance.new("Trail", c["Head"])
842
trailside12.Enabled = true
843
trailside12.Texture = "rbxassetid://16607923"
844
trailside12.Name = "sidetrail1"
845
trailside12.MinLength = 0
846
trailside12.Lifetime = 0.1
847
848
trailside12.Color = ColorSequence.new(ColorArray)
849
850
trailside12.Attachment0 = attt1
851
trailside12.Attachment1 = attt3
852
trailside12.Transparency = NumberSequence.new({
853
          NumberSequenceKeypoint.new(0, 0.5, 0),
854
          NumberSequenceKeypoint.new(1, 1, 0)
855
        })
856
local trailside22 = Instance.new("Trail", c["Head"])
857
trailside22.Enabled = true
858
trailside22.Texture = "rbxassetid://16607923"
859
trailside22.Name = "sidetrail2"
860
trailside22.MinLength = 0
861
trailside22.Lifetime = 0.1
862
863
trailside22.Color = ColorSequence.new(ColorArray)
864
865
trailside22.Attachment0 = attt2 trailside22.Attachment1 = attt4
866
trailside22.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 0.5, 0),NumberSequenceKeypoint.new(1, 1, 0)})
867
868
Sped = 0
869
870
function ragplayer(cactus)
871
local S = Instance.new("Sound",c.HumanoidRootPart)S.SoundId = "rbxassetid://872854837" S.Volume = 2 S:Play()
872
cactus.Humanoid.PlatformStand = true cactus:findFirstChild("Humanoid").Health = 0.01
873
if cactus["Right Arm"]~=nil and cactus.Torso:FindFirstChild("Right Shoulder") then
874
cactus.Torso:FindFirstChild("Right Shoulder"):Destroy()
875
makegloo(cactus.Torso, RSC0, RSC1, cactus.Torso, cactus["Right Arm"], "Right Shoulder")
876
maketouchy(cactus["Right Arm"], cactus["Right Arm"], CFrame.new(0, 0.5, 0))
877
end
878
if cactus["Left Arm"]~=nil and cactus.Torso:FindFirstChild("Left Shoulder") then
879
cactus.Torso:FindFirstChild("Left Shoulder"):Destroy()
880
makegloo(cactus.Torso, LSC0, LSC1, cactus.Torso, cactus["Left Arm"], "Left Shoulder")
881
maketouchy(cactus["Left Arm"], cactus["Left Arm"], CFrame.new(0, 0.5, 0))
882
end
883
if cactus["Right Leg"]~=nil and cactus.Torso:FindFirstChild("Right Hip") then
884
cactus.Torso:FindFirstChild("Right Hip"):Destroy()
885
makegloo(cactus.Torso, RHC0, RHC1, cactus.Torso, cactus["Right Leg"], "Right Hip")
886
maketouchy(cactus["Right Leg"], cactus["Right Leg"], CFrame.new(0, 0.5, 0))
887
end
888
if cactus["Left Leg"]~=nil and cactus.Torso:FindFirstChild("Left Hip") then
889
cactus.Torso:FindFirstChild("Left Hip"):Destroy()
890
makegloo(cactus.Torso, LHC0, LHC1, cactus.Torso, cactus["Left Leg"], "Left Hip")
891
maketouchy(cactus["Left Leg"], cactus["Left Leg"], CFrame.new(0, 0.5, 0))
892
end
893
cactus.Parent = game.Workspace game.Debris:AddItem(cactus,15)
894
end
895
function makegloo(paren, co, ci, parto, parti, nam) local gloo = Instance.new("Glue") gloo.Name = nam gloo.C0 = co gloo.C1 = ci gloo.Part0 = parto gloo.Part1 = parti gloo.Parent = paren end
896
897
function maketouchy(parent, limb, cframe) local pr = Instance.new("Part") pr.Name = "touchy" pr.Size = Vector3.new(1, 1, 1) pr.Transparency = 1 pr.CustomPhysicalProperties = PhysicalProperties.new(0.55, 0.3, 0.5) pr.CanCollide = true pr.Anchored = false pr.Parent = parent local w = Instance.new("Weld") w.Part0 = pr w.Part1 = limb w.C0 = cframe w.Parent = pr end
898
899
local hitz = false
900
c.HumanoidRootPart.Touched:connect(function(Hit)
901
if thing >= 100 then 
902
if hitz == false then hitz = true
903
ragplayer(c) local S = Instance.new("Sound",c.HumanoidRootPart)S.SoundId = "rbxassetid://633129949" S.Volume = 6 S:Play()
904
wait(15)
905
end
906
end
907
end)
908
909
function Spin()
910
attack = true
911
while attack == true do Sped = Sped + 0.25
912
lerpz(RJ, "C0", RJC0 * cf(0, 0, 0) * ang(rd(Sped*Sped*5), rd(0), rd(0)), 1)
913
lerpz(N, "C0", NC0 * cf(0, 0, 0) * ang(rd(60), rd(0), rd(0)), 1)
914
lerpz(RS, "C0", RSC0 * cf(0, 0, 0) * ang(rd(15), rd(25), rd(25)), 1)
915
lerpz(RS, "C1", RSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
916
lerpz(LS, "C0", LSC0 * cf(0, 0, 0) * ang(rd(15), rd(-25), rd(-25)), 1)
917
lerpz(LS, "C1", LSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
918
lerpz(RH, "C0", RHC0 * cf(0.5, 1.5, 0) * ang(rd(0), rd(0), rd(0)), 1)
919
lerpz(RH, "C1", RHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
920
lerpz(LH, "C0", LHC0 * cf(-0.5, 1.5, 0) * ang(rd(0), rd(0), rd(0)), 1)
921
lerpz(LH, "C1", LHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
922
swait()
923
end
924
end
925
926
SanicScreams = {585370931,202427593}	
927
928
mouse.KeyDown:connect(function(key)
929
if attack == true then return end
930
if key == "q" then
931
Spin()
932
end
933
if key == "e" then
934
local S = Instance.new("Sound",c.HumanoidRootPart)S.SoundId = "rbxassetid://1247863968" S.Volume = 10 S:Play()
935
wait(1.25)
936
local Sanic  = SanicScreams[math.random(1,#SanicScreams)]
937
local S = Instance.new("Sound",c.HumanoidRootPart)S.SoundId = "rbxassetid://0" S.Volume = 10 S:Play()
938
spawn(function()
939
local Sp = Instance.new("Part",game.Workspace)Sp.BrickColor = BrickColor.new("Cyan")Sp.Material = "Neon" Sp.Size = Vector3.new(1,1,1) Sp.Anchored = true Sp.CanCollide = false
940
local SPM = Instance.new("SpecialMesh",Sp)SPM.MeshType = "Sphere" Sp.CFrame = c.HumanoidRootPart.CFrame
941
for i = 1,25 do
942
SPM.Scale = SPM.Scale + Vector3.new(4,4,4)
943
Sp.Transparency = Sp.Transparency + 1/25
944
swait()
945
end
946
end)
947
local S = Instance.new("Sound",c.HumanoidRootPart)S.SoundId = "rbxassetid://622100551" S.Volume = 10 S:Play()
948
Sped = 150
949
end
950
end)
951
952
mouse.KeyUp:connect(function(key)
953
if key == "q" then
954
attack = false
955
end
956
end)
957
958
local P = Instance.new("Part",game.Workspace.CurrentCamera)P.CanCollide = true P.Anchored = true P.Size = Vector3.new(15,1,15)
959
P.CFrame = CFrame.new(c.HumanoidRootPart.Position)*CFrame.new(0,-3.5,0)P.Transparency = 0 P.Name = "FlightPart"
960
P.BrickColor = BrickColor.new("Dark green") P.TopSurface = "Smooth" P.Material = "Grass"
961
spawn(function()
962
while true do
963
P.CFrame = CFrame.new(c.HumanoidRootPart.Position.X,-0.6,c.HumanoidRootPart.Position.Z)
964
swait()
965
end
966
end)
967
968
anim.Parent = nil
969
sine = 0
970
971
game:GetService("RunService").RenderStepped:connect(function()
972
if attack == false then
973
thing = (c.HumanoidRootPart.Velocity * Vector3.new(1, 0, 1)).magnitude
974
game.Workspace.CurrentCamera.FieldOfView = 70+thing/100
975
if c.HumanoidRootPart.Velocity.Y > 1 then sine = sine + 1
976
lerpz(RJ, "C0", RJC0 * cf(0, 0, 0) * ang(rd(sine*thing*0.75), rd(0), rd(0)), 1)
977
lerpz(N, "C0", NC0 * cf(0, 0, 0) * ang(rd(60), rd(0), rd(0)), 1)
978
lerpz(RS, "C0", RSC0 * cf(0, 0, 0) * ang(rd(15), rd(25), rd(25)), 1)
979
lerpz(RS, "C1", RSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
980
lerpz(LS, "C0", LSC0 * cf(0, 0, 0) * ang(rd(15), rd(-25), rd(-25)), 1)
981
lerpz(LS, "C1", LSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
982
lerpz(RH, "C0", RHC0 * cf(0.5, 1.5, 0) * ang(rd(0), rd(0), rd(0)), 1)
983
lerpz(RH, "C1", RHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
984
lerpz(LH, "C0", LHC0 * cf(-0.5, 1.5, 0) * ang(rd(0), rd(0), rd(0)), 1)
985
lerpz(LH, "C1", LHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
986
elseif (c.HumanoidRootPart.Velocity * Vector3.new(1, 0, 1)).magnitude > 2 then
987
sine = sine + 1 Sped = Sped + 0.1
988
if thing <= 200 then
989
if S2.PlaybackSpeed >= 1 then
990
S2.PlaybackSpeed = 1
991
else 
992
S2.PlaybackSpeed = thing/80
993
end
994
c.Humanoid.WalkSpeed = 16+(thing/1.5)+Sped
995
S2.Volume = thing/20
996
end
997
if thing <= 200 then
998
c.Humanoid.WalkSpeed = 16+(thing/1.5)+Sped
999
S2.Volume = thing/20
1000
else
1001
c.Humanoid.WalkSpeed = 16+(thing/1.5)+Sped
1002
end
1003
if thing <= 100 then
1004
for i,v in pairs(c:children()) do
1005
if v.ClassName == "Part" then
1006
for i,v2 in pairs(v:children()) do
1007
if v2.ClassName == "Trail" then
1008
v2.Enabled = false
1009
v2.LightEmission = 1
1010
end
1011
end
1012
end
1013
end
1014
else
1015
for i,v in pairs(c:children()) do
1016
if v.ClassName == "Part" then
1017
for i,v2 in pairs(v:children()) do
1018
if v2.ClassName == "Trail" then
1019
v2.Lifetime = 2
1020
v2.Enabled = true
1021
end
1022
end
1023
end
1024
end
1025
end
1026
lerpz(RJ, "C0", RJC0 * cf(0, 0, 0) * ang(rd(thing/7), rd(0), rd(0)), 1)
1027
lerpz(N, "C0", NC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
1028
lerpz(RS, "C0", RSC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(-thing/1.5)), 1)
1029
lerpz(RS, "C1", RSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
1030
lerpz(LS, "C0", LSC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(thing/1.5)), 1)
1031
lerpz(LS, "C1", LSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
1032
lerpz(RH, "C0", RHC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(math.cos(sine/2))*thing/1.25), 1)
1033
lerpz(RH, "C1", RHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
1034
lerpz(LH, "C0", LHC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(math.cos(sine/2))*thing/1.25), 1)
1035
lerpz(LH, "C1", LHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 1)
1036
else c.Humanoid.WalkSpeed = 16 Sped = 0 sine = sine + 1 S2.Volume = 0 S2.PlaybackSpeed = 0
1037
lerpz(RJ, "C0", RJC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.5)
1038
lerpz(N, "C0", NC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.5)
1039
lerpz(RS, "C0", RSC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(math.cos(sine/24)*4)), 0.5)
1040
lerpz(RS, "C1", RSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.5)
1041
lerpz(LS, "C0", LSC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(math.cos(sine/24)*4)), 0.5)
1042
lerpz(LS, "C1", LSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.5)
1043
lerpz(RH, "C0", RHC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.5)
1044
lerpz(RH, "C1", RHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.5)
1045
lerpz(LH, "C0", LHC0 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.5)
1046
lerpz(LH, "C1", LHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.5)
1047
end
1048
for i,v in pairs (c:children()) do
1049
if v.ClassName == "Accessory" then
1050
for i,v2 in pairs (v:children()) do
1051
if v2.ClassName == "Part" then
1052
v2.Anchored = false
1053
end
1054
end
1055
end
1056
for i,v in pairs (c:children()) do
1057
if v.ClassName == "Part" then
1058
v.Anchored = false
1059
end
1060
end
1061
end
1062
end
1063
end)