SHOW:
|
|
- or go back to the newest paste.
| 1 | if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
| |
| 2 | local Player,game,owner = owner,game | |
| 3 | local RealPlayer = Player | |
| 4 | do | |
| 5 | print("FE Compatibility code by Mokiros")
| |
| 6 | local rp = RealPlayer | |
| 7 | script.Parent = rp.Character | |
| 8 | ||
| 9 | --RemoteEvent for communicating | |
| 10 | local Event = Instance.new("RemoteEvent")
| |
| 11 | Event.Name = "UserInput_Event" | |
| 12 | ||
| 13 | --Fake event to make stuff like Mouse.KeyDown work | |
| 14 | local function fakeEvent() | |
| 15 | local t = {_fakeEvent=true,Functions={},Connect=function(self,f)table.insert(self.Functions,f) end}
| |
| 16 | t.connect = t.Connect | |
| 17 | return t | |
| 18 | end | |
| 19 | ||
| 20 | --Creating fake input objects with fake variables | |
| 21 | local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
| |
| 22 | local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
| |
| 23 | local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
| |
| 24 | CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
| |
| 25 | end} | |
| 26 | --Merged 2 functions into one by checking amount of arguments | |
| 27 | CAS.UnbindAction = CAS.BindAction | |
| 28 | ||
| 29 | --This function will trigger the events that have been :Connect()'ed | |
| 30 | local function te(self,ev,...) | |
| 31 | local t = m[ev] | |
| 32 | if t and t._fakeEvent then | |
| 33 | for _,f in pairs(t.Functions) do | |
| 34 | f(...) | |
| 35 | end | |
| 36 | end | |
| 37 | end | |
| 38 | m.TrigEvent = te | |
| 39 | UIS.TrigEvent = te | |
| 40 | ||
| 41 | Event.OnServerEvent:Connect(function(plr,io) | |
| 42 | if plr~=rp then return end | |
| 43 | m.Target = io.Target | |
| 44 | m.Hit = io.Hit | |
| 45 | if not io.isMouse then | |
| 46 | local b = io.UserInputState == Enum.UserInputState.Begin | |
| 47 | if io.UserInputType == Enum.UserInputType.MouseButton1 then | |
| 48 | return m:TrigEvent(b and "Button1Down" or "Button1Up") | |
| 49 | end | |
| 50 | for _,t in pairs(CAS.Actions) do | |
| 51 | for _,k in pairs(t.Keys) do | |
| 52 | if k==io.KeyCode then | |
| 53 | t.Function(t.Name,io.UserInputState,io) | |
| 54 | end | |
| 55 | end | |
| 56 | end | |
| 57 | m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower()) | |
| 58 | UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false) | |
| 59 | end | |
| 60 | end) | |
| 61 | Event.Parent = NLS([==[ | |
| 62 | local Player = game:GetService("Players").LocalPlayer
| |
| 63 | local Event = script:WaitForChild("UserInput_Event")
| |
| 64 | ||
| 65 | local Mouse = Player:GetMouse() | |
| 66 | local UIS = game:GetService("UserInputService")
| |
| 67 | local input = function(io,a) | |
| 68 | if a then return end | |
| 69 | --Since InputObject is a client-side instance, we create and pass table instead | |
| 70 | Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
| |
| 71 | end | |
| 72 | UIS.InputBegan:Connect(input) | |
| 73 | UIS.InputEnded:Connect(input) | |
| 74 | ||
| 75 | local h,t | |
| 76 | --Give the server mouse data 30 times every second, but only if the values changed | |
| 77 | --If player is not moving their mouse, client won't fire events | |
| 78 | while wait(1/30) do | |
| 79 | if h~=Mouse.Hit or t~=Mouse.Target then | |
| 80 | h,t=Mouse.Hit,Mouse.Target | |
| 81 | Event:FireServer({isMouse=true,Target=t,Hit=h})
| |
| 82 | end | |
| 83 | end]==],Player.Character) | |
| 84 | ||
| 85 | ----Sandboxed game object that allows the usage of client-side methods and services | |
| 86 | --Real game object | |
| 87 | local _rg = game | |
| 88 | ||
| 89 | --Metatable for fake service | |
| 90 | local fsmt = {
| |
| 91 | __index = function(self,k) | |
| 92 | local s = rawget(self,"_RealService") | |
| 93 | if s then return s[k] end | |
| 94 | end, | |
| 95 | __newindex = function(self,k,v) | |
| 96 | local s = rawget(self,"_RealService") | |
| 97 | if s then s[k]=v end | |
| 98 | end, | |
| 99 | __call = function(self,...) | |
| 100 | local s = rawget(self,"_RealService") | |
| 101 | if s then return s(...) end | |
| 102 | end | |
| 103 | } | |
| 104 | local function FakeService(t,RealService) | |
| 105 | t._RealService = typeof(RealService)=="string" and _rg:GetService(RealService) or RealService | |
| 106 | return setmetatable(t,fsmt) | |
| 107 | end | |
| 108 | ||
| 109 | --Fake game object | |
| 110 | local g = {
| |
| 111 | GetService = function(self,s) | |
| 112 | return self[s] | |
| 113 | end, | |
| 114 | Players = FakeService({
| |
| 115 | LocalPlayer = FakeService({GetMouse=function(self)return m end},Player)
| |
| 116 | },"Players"), | |
| 117 | UserInputService = FakeService(UIS,"UserInputService"), | |
| 118 | ContextActionService = FakeService(CAS,"ContextActionService"), | |
| 119 | } | |
| 120 | rawset(g.Players,"localPlayer",g.Players.LocalPlayer) | |
| 121 | g.service = g.GetService | |
| 122 | ||
| 123 | g.RunService = FakeService({
| |
| 124 | RenderStepped = _rg:GetService("RunService").Heartbeat,
| |
| 125 | BindToRenderStep = function(self,name,_,fun) | |
| 126 | self._btrs[name] = self.Heartbeat:Connect(fun) | |
| 127 | end, | |
| 128 | UnbindFromRenderStep = function(self,name) | |
| 129 | self._btrs[name]:Disconnect() | |
| 130 | end, | |
| 131 | },"RunService") | |
| 132 | ||
| 133 | setmetatable(g,{
| |
| 134 | __index=function(self,s) | |
| 135 | return _rg:GetService(s) or typeof(_rg[s])=="function" | |
| 136 | and function(_,...)return _rg[s](_rg,...)end or _rg[s] | |
| 137 | end, | |
| 138 | __newindex = fsmt.__newindex, | |
| 139 | __call = fsmt.__call | |
| 140 | }) | |
| 141 | --Changing owner to fake player object to support owner:GetMouse() | |
| 142 | game,owner = g,g.Players.LocalPlayer | |
| 143 | end | |
| 144 | ||
| 145 | ||
| 146 | ||
| 147 | ||
| 148 | script.Parent=nil | |
| 149 | --- shortcuts | |
| 150 | v3 = Vector3.new | |
| 151 | cn = CFrame.new | |
| 152 | ca2 = CFrame.Angles | |
| 153 | mf = math.floor | |
| 154 | mran = math.random | |
| 155 | mrad = math.rad | |
| 156 | mdeg = math.deg | |
| 157 | ca = function(x,y,z) return ca2(mrad(x),mrad(y),mrad(z)) end | |
| 158 | mran2 = function(a,b) return mran(a*1000,b*1000)/1000 end | |
| 159 | ud=UDim2.new | |
| 160 | bn = BrickColor.new | |
| 161 | c3 = Color3.new | |
| 162 | ----- | |
| 163 | --Player='Diitto' | |
| 164 | Players=game:service'Players' | |
| 165 | Player=Players.LocalPlayer --[Herobrinerte] | |
| 166 | PChar=Player.Character | |
| 167 | ||
| 168 | as,so={},{'metal','Block','Slash','Slash2','Hit','Kick'}
| |
| 169 | as.corner='11294911' | |
| 170 | as.cone='1033714' | |
| 171 | as.ring="3270017" | |
| 172 | as.Chakram='47260990' | |
| 173 | as.ring2='18430887' | |
| 174 | as.blast='20329976' | |
| 175 | as.missile='10207677' | |
| 176 | as.fire='2693346' | |
| 177 | as.boom='3264793' | |
| 178 | as.slash='10209645' | |
| 179 | as.abscond='2767090' | |
| 180 | as.firelaser='13775494' | |
| 181 | as.diamond='9756362' | |
| 182 | as.metal='rbxasset://sounds\\unsheath.wav' | |
| 183 | as.Block = 'rbxasset://sounds\\metal.ogg' | |
| 184 | as.Slash = '10209645' | |
| 185 | as.Slash2 = '46760716' | |
| 186 | as.Hit='10209583' | |
| 187 | as.Kick='46153268' | |
| 188 | as.cast='2101137' | |
| 189 | as.rockhead= '21629626' | |
| 190 | as.rockheadt='21629620' | |
| 191 | ||
| 192 | ||
| 193 | for i,v in pairs(as) do | |
| 194 | if type(tonumber(v:sub(1,3)))=="number" then | |
| 195 | as[i]="http://www.roblox.com/asset/?id="..v | |
| 196 | end | |
| 197 | end | |
| 198 | ||
| 199 | LastMade=nil | |
| 200 | iNew=function(tab) | |
| 201 | local v=Instance.new(tab[1]) | |
| 202 | for Ind,Val in pairs(tab) do | |
| 203 | if Ind~=1 and Ind~=2 then | |
| 204 | v[Ind] = Val | |
| 205 | end | |
| 206 | end | |
| 207 | v.Parent=tab[2]==0 and LastMade or tab[2] | |
| 208 | LastMade=v | |
| 209 | return v | |
| 210 | end | |
| 211 | iPart=function(tab) | |
| 212 | local v=Instance.new(tab.type or 'Part') | |
| 213 | if tab.type~='CornerWedgePart' then v.formFactor='Custom' end | |
| 214 | v.TopSurface=0 v.BottomSurface=0 | |
| 215 | if tab.sc then | |
| 216 | v.Size=v3(tab[2]*tab.sc,tab[3]*tab.sc,tab[4]*tab.sc) | |
| 217 | else | |
| 218 | v.Size=v3(tab[2],tab[3],tab[4]) | |
| 219 | end | |
| 220 | if tab.co then v.BrickColor=bn(tab.co) end | |
| 221 | if tab.tr then v.Transparency=tab.tr end | |
| 222 | if tab.rf then v.Reflectance=tab.rf end | |
| 223 | if tab.can then v.CanCollide=tab.can end | |
| 224 | if tab.cf then v.CFrame=tab.cf end | |
| 225 | if tab.an then v.Anchored=tab.an end | |
| 226 | if tab.na then v.Name=tab.na end | |
| 227 | if tab.ma then v.Material=tab.ma end | |
| 228 | v.Parent=tab[1] | |
| 229 | v:BreakJoints() | |
| 230 | LastMade=v | |
| 231 | return v | |
| 232 | end | |
| 233 | function getoutline(x,z,i) | |
| 234 | return math.sqrt(x^2+z^2)+(i or 0.05),mdeg(math.atan2(x,z)) | |
| 235 | end | |
| 236 | function v32(cf) | |
| 237 | local x,y,z=cf:toEulerAnglesXYZ() | |
| 238 | return v3(mdeg(x),mdeg(y),mdeg(z)) | |
| 239 | end | |
| 240 | WeldLib={}
| |
| 241 | function GetWeld(weld,CO) | |
| 242 | if not WeldLib[weld] then | |
| 243 | local x0,y0,z0=weld.C0:toEulerAnglesXYZ() | |
| 244 | local x1,y1,z1=weld.C1:toEulerAnglesXYZ() | |
| 245 | WeldLib[weld]={[0]=v3(mdeg(x0),mdeg(y0),mdeg(z0)),[1]=v3(mdeg(x1),mdeg(y1),mdeg(z1))}
| |
| 246 | end | |
| 247 | return weld['C'..CO].p,WeldLib[weld][CO] | |
| 248 | end | |
| 249 | function ClearWeld(weld) | |
| 250 | if WeldLib[weld] then WeldLib[weld]=nil end | |
| 251 | end | |
| 252 | function TweenNum(i,loops,i1,i2,smooth) | |
| 253 | smooth = smooth or 1 | |
| 254 | local perc | |
| 255 | if smooth == 1 then perc = math.sin((math.pi/2)/loops*i) else perc = i/loops end | |
| 256 | local ton | |
| 257 | if i1 > i2 then | |
| 258 | ton = -math.abs(i1 - i2) *perc | |
| 259 | else | |
| 260 | ton = math.abs(i1 - i2) *perc | |
| 261 | end | |
| 262 | return i1+ton | |
| 263 | end | |
| 264 | function TweenV3(i,loops,v1,v2,smooth) | |
| 265 | smooth = smooth or 1 | |
| 266 | local perc | |
| 267 | if smooth == 1 then perc = math.sin((math.pi/2)/loops*i) else perc = i/loops end | |
| 268 | local tox2,toy2,toz2 = 0,0,0 | |
| 269 | if v1.x > v2.x then | |
| 270 | tox2 = -math.abs(v1.x - v2.x) *perc | |
| 271 | else | |
| 272 | tox2 = math.abs(v1.x - v2.x) *perc | |
| 273 | end | |
| 274 | if v1.y > v2.y then | |
| 275 | toy2 = -math.abs(v1.y - v2.y) *perc | |
| 276 | else | |
| 277 | toy2 = math.abs(v1.y - v2.y) *perc | |
| 278 | end | |
| 279 | if v1.z > v2.z then | |
| 280 | toz2 = -math.abs(v1.z - v2.z) *perc | |
| 281 | else | |
| 282 | toz2 = math.abs(v1.z - v2.z) *perc | |
| 283 | end | |
| 284 | return v3(v1.x + tox2,v1.y + toy2,v1.z + toz2) | |
| 285 | end | |
| 286 | function TweenCF(i,loops,origpos,origangle,nextpos,nextangle,smooth) | |
| 287 | smooth = smooth or 1 | |
| 288 | local perc | |
| 289 | if smooth == 1 then perc = math.sin((math.pi/2)/loops*i) else perc = i/loops end | |
| 290 | local tox,toy,toz = 0,0,0 | |
| 291 | if origangle.x > nextangle.x then tox = -math.abs(origangle.x - nextangle.x) *perc | |
| 292 | else tox = math.abs(origangle.x - nextangle.x) *perc end | |
| 293 | if origangle.y > nextangle.y then toy = -math.abs(origangle.y - nextangle.y) *perc | |
| 294 | else toy = math.abs(origangle.y - nextangle.y) *perc end | |
| 295 | if origangle.z > nextangle.z then toz = -math.abs(origangle.z - nextangle.z) *perc | |
| 296 | else toz = math.abs(origangle.z - nextangle.z) *perc end | |
| 297 | local tox2,toy2,toz2 = 0,0,0 | |
| 298 | if origpos.x > nextpos.x then | |
| 299 | tox2 = -math.abs(origpos.x - nextpos.x) *perc | |
| 300 | else tox2 = math.abs(origpos.x - nextpos.x) *perc end | |
| 301 | if origpos.y > nextpos.y then | |
| 302 | toy2 = -math.abs(origpos.y - nextpos.y) *perc | |
| 303 | else toy2 = math.abs(origpos.y - nextpos.y) *perc end | |
| 304 | if origpos.z > nextpos.z then | |
| 305 | toz2 = -math.abs(origpos.z - nextpos.z) *perc | |
| 306 | else toz2 = math.abs(origpos.z - nextpos.z) *perc end | |
| 307 | return cn(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2)*ca(origangle.x + tox,origangle.y + toy,origangle.z + toz) | |
| 308 | end | |
| 309 | function SetWeld(weld,CO,i, loops, origpos,origangle, nextpos,nextangle,smooth) | |
| 310 | loops=math.floor(loops) | |
| 311 | smooth = smooth or 1 | |
| 312 | if not WeldLib[weld] then | |
| 313 | local x0,y0,z0=weld.C0:toEulerAnglesXYZ() | |
| 314 | local x1,y1,z1=weld.C1:toEulerAnglesXYZ() | |
| 315 | WeldLib[weld]={[0]=v3(mdeg(x0),mdeg(y0),mdeg(z0)),[1]=v3(mdeg(x1),mdeg(y1),mdeg(z1))}
| |
| 316 | end | |
| 317 | local perc =smooth==1 and math.sin((math.pi/2)/loops*i) or i/loops | |
| 318 | --print(weld.Part1) | |
| 319 | local tox,toy,toz = 0,0,0 | |
| 320 | tox = origangle.x > nextangle.x and -math.abs(origangle.x - nextangle.x) *perc or math.abs(origangle.x - nextangle.x) *perc | |
| 321 | toy = origangle.y > nextangle.y and -math.abs(origangle.y - nextangle.y) *perc or math.abs(origangle.y - nextangle.y) *perc | |
| 322 | toz = origangle.z > nextangle.z and -math.abs(origangle.z - nextangle.z) *perc or math.abs(origangle.z - nextangle.z) *perc | |
| 323 | local tox2,toy2,toz2 = 0,0,0 | |
| 324 | tox2= origpos.x > nextpos.x and -math.abs(origpos.x - nextpos.x) *perc or math.abs(origpos.x - nextpos.x) *perc | |
| 325 | toy2= origpos.y > nextpos.y and -math.abs(origpos.y - nextpos.y) *perc or math.abs(origpos.y - nextpos.y) *perc | |
| 326 | toz2= origpos.z > nextpos.z and -math.abs(origpos.z - nextpos.z) *perc or math.abs(origpos.z - nextpos.z) *perc | |
| 327 | WeldLib[weld][CO] = v3(origangle.x + tox,origangle.y + toy,origangle.z + toz) | |
| 328 | weld['C'..CO] = cn(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2)*ca(origangle.x + tox,origangle.y + toy,origangle.z + toz) | |
| 329 | end | |
| 330 | function se(Key,Text) | |
| 331 | local Values = {}
| |
| 332 | for value in (Text..Key):gmatch("(.-)"..Key) do
| |
| 333 | table.insert(Values,value) | |
| 334 | end | |
| 335 | local Values2={}
| |
| 336 | for i,v in pairs(Values) do Values2[i]=Values[i]:lower() end | |
| 337 | return Values,Values2 | |
| 338 | end | |
| 339 | findplayer=function(nn) | |
| 340 | if not nn then return nil end | |
| 341 | local found | |
| 342 | for i,v in pairs(Players:GetPlayers()) do | |
| 343 | if string.find(v.Name:lower(),nn:lower()) and not found then found=v end | |
| 344 | end | |
| 345 | return found | |
| 346 | end | |
| 347 | LoopFunctions={}
| |
| 348 | iLoopFunctions=-9000 | |
| 349 | function DoLoop(times,func) | |
| 350 | iLoopFunctions=iLoopFunctions+1 | |
| 351 | LoopFunctions[tonumber(iLoopFunctions)]={times,0,func}
| |
| 352 | end | |
| 353 | function MeshEffect(times,cf1,cf2,scale1,scale2,tr1,tr2,col,type) | |
| 354 | local cf2=cf2 or cf1 | |
| 355 | local v=iPart{Char,0.2,0.2,0.2,co=col,cf=cf1,na='Mesh',an=true,ca=false,tr=tr1}
| |
| 356 | local mesh=iNew{'SpecialMesh',v,Scale=scale1}
| |
| 357 | if type=='Brick' or type=='Sphere' then | |
| 358 | mesh.MeshType=type | |
| 359 | else | |
| 360 | mesh.MeshId=type | |
| 361 | end | |
| 362 | local x1,y1,z1 = cf1:toEulerAnglesXYZ() | |
| 363 | local x2,y2,z2 = cf2:toEulerAnglesXYZ() | |
| 364 | local count=0 | |
| 365 | DoLoop(times,function(i) count=count+1 | |
| 366 | mesh.Scale=TweenV3(count,times,scale1,scale2,1)*((type=='Brick' or type=='Sphere') and 5 or 1) | |
| 367 | v.Transparency=TweenNum(count,times,tr1,tr2,1) | |
| 368 | v.CFrame=TweenCF(count,times,cf1.p,v3(mdeg(x1),mdeg(y1),mdeg(z1)),cf2.p,v3(mdeg(x2),mdeg(y2),mdeg(z2)),1) | |
| 369 | if i==1 then v:Remove() end end) | |
| 370 | end | |
| 371 | Dmgv={8,16}
| |
| 372 | HitDebounce={}
| |
| 373 | Damage=function(Hum,Mult,Sound) | |
| 374 | if not Hum or Hum.Parent==Char then return end | |
| 375 | if not Hum.Parent:findFirstChild'Torso' then return end | |
| 376 | local HName=Hum.Parent.Name | |
| 377 | if HitDebounce[HName] and HitDebounce[HName]>tick() then return end | |
| 378 | HitDebounce[HName]=tick()+0.2 | |
| 379 | local Mult=Mult or 1 | |
| 380 | local Dealt=mran(Dmgv[1],Dmgv[2])*Mult | |
| 381 | local col='' | |
| 382 | if Hum.Parent:findFirstChild'Block' and Hum.Parent.Block.Value>0 then | |
| 383 | Hum.Parent.Block.Value=Hum.Parent.Block.Value-1 | |
| 384 | col='Bright blue' | |
| 385 | else | |
| 386 | Hum.Health=Hum.Health-Dealt | |
| 387 | col='Bright red' | |
| 388 | end | |
| 389 | if Sound then so[col=='Bright blue' and 'Block' or 'Hit']:Play() end | |
| 390 | local DoH=iNew{'Model',Char,Name=col=='Bright blue' and 'Block' or Dealt}
| |
| 391 | iNew{'Humanoid',DoH,MaxHealth=1/0,Health=1/0,Name=''}
| |
| 392 | local Doh=iPart{DoH,0.6,0.2,0.6,co=col,an=true} Doh.Name='Head' iNew{'CylinderMesh',Doh}
| |
| 393 | local dofs=Hum.Parent.Torso.CFrame*cn(mran2(-1.5,1.5),2.5,mran2(-1,1)) Doh.CFrame=dofs | |
| 394 | DoLoop(40,function(i) Doh.CFrame=dofs*cn(0,i*2,0) Doh.Transparency=i-0.5 if i==1 then DoH:Remove() end end) | |
| 395 | end | |
| 396 | AOEFind = function(pos,ra,f,f2) -- range get | |
| 397 | local p0,p1=pos-v3(ra/2,ra/2,ra/2),pos+v3(ra/2,ra/2,ra/2) | |
| 398 | pcall(function() | |
| 399 | for i,v in pairs(workspace:FindPartsInRegion3(Region3.new(p0,p1),nil,100)) do | |
| 400 | local Hum=v.Parent:findFirstChild'Humanoid' | |
| 401 | if v.Name=='Torso' and Hum and Hum.Health>0 and v.Parent~=Char then | |
| 402 | pcall(function() f(Hum,v) end) | |
| 403 | elseif f2 and not Hum then | |
| 404 | pcall(function() f2(v) end) | |
| 405 | end | |
| 406 | end | |
| 407 | end) | |
| 408 | end | |
| 409 | function FindSurface(part, position) | |
| 410 | local obj = part.CFrame:pointToObjectSpace(position) | |
| 411 | local siz = part.Size/2 | |
| 412 | for i,v in pairs(Enum.NormalId:GetEnumItems()) do | |
| 413 | local vec = Vector3.FromNormalId(v) | |
| 414 | local wvec = part.CFrame:vectorToWorldSpace(vec) | |
| 415 | local vz = (obj)/(siz*vec) | |
| 416 | if (math.abs(vz.X-1) < 0.01 or math.abs(vz.Y-1) < 0.01 or math.abs(vz.Z-1) < 0.01) then | |
| 417 | return wvec,vec | |
| 418 | end | |
| 419 | end | |
| 420 | if part.className == "WedgePart" then | |
| 421 | return part.CFrame:vectorToWorldSpace(Vector3.new(0,0.707,-0.707)), Vector3.new(0,0.707,-0.707) | |
| 422 | end | |
| 423 | end | |
| 424 | function FaceBG(pos) | |
| 425 | BG.maxTorque=v3(1,1,1)/0 | |
| 426 | BG.cframe=cn(Torso.Position,v3(pos.x,Torso.Position.y,pos.z))*cn(0,0,-1) | |
| 427 | end | |
| 428 | ray = function(Pos, Dir,tab,length) -- ray cast | |
| 429 | return workspace:FindPartOnRay(Ray.new(Pos, Dir.unit *(length or 999)),tab) | |
| 430 | end | |
| 431 | function Projectile(ofs,speed,part,adj,fhit,fnohit) | |
| 432 | part.CFrame=ofs*adj | |
| 433 | local stop=false | |
| 434 | DoLoop(50,function(x) | |
| 435 | local i=x | |
| 436 | if not stop then | |
| 437 | local hit,pos=ray(ofs.p,ofs.p-ofs*cn(0,0,-1).p,Char,speed+1) | |
| 438 | if hit then | |
| 439 | --Hit | |
| 440 | if fhit then i=1 stop=true | |
| 441 | ---- | |
| 442 | local cof=FindSurface(hit,pos) | |
| 443 | --iPart{workspace,2,2,0.2,cf=cn(pos,pos+cof),an=true,co='Black'}
| |
| 444 | ---- | |
| 445 | local x,y,z=ofs:toEulerAnglesXYZ() | |
| 446 | ofs=cn(pos)*ca(mdeg(x),mdeg(y),mdeg(z))*cn(0,0,-part.Size.y/2) | |
| 447 | part.CFrame=ofs*adj | |
| 448 | fhit(hit,pos) end | |
| 449 | else | |
| 450 | ofs=ofs*cn(0,0,speed) | |
| 451 | part.CFrame=ofs*adj | |
| 452 | end | |
| 453 | if i==1 then | |
| 454 | if fnohit then fnohit(ofs.p) else part:Remove() end | |
| 455 | end | |
| 456 | end | |
| 457 | end) | |
| 458 | end | |
| 459 | ||
| 460 | CC={'','Bright yellow','Flame reddish orange'}
| |
| 461 | Scale=5 | |
| 462 | Mat='Marble' | |
| 463 | ||
| 464 | SpawnPoint=PChar.Torso.CFrame*cn(0,1+Scale*3,-20-Scale*1.5) | |
| 465 | name='Brock' | |
| 466 | pcall(function() _G.OldMod00:Remove() end) | |
| 467 | ||
| 468 | --------------- | |
| 469 | UNDYING=function() | |
| 470 | pcall(function() fUNDYING:disconnect() end) | |
| 471 | pcall(function() local hum=Grabbing.Part1.Parent.Humanoid Grabbing:Remove() Grabbing=nil hum.PlatformStand=false end) | |
| 472 | Torso.Anchored=true Torso.Transparency=1 Torso.CanCollide=false | |
| 473 | Stand:Remove() Head:Remove() | |
| 474 | local RespawnPos=cn(Torso.CFrame.p+v3(0,Scale*5,0))*ca(0,mran(-360,360),0) | |
| 475 | wait(4) | |
| 476 | Anim='Reviving' | |
| 477 | local oldChar=Char | |
| 478 | local oldRootLimbs=RootLimbs | |
| 479 | for i,v in pairs(oldRootLimbs) do v.Anchored=true end | |
| 480 | fMarble(Char,function(v) v.Anchored=true end) | |
| 481 | MakeAI(RespawnPos) Anim='Reviving' | |
| 482 | fMarble(Char,function(v) v.Transparency=1 end) | |
| 483 | for i,v in pairs(RootLimbs) do v.Transparency=1 end | |
| 484 | wait(0.1) Torso.Anchored=true | |
| 485 | local Reconstruct={}
| |
| 486 | fMarble(oldChar,function(v) | |
| 487 | local x1,y1,z1=v.CFrame:toEulerAnglesXYZ() | |
| 488 | local x2,y2,z2=Char[v.Parent.Name][v.Name].CFrame:toEulerAnglesXYZ() | |
| 489 | Reconstruct[#Reconstruct+1]={v,Char[v.Parent.Name][v.Name],v.Position,v3(mdeg(x1),mdeg(y1),mdeg(z1)),v3(mdeg(x2),mdeg(y2),mdeg(z2))} end)
| |
| 490 | for i,v in pairs(oldRootLimbs) do | |
| 491 | local x1,y1,z1=v.CFrame:toEulerAnglesXYZ() | |
| 492 | local x2,y2,z2=Char[v.Name].CFrame:toEulerAnglesXYZ() | |
| 493 | Reconstruct[#Reconstruct+1]={v,Char[v.Name],v.Position,v3(mdeg(x1),mdeg(y1),mdeg(z1)),v3(mdeg(x2),mdeg(y2),mdeg(z2))} end
| |
| 494 | local tweens=100 | |
| 495 | for tween=1,tweens do | |
| 496 | for i,v in pairs(Reconstruct) do v[1].CFrame=TweenCF(tween,tweens,v[3],v[4],v[2].Position,v[5],1)*ca(360*(tween/tweens),720*(tween/tweens),0) end | |
| 497 | wait() | |
| 498 | end | |
| 499 | oldChar:Remove() | |
| 500 | fMarble(Char,function(v) v.Transparency=0 end) | |
| 501 | for i,v in pairs(RootLimbs) do v.Transparency=0 end | |
| 502 | Torso.Anchored=false wait() | |
| 503 | BG.maxTorque=v3(1,1,1)/0 BG.cframe=Torso.CFrame | |
| 504 | ReturnAnim() | |
| 505 | wait(2) | |
| 506 | BG.maxTorque=nov3 | |
| 507 | Anim,ArmAnim,LegAnim='None','None','None' | |
| 508 | end | |
| 509 | ------ | |
| 510 | ||
| 511 | function MakeAI(SpawnPoint2) | |
| 512 | Char=iNew{'Model',workspace,Name=name,archivable=false} _G.OldMod00=Char
| |
| 513 | Torso=iPart{Char,2,2,1,sc=Scale,co=CC[1],cf=SpawnPoint2,na='Torso'}
| |
| 514 | pTorso=iPart{Char,2,2,1,sc=Scale,co=CC[1],cf=SpawnPoint2,na='pTorso'}
| |
| 515 | Head=iPart{Char,1,1,1,sc=Scale,co=CC[1],na='Head'}
| |
| 516 | pHead=iPart{Char,1,1,1,sc=Scale,co=CC[1],na='pHead'} iNew{'SpecialMesh',pHead,Scale=v3(1,1,1)*Scale/1.4,VertexColor=v3(1,1,1)/1.65,MeshId=as.rockhead,TextureId=as.rockheadt}
| |
| 517 | Stand=iPart{Char,1.5,2.9,1.1,sc=Scale,co=CC[1],na='Stand'}
| |
| 518 | ||
| 519 | for i,n in pairs(so) do | |
| 520 | local v=iNew{'Sound',Torso,Volume=1,Pitch=1,Looped=false,Name=v,SoundId=as[n]}
| |
| 521 | so[n]=v | |
| 522 | end | |
| 523 | ||
| 524 | ||
| 525 | LSho=iPart{Char,1,1.5,1,sc=Scale,co=CC[1],na='LSho'}
| |
| 526 | LArm=iPart{Char,1,1.5,1,sc=Scale,co=CC[1],na='LArm'}
| |
| 527 | ||
| 528 | RSho=iPart{Char,1,1.5,1,sc=Scale,co=CC[1],na='RSho'}
| |
| 529 | RArm=iPart{Char,1,1.5,1,sc=Scale,co=CC[1],na='RArm'}
| |
| 530 | ||
| 531 | LThi=iPart{Char,1,1.5,1,sc=Scale,co=CC[1],na='LThi'}
| |
| 532 | LLeg=iPart{Char,1,1.5,1,sc=Scale,co=CC[1],na='LLeg'}
| |
| 533 | ||
| 534 | RThi=iPart{Char,1,1.5,1,sc=Scale,co=CC[1],na='RThi'}
| |
| 535 | RLeg=iPart{Char,1,1.5,1,sc=Scale,co=CC[1],na='RLeg'}
| |
| 536 | ||
| 537 | ||
| 538 | ||
| 539 | nov3=v3(0,0,0) | |
| 540 | Marble={}
| |
| 541 | MarbleSpeed=0.2 | |
| 542 | MarbleMax=12 | |
| 543 | for i,v in pairs({pTorso,LSho,RSho,LArm,RArm,LThi,RThi,LLeg,RLeg}) do
| |
| 544 | v.Material=Mat | |
| 545 | local VS=v.Size | |
| 546 | local va=1.2 | |
| 547 | --v.Size=v.Size/1.5 | |
| 548 | local vv=v:Clone() | |
| 549 | for x=-1,1,2 do | |
| 550 | for y=-1,1,2 do | |
| 551 | for z=-1,1,2 do | |
| 552 | local marb=vv:Clone() marb.Size=VS/mran2(1.8,2.2) marb.Parent=v marb.Name=x..y..z | |
| 553 | local wmarb=iNew{'Weld',marb,Part0=v,Part1=marb,C0=cn(VS.x/4*x/va,VS.y/4*y,VS.z/4*z/va)*ca(mran(-MarbleMax,MarbleMax),mran(-MarbleMax,MarbleMax),mran(-MarbleMax,MarbleMax))}
| |
| 554 | Marble[#Marble+1]={wmarb,mran(-1,1),mran(-1,1),mran(-1,1)}
| |
| 555 | end end end | |
| 556 | iNew{'BlockMesh',v,Scale=v3(1,1,1)/1.5}
| |
| 557 | v.Transparency=0 --.995 | |
| 558 | end | |
| 559 | ||
| 560 | for i,v in pairs(Char:children()) do if v:IsA'BasePart' and v.Name~='Torso' then v.CFrame=Torso.CFrame end end | |
| 561 | ||
| 562 | Head.Transparency=0.99 | |
| 563 | Head.CanCollide=false | |
| 564 | Neck=iNew{'Weld',Torso,Part0=Torso,Part1=Head,C0=cn(0,0,0)}
| |
| 565 | pNeck=iNew{'Weld',Torso,Part0=pTorso,Part1=pHead,C0=cn(0,1.5*Scale,0)}
| |
| 566 | Hum=iNew{'Humanoid',Char}
| |
| 567 | ||
| 568 | ||
| 569 | Torso.Transparency=1 | |
| 570 | wTorso=iNew{'Weld',Torso,Part0=Torso,Part1=pTorso,C0=cn(0,-2.5*Scale,0)*ca(0,0,0)}
| |
| 571 | oTorso=cn(0,0,0) | |
| 572 | ||
| 573 | Stand.Transparency=1 | |
| 574 | wStand=iNew{'Weld',Torso,Part0=Torso,Part1=Stand,C0=cn(0,-2.5*Scale,0)}
| |
| 575 | ||
| 576 | wLSho=iNew{'Weld',LSho,Part0=pTorso,Part1=LSho,C0=cn(-1.5*Scale,0.75*Scale,0),C1=cn(0,0.25*Scale,0)}
| |
| 577 | wLArm=iNew{'Weld',LArm,Part0=LSho,Part1=LArm,C0=cn(0,-0.75*Scale,0),C1=cn(0,0.75*Scale,0)}
| |
| 578 | ||
| 579 | wRSho=iNew{'Weld',RSho,Part0=pTorso,Part1=RSho,C0=cn(1.5*Scale,0.75*Scale,0),C1=cn(0,0.25*Scale,0)}
| |
| 580 | wRArm=iNew{'Weld',RArm,Part0=RSho,Part1=RArm,C0=cn(0,-0.75*Scale,0),C1=cn(0,0.75*Scale,0)}
| |
| 581 | ||
| 582 | wLThi=iNew{'Weld',LThi,Part0=pTorso,Part1=LThi,C0=cn(-0.5*Scale,-1*Scale,0),C1=cn(0,0.75*Scale,0)}
| |
| 583 | wLLeg=iNew{'Weld',LLeg,Part0=LThi,Part1=LLeg,C0=cn(1,-0.75*Scale,0),C1=cn(0,0.75*Scale,0)}
| |
| 584 | ||
| 585 | wRThi=iNew{'Weld',RThi,Part0=pTorso,Part1=RThi,C0=cn(0.5*Scale,-1*Scale,0),C1=cn(0,0.75*Scale,0)}
| |
| 586 | wRLeg=iNew{'Weld',RLeg,Part0=RThi,Part1=RLeg,C0=cn(0,-0.75*Scale,0),C1=cn(0,0.75*Scale,0)}
| |
| 587 | ||
| 588 | wLSho.C0=cn(-1.5*Scale,0.75*Scale,0)*ca(0,0,-135) --a,b | |
| 589 | wLArm.C0=cn(0,-0.75*Scale,0)*ca(0,0,0) --c,d | |
| 590 | wRSho.C0=cn(1.5*Scale,0.75*Scale,0)*ca(0,0,135) --e,f | |
| 591 | wRArm.C0=cn(0,-0.75*Scale,0)*ca(0,0,0) --g,h | |
| 592 | ---- | |
| 593 | wLThi.C0=cn(-0.5*Scale,-1*Scale,0)*ca(0,0,-45) --i,j | |
| 594 | wLLeg.C0=cn(0,-0.75*Scale,0)*ca(0,0,0) --k,l | |
| 595 | wRThi.C0=cn(0.5*Scale,-1*Scale,0)*ca(0,0,45) --m,n | |
| 596 | wRLeg.C0=cn(0,-0.75*Scale,0)*ca(0,0,0) --o,p | |
| 597 | ||
| 598 | BG=iNew{'BodyGyro',Torso,maxTorque=nov3}
| |
| 599 | BP=iNew{'BodyPosition',Torso,maxForce=nov3}
| |
| 600 | fUNDYING=Hum.Died:connect(UNDYING) | |
| 601 | LimbNames={'LSho','RSho','LArm','RArm','RThi','LThi','RLeg','LLeg'}
| |
| 602 | for i=1,8 do local v=LimbNames[i] LimbNames[v]=getfenv()["w"..v] end | |
| 603 | RootLimbs={pHead,pTorso,LSho,RSho,LArm,RArm,RThi,LThi,RLeg,LLeg}
| |
| 604 | Anim,LegAnim,ArmAnim='Sit','Sit','Sit' | |
| 605 | local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p=GetPose() | |
| 606 | SetWeld(wLSho,0,1,1,a,b,v3(-1.5*Scale,0.5*Scale,0),v3(0,0,-10),1) | |
| 607 | SetWeld(wLArm,0,1,1,c,d,v3(0,-0.75*Scale,0),v3(10,0,10),1) | |
| 608 | SetWeld(wRSho,0,1,1,e,f,v3(1.5*Scale,0.5*Scale,0),v3(0,0,10),1) | |
| 609 | SetWeld(wRArm,0,1,1,g,h,v3(0,-0.75*Scale,0),v3(10,0,-10),1) | |
| 610 | SetWeld(wLThi,0,1,1,i,j,v3(-0.5*Scale,-1*Scale,0),v3(15,0,-5),1) | |
| 611 | SetWeld(wLLeg,0,1,1,k,l,v3(0,-0.75*Scale,0),v3(-15,0,5),1) | |
| 612 | SetWeld(wRThi,0,1,1,m,n,v3(0.5*Scale,-1*Scale,0),v3(15,0,5),1) | |
| 613 | SetWeld(wRLeg,0,1,1,o,p,v3(0,-0.75*Scale,0),v3(-15,0,-5),1) | |
| 614 | Oa,Ob,Oc,Od,Oe,Of,Og,Oh,Oi,Oj,Ok,Ol,Om,On,Oo,Op=GetPose() | |
| 615 | SetWeld(wLSho,0,1,1,nov3,nov3,a,b,1) | |
| 616 | SetWeld(wLArm,0,1,1,nov3,nov3,c,d,1) | |
| 617 | SetWeld(wRSho,0,1,1,nov3,nov3,e,f,1) | |
| 618 | SetWeld(wRArm,0,1,1,nov3,nov3,g,h,1) | |
| 619 | SetWeld(wLThi,0,1,1,nov3,nov3,i,j,1) | |
| 620 | SetWeld(wLLeg,0,1,1,nov3,nov3,k,l,1) | |
| 621 | SetWeld(wRThi,0,1,1,nov3,nov3,m,n,1) | |
| 622 | SetWeld(wRLeg,0,1,1,nov3,nov3,o,p,1) | |
| 623 | end | |
| 624 | ||
| 625 | function GetPose() | |
| 626 | local a,b=GetWeld(wLSho,0) | |
| 627 | local c,d=GetWeld(wLArm,0) | |
| 628 | local e,f=GetWeld(wRSho,0) | |
| 629 | local g,h=GetWeld(wRArm,0) | |
| 630 | local i,j=GetWeld(wLThi,0) | |
| 631 | local k,l=GetWeld(wLLeg,0) | |
| 632 | local m,n=GetWeld(wRThi,0) | |
| 633 | local o,p=GetWeld(wRLeg,0) | |
| 634 | local q,r=GetWeld(wTorso,0) | |
| 635 | return a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r | |
| 636 | end | |
| 637 | ||
| 638 | MakeAI(SpawnPoint) | |
| 639 | ||
| 640 | ASpeed=28 | |
| 641 | coroutine.resume(coroutine.create(function() | |
| 642 | SetWeld(wLSho,0,1,1,nov3,nov3,wLSho.C0.p,v3(45,0,-10),1) | |
| 643 | SetWeld(wLArm,0,1,1,nov3,nov3,wLArm.C0.p,v3(45,0,10),1) | |
| 644 | SetWeld(wRSho,0,1,1,nov3,nov3,wRSho.C0.p,v3(45,0,10),1) | |
| 645 | SetWeld(wRArm,0,1,1,nov3,nov3,wRArm.C0.p,v3(45,0,-10),1) | |
| 646 | SetWeld(wLThi,0,1,1,nov3,nov3,v3(-0.5*Scale,-0.6*Scale,-0.5*Scale),v3(125,0,-12),1) | |
| 647 | SetWeld(wLLeg,0,1,1,nov3,nov3,wLLeg.C0.p,v3(-70,0,12),1) | |
| 648 | SetWeld(wRThi,0,1,1,nov3,nov3,v3( 0.5*Scale,-0.6*Scale,-0.5*Scale),v3(125,0,12),1) | |
| 649 | SetWeld(wRLeg,0,1,1,nov3,nov3,wRLeg.C0.p,v3(-70,0,-12),1) | |
| 650 | SetWeld(wTorso,0,1,1,oTorso,nov3,v3(0,-3*Scale,0),nov3,1) | |
| 651 | wait(1) | |
| 652 | Anim='Standing' | |
| 653 | local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p=GetPose() | |
| 654 | for x=1,ASpeed do | |
| 655 | SetWeld(wTorso,0,x,ASpeed,wTorso.C0.p,nov3,oTorso,nov3,1) | |
| 656 | SetWeld(wLSho,0,x,ASpeed,a,b,v3(-1.5*Scale,0.5*Scale,0),v3(0,0,-10),1) | |
| 657 | SetWeld(wLArm,0,x,ASpeed,c,d,v3(0,-0.75*Scale,0),v3(10,0,10),1) | |
| 658 | SetWeld(wRSho,0,x,ASpeed,e,f,v3(1.5*Scale,0.5*Scale,0),v3(0,0,10),1) | |
| 659 | SetWeld(wRArm,0,x,ASpeed,g,h,v3(0,-0.75*Scale,0),v3(10,0,-10),1) | |
| 660 | SetWeld(wLThi,0,x,ASpeed,i,j,v3(-0.5*Scale,-1*Scale,0),v3(15,0,-5),1) | |
| 661 | SetWeld(wLLeg,0,x,ASpeed,k,l,v3(0,-0.75*Scale,0),v3(-15,0,5),1) | |
| 662 | SetWeld(wRThi,0,x,ASpeed,m,n,v3(0.5*Scale,-1*Scale,0),v3(15,0,5),1) | |
| 663 | SetWeld(wRLeg,0,x,ASpeed,o,p,v3(0,-0.75*Scale,0),v3(-15,0,-5),1) | |
| 664 | wait() | |
| 665 | end | |
| 666 | ArmAnim='None' | |
| 667 | LegAnim='None' | |
| 668 | Anim='None' | |
| 669 | end)) | |
| 670 | --Target=PChar | |
| 671 | function Stay(bool,cff) | |
| 672 | BG.maxTorque=bool and v3(1,1,1)/0 or nov3 BG.cframe=cff or Torso.CFrame | |
| 673 | BP.maxForce=BG.maxTorque BP.position=Torso.Position | |
| 674 | end | |
| 675 | function fMarble(Ch,func) | |
| 676 | for i,v in pairs(Ch:children()) do | |
| 677 | for x=-1,1,2 do | |
| 678 | for y=-1,1,2 do | |
| 679 | for z=-1,1,2 do | |
| 680 | if v:findFirstChild(x..y..z) then func(v[x..y..z]) end | |
| 681 | end end end | |
| 682 | end | |
| 683 | end | |
| 684 | function ReturnAnim() | |
| 685 | local ne1,ne2=GetWeld(pNeck,0) | |
| 686 | local wt1,wt2=GetWeld(wTorso,0) | |
| 687 | local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p=GetPose() | |
| 688 | for x=1,ASpeed do | |
| 689 | SetWeld(wLSho,0,x,ASpeed,a,b,Oa,Ob,1) | |
| 690 | SetWeld(wLArm,0,x,ASpeed,c,d,Oc,Od,1) | |
| 691 | SetWeld(wRSho,0,x,ASpeed,e,f,Oe,Of,1) | |
| 692 | SetWeld(wRArm,0,x,ASpeed,g,h,Og,Oh,1) | |
| 693 | SetWeld(wLThi,0,x,ASpeed,i,j,Oi,Oj,1) | |
| 694 | SetWeld(wLLeg,0,x,ASpeed,k,l,Ok,Ol,1) | |
| 695 | SetWeld(wRThi,0,x,ASpeed,m,n,Om,On,1) | |
| 696 | SetWeld(wRLeg,0,x,ASpeed,o,p,Oo,Op,1) | |
| 697 | SetWeld(wTorso,0,x,ASpeed,wt1,wt2,oTorso,nov3,1) | |
| 698 | SetWeld(pNeck,0,x,ASpeed,ne1,ne2,v3(0,1.5,0)*Scale,nov3,1) | |
| 699 | wait() | |
| 700 | end | |
| 701 | end | |
| 702 | ||
| 703 | ChatConnection=Player.Chatted:connect(function(msg) | |
| 704 | coroutine.resume(coroutine.create(function() | |
| 705 | if not Char.Parent then return end | |
| 706 | local Sep,sep=se(';',msg)
| |
| 707 | local p1,p2=findplayer(Sep[2]),findplayer(Sep[3]) | |
| 708 | local cmd=sep[1] | |
| 709 | --print(Sep[1]) | |
| 710 | --print(LimbNames[Sep[1]]) | |
| 711 | Tt=(p1 and p1.Character and p1.Character:findFirstChild'Torso') and p1.Character.Torso or nil | |
| 712 | if cmd=='sit' and (Anim=='None' or Anim=='Follow') then | |
| 713 | Anim='Sitting' | |
| 714 | Hum:MoveTo(Torso.Position,Torso) | |
| 715 | LegAnim,ArmAnim='Sit','Sit' | |
| 716 | for x=1,ASpeed do | |
| 717 | SetWeld(wLSho,0,x,ASpeed,Oa,Ob,Oa,v3(45,0,-10),1) | |
| 718 | SetWeld(wLArm,0,x,ASpeed,Oc,Od,Oc,v3(45,0,10),1) | |
| 719 | SetWeld(wRSho,0,x,ASpeed,Oe,Of,Oe,v3(45,0,10),1) | |
| 720 | SetWeld(wRArm,0,x,ASpeed,Og,Oh,Og,v3(45,0,-10),1) | |
| 721 | SetWeld(wLThi,0,x,ASpeed,Oi,Oj,v3(-0.5*Scale,-0.6*Scale,-0.5*Scale),v3(125,0,-12),1) | |
| 722 | SetWeld(wLLeg,0,x,ASpeed,Ok,Ol,Ok,v3(-70,0,12),1) | |
| 723 | SetWeld(wRThi,0,x,ASpeed,Om,On,v3( 0.5*Scale,-0.6*Scale,-0.5*Scale),v3(125,0,12),1) | |
| 724 | SetWeld(wRLeg,0,x,ASpeed,Oo,Op,Oo,v3(-70,0,-12),1) | |
| 725 | SetWeld(wTorso,0,x,ASpeed,oTorso,nov3,v3(0,-3*Scale,0),nov3,1) | |
| 726 | wait() | |
| 727 | end | |
| 728 | Anim='Sit' | |
| 729 | elseif (cmd=='stand' or cmd=='stop') and (Anim=='Roll' or Anim=='Sit' or Anim=='Follow' or Anim=='Form' or Anim=='Dance' or Anim=='Grab') then | |
| 730 | if Anim=='Sit' or Anim=='Form' or Anim=='Dance' or Anim=='Roll' then | |
| 731 | Anim='Returning' | |
| 732 | ReturnAnim() | |
| 733 | else | |
| 734 | Target=nil | |
| 735 | wait(0.2) | |
| 736 | Hum:MoveTo(Torso.Position,Torso) | |
| 737 | end | |
| 738 | LegAnim,ArmAnim,Anim='None','None','None' | |
| 739 | elseif cmd=='follow' and Tt and Anim=='None' then | |
| 740 | Anim='Follow' | |
| 741 | Target=p1.Character | |
| 742 | elseif cmd=='shoot' and Tt and RArm['1-11'].Transparency~=1 and ArmAnim=='None' then | |
| 743 | Target=p1.Character | |
| 744 | ArmAnim='Shoot' | |
| 745 | FaceBG(Tt.Position) | |
| 746 | wait(0.1) | |
| 747 | local cff=cn(pTorso.CFrame.p,v3(Tt.Position.x,pTorso.Position.y,Tt.Position.z)) | |
| 748 | local ofs=cff:toObjectSpace(cn(cff*cn(1.5*Scale,0.5*Scale,0).p,Tt.CFrame*cn(0,2,0).p)*ca(90,0,0)*cn(0,-0.25*Scale,0)) | |
| 749 | local x,y,z=ofs:toEulerAnglesXYZ() | |
| 750 | local rot=v3(mdeg(x),mdeg(y),mdeg(z)) | |
| 751 | for q=1,ASpeed do | |
| 752 | SetWeld(wRArm,0,q,ASpeed,Og,Oh,Og,nov3,1) | |
| 753 | SetWeld(wRSho,0,q,ASpeed,Oe,Of,ofs.p,rot,1) | |
| 754 | SetWeld(wRSho,1,q,ASpeed,v3(0,0.25*Scale,0),nov3,nov3,nov3,1) | |
| 755 | wait() | |
| 756 | end | |
| 757 | for y=-1,1,2 do for x=-1,1,2 do for z=-1,1,2 do | |
| 758 | local new=RArm[x..y..z]:Clone() new.Parent=RArm game.Debris:AddItem(new,8) new.Touched:connect(function(hit) Damage(hit.Parent:findFirstChild'Humanoid') end) | |
| 759 | new.CFrame=RArm[x..y..z].CFrame*cn(0,-Scale*1.5,0) new.CanCollide=true new.Velocity=cn(new.Position,Target.Torso.Position).lookVector*((new.Position-Target.Torso.Position).magnitude*20+900) | |
| 760 | RArm[x..y..z].Transparency=1 so.Block:Play() wait(0.06) | |
| 761 | end end end | |
| 762 | RArm.Transparency=1 | |
| 763 | delay(1,function() | |
| 764 | for x=-1,1,2 do for y=-1,1,2 do for z=-1,1,2 do local new=RArm[x..y..z]:Clone() new.Transparency=0 new.CanCollide=false new.Name='f'..new.Name new.Parent=RArm new.CFrame=RArm.CFrame*cn(Scale*x*2,Scale*-3,Scale*z*2) | |
| 765 | iNew{'BodyPosition',new,maxForce=v3(1,1,1)/0,position=RArm[x..y..z].Position} wait(0.14) end end end
| |
| 766 | DoLoop(35,function(i) for x=-1,1,2 do for y=-1,1,2 do for z=-1,1,2 do RArm['f'..x..y..z].BodyPosition.position=RArm[x..y..z].Position if i==1 then RArm['f'..x..y..z]:Remove() RArm[x..y..z].Transparency=0 RArm.Transparency=0 end end end end end) | |
| 767 | end) | |
| 768 | for q=1,ASpeed do | |
| 769 | SetWeld(wRArm,0,q,ASpeed,Og,nov3,Og,Oh,1) | |
| 770 | SetWeld(wRSho,0,q,ASpeed,ofs.p,rot,Oe,Of,1) | |
| 771 | SetWeld(wRSho,1,q,ASpeed,nov3,nov3,v3(0,0.25*Scale,0),nov3,1) | |
| 772 | wait() | |
| 773 | end | |
| 774 | BG.maxTorque=nov3 | |
| 775 | ArmAnim='None' | |
| 776 | elseif cmd=='slam' and (Anim=='None' or Anim=='Follow') and Tt then | |
| 777 | Target=p1 | |
| 778 | local lTt=Tt | |
| 779 | Anim='Follow' | |
| 780 | repeat Hum:MoveTo(Tt.Position+v3(0.5,0.5,0.5),Tt) wait(0.2) until lTt~=Tt or (Tt.Position-pTorso.Position).magnitude<10+Scale*5.5 or Anim~='Follow' | |
| 781 | if Anim~='Follow' then BG.maxTorque=nov3 return end | |
| 782 | if lTt~=Tt then return end | |
| 783 | Anim,LegAnim,ArmAnim='Slam','','' | |
| 784 | Hum:MoveTo(Torso.Position,Torso) | |
| 785 | FaceBG(Tt.Position) | |
| 786 | Stay(true,BG.cframe) | |
| 787 | local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p=GetPose() | |
| 788 | ASpeed2=15 | |
| 789 | for x=1,ASpeed2 do | |
| 790 | SetWeld(wLSho,0,x,ASpeed2,a,b,Oa,v3(180,0,0),1) | |
| 791 | SetWeld(wRSho,0,x,ASpeed2,e,f,Oe,v3(180,0,0),1) | |
| 792 | SetWeld(wTorso,0,x,ASpeed2,nov3,nov3,v3(0,3,0)*Scale,nov3,1) | |
| 793 | wait() | |
| 794 | end | |
| 795 | for x=1,ASpeed2 do | |
| 796 | SetWeld(wTorso,0,x,ASpeed2,v3(0,3,0)*Scale,nov3,v3(0,-3*Scale+2.5,-6*Scale),v3(-89,0,0),1) | |
| 797 | wait() | |
| 798 | end | |
| 799 | AOEFind(pTorso.Position,6.5*Scale,function(Hum) Damage(Hum,3,true) Hum.Sit=true end) | |
| 800 | MeshEffect(35,Torso.CFrame*cn(0,-3.5*Scale,-6*Scale)*ca(90,0,0),nil,v3(2,2,1)*Scale,v3(12,12,5)*Scale,0.2,1,'Light stone grey',as.ring) | |
| 801 | wait(0.5) | |
| 802 | for x=1,ASpeed do | |
| 803 | SetWeld(wTorso,0,x,ASpeed,v3(0,-3*Scale+2.5,-6*Scale),v3(-90,0,0),nov3,nov3,1) | |
| 804 | SetWeld(wLSho,0,x,ASpeed,Oa,v3(180,0,0),Oa,Ob,1) | |
| 805 | SetWeld(wRSho,0,x,ASpeed,Oe,v3(180,0,0),Oe,Of,1) | |
| 806 | wait() | |
| 807 | end | |
| 808 | Stay(false) | |
| 809 | Anim,LegAnim,ArmAnim='None','None','None' | |
| 810 | elseif cmd=='boulder' and Anim=='None' then | |
| 811 | Target=p1.Character | |
| 812 | Anim,LegAnim,ArmAnim='','','' | |
| 813 | Stay(true) | |
| 814 | FaceBG(Tt.Position) | |
| 815 | for x=1,ASpeed do | |
| 816 | SetWeld(wLSho,0,x,ASpeed,Oa,Ob,Oa,v3(135,0,0),1) | |
| 817 | SetWeld(wLArm,0,x,ASpeed,Oc,Od,Oc,v3(0,0,0),1) | |
| 818 | SetWeld(wRSho,0,x,ASpeed,Oe,Of,Oe,v3(135,0,0),1) | |
| 819 | SetWeld(wRArm,0,x,ASpeed,Og,Oh,Og,v3(0,0,-10),1) | |
| 820 | SetWeld(wLThi,0,x,ASpeed,Oi,Oj,v3(-0.5,-0.5,0.25)*Scale,v3(45,0,-15),1) | |
| 821 | SetWeld(wLLeg,0,x,ASpeed,Ok,Ol,Ok,v3(0,0,0),1) | |
| 822 | SetWeld(wRThi,0,x,ASpeed,Om,On,v3( 0.5,-0.5,0.25)*Scale,v3(45,0,15),1) | |
| 823 | SetWeld(wRLeg,0,x,ASpeed,Oo,Op,Oo,v3(0,0,0),1) | |
| 824 | SetWeld(wTorso,0,x,ASpeed,oTorso,nov3,v3(0,-1.5,-1.5)*Scale,v3(-90,0,0),1) | |
| 825 | wait() | |
| 826 | end | |
| 827 | wait(0.2) | |
| 828 | local boulder=iPart{Char,1,1,1,type='WedgePart'} boulder.Material=Mat
| |
| 829 | local wm=iNew{'SpecialMesh',boulder,Scale=v3(4,3,4)*Scale,MeshType='Wedge'}
| |
| 830 | local wb=iNew{'Weld',boulder,Part0=RArm,Part1=boulder,C0=cn(-1.5*Scale,-2.3*Scale,0)*ca(180,180,0)}
| |
| 831 | local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=GetPose() | |
| 832 | for x=1,ASpeed*2 do | |
| 833 | SetWeld(wLSho,0,x,ASpeed*2,a,b,a,v3(225,0,0),1) | |
| 834 | SetWeld(wLArm,0,x,ASpeed*2,c,d,c,v3(45,0,0),1) | |
| 835 | SetWeld(wRSho,0,x,ASpeed*2,e,f,e,v3(225,0,0),1) | |
| 836 | SetWeld(wRArm,0,x,ASpeed*2,g,h,g,v3(45,0,0),1) | |
| 837 | SetWeld(wLThi,0,x,ASpeed*2,i,j,Oi,v3(0,0,-15),1) | |
| 838 | SetWeld(wLLeg,0,x,ASpeed*2,k,l,k,v3(0,0,0),1) | |
| 839 | SetWeld(wRThi,0,x,ASpeed*2,m,n,Om,v3(0,0,15),1) | |
| 840 | SetWeld(wRLeg,0,x,ASpeed*2,o,p,o,v3(0,0,0),1) | |
| 841 | SetWeld(wTorso,0,x,ASpeed*2,q,r,nov3,nov3,1) | |
| 842 | wait() | |
| 843 | end | |
| 844 | FaceBG(Tt.Position) | |
| 845 | for x=1,ASpeed/2 do | |
| 846 | SetWeld(wLSho,0,x,math.floor(ASpeed/2),a,v3(225,0,0),a,v3(90,0,0),1) | |
| 847 | SetWeld(wLArm,0,x,math.floor(ASpeed/2),c,v3(45,0,0),c,v3(45,0,0),1) | |
| 848 | SetWeld(wRSho,0,x,math.floor(ASpeed/2),e,v3(225,0,0),e,v3(90,0,0),1) | |
| 849 | SetWeld(wRArm,0,x,math.floor(ASpeed/2),g,v3(45,0,0),g,v3(45,0,0),1) | |
| 850 | wait() | |
| 851 | end | |
| 852 | local bcf=boulder.CFrame | |
| 853 | wb:Remove() | |
| 854 | wm:Remove() | |
| 855 | boulder.Size=wm.Scale | |
| 856 | boulder.CFrame=cn(boulder.Position,Target.Torso.Position)*cn(0,3,-1)*ca(0,180,0) | |
| 857 | --boulder.Friction=0.1 | |
| 858 | boulder.Elasticity=0 | |
| 859 | boulder.Velocity=(boulder.CFrame*ca(0,180,0)).lookVector*((boulder.Position-Target.Torso.Position).magnitude*1+90) | |
| 860 | boulder.RotVelocity=nov3 | |
| 861 | game.Debris:AddItem(boulder,8) | |
| 862 | Stay(false) | |
| 863 | ReturnAnim() | |
| 864 | Anim,LegAnim,ArmAnim='None','None','None' | |
| 865 | elseif cmd=='grab' and Tt and not Grabbing then | |
| 866 | Target=p1 | |
| 867 | local lTt=Tt | |
| 868 | Anim='Follow' | |
| 869 | repeat Hum:MoveTo(Tt.Position+v3(0.5,0.5,0.5),Tt) wait(0.2) until lTt~=Tt or (Tt.Position-Stand.CFrame*cn(0,-Stand.Size.y/2+1,-2.8*Scale).p).magnitude<10 or Anim~='Follow' | |
| 870 | if Anim~='Follow' then BG.maxTorque=nov3 return end | |
| 871 | if lTt~=Tt then return end | |
| 872 | pcall(function() Tt.Parent.Humanoid.PlatformStand=true end) | |
| 873 | Hum:MoveTo(Torso.Position,Torso) | |
| 874 | Anim,LegAnim,ArmAnim='Grab','','' | |
| 875 | FaceBG(Tt.Position) | |
| 876 | for x=1,ASpeed do | |
| 877 | SetWeld(wLSho,0,x,ASpeed,Oa,Ob,Oa,v3(-30,0,-30),1) | |
| 878 | SetWeld(wLArm,0,x,ASpeed,Oc,Od,Oc,v3(0,0,0),1) | |
| 879 | SetWeld(wRSho,0,x,ASpeed,Oe,Of,Oe,v3(145,0,-30),1) | |
| 880 | SetWeld(wRArm,0,x,ASpeed,Og,Oh,Og,v3(0,0,0),1) | |
| 881 | SetWeld(wLThi,0,x,ASpeed,Oi,Oj,v3(-0.5,-0.4,0.3)*Scale,v3(70,0,0),1) | |
| 882 | SetWeld(wLLeg,0,x,ASpeed,Ok,Ol,Ok,v3(-20,0,0),1) | |
| 883 | SetWeld(wRThi,0,x,ASpeed,Om,On,v3(0.5,-0.5,-0.3)*Scale,v3(135,0,0),1) | |
| 884 | SetWeld(wRLeg,0,x,ASpeed,Oo,Op,Oo,v3(-90,0,0),1) | |
| 885 | SetWeld(wTorso,0,x,ASpeed,oTorso,nov3,v3(0,-2,-1.5)*Scale,v3(-90,0,0),1) | |
| 886 | wait() | |
| 887 | end | |
| 888 | local ofs=RArm.CFrame:toObjectSpace(Tt.CFrame) | |
| 889 | Tt.Parent.Humanoid.PlatformStand=true | |
| 890 | Grabbing=iNew{'Weld',RArm,Part0=RArm,Part1=Tt,C0=ofs}
| |
| 891 | local a,b=GetWeld(Grabbing,0) | |
| 892 | for x=1,ASpeed do | |
| 893 | SetWeld(Grabbing,0,x,ASpeed,a,b,v3(0,-0.75*Scale-1,0),v3(-90,0,0),1) | |
| 894 | wait() | |
| 895 | end | |
| 896 | Stay(false) | |
| 897 | ReturnAnim() | |
| 898 | Anim,LegAnim,ArmAnim='None','None','None' | |
| 899 | elseif cmd=='dance' and (Anim=='None' or Anim=='Follow') then | |
| 900 | Hum:MoveTo(pTorso.Position,pTorso) | |
| 901 | Anim,ArmAnim,LegAnim='Dance','Dance','Dance' | |
| 902 | local ASpeed=math.floor(ASpeed/2) | |
| 903 | repeat | |
| 904 | local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=GetPose() | |
| 905 | for x=1,ASpeed do | |
| 906 | if Anim~='Dance' then break end | |
| 907 | SetWeld(wLSho,0,x,ASpeed,a,b,v3(-1.2,0.5,-0.25)*Scale,v3(35,0,30),1) | |
| 908 | SetWeld(wLArm,0,x,ASpeed,c,d,c,v3(25,0,0),1) | |
| 909 | SetWeld(wRSho,0,x,ASpeed,e,f,v3( 1.2,0.5,-0.25)*Scale,v3(45,0,-30),1) | |
| 910 | SetWeld(wRArm,0,x,ASpeed,g,h,g,v3(25,0,0),1) | |
| 911 | SetWeld(wLThi,0,x,ASpeed,i,j,i,v3(0,0,0),1) | |
| 912 | SetWeld(wLLeg,0,x,ASpeed,k,l,k,v3(0,0,0),1) | |
| 913 | SetWeld(wRThi,0,x,ASpeed,m,n,m,v3(45,0,20),1) | |
| 914 | SetWeld(wRLeg,0,x,ASpeed,o,p,o,v3(-45,0,-20),1) | |
| 915 | wait() | |
| 916 | end | |
| 917 | local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=GetPose() | |
| 918 | for x=1,ASpeed do | |
| 919 | if Anim~='Dance' then break end | |
| 920 | SetWeld(wLSho,0,x,ASpeed,a,b,v3(-1.2,0.5,-0.25)*Scale,v3(95,0,30),1) | |
| 921 | SetWeld(wLArm,0,x,ASpeed,c,d,c,v3(-10,0,0),1) | |
| 922 | SetWeld(wRSho,0,x,ASpeed,e,f,v3( 1.2,0.5,-0.25)*Scale,v3(105,0,-30),1) | |
| 923 | SetWeld(wRArm,0,x,ASpeed,g,h,g,v3(-10,0,0),1) | |
| 924 | SetWeld(wLThi,0,x,ASpeed,i,j,i,v3(45,0,-20),1) | |
| 925 | SetWeld(wLLeg,0,x,ASpeed,k,l,k,v3(-45,0,20),1) | |
| 926 | SetWeld(wRThi,0,x,ASpeed,m,n,m,v3(0,0,0),1) | |
| 927 | SetWeld(wRLeg,0,x,ASpeed,o,p,o,v3(0,0,0),1) | |
| 928 | wait() | |
| 929 | end | |
| 930 | until Anim~='Dance' | |
| 931 | elseif cmd=='roll' and (Anim=='None' or Anim=='Follow') then | |
| 932 | Target=p1 | |
| 933 | local lTt=Tt | |
| 934 | Anim,ArmAnim,LegAnim='Roll','','' | |
| 935 | local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=GetPose() | |
| 936 | local n1,n2=GetWeld(pNeck,0) | |
| 937 | for x=1,ASpeed do | |
| 938 | SetWeld(wLSho,0,x,ASpeed,a,b,v3(-1.5,0.5,0)*Scale,v3(0,0,-45),1) | |
| 939 | SetWeld(wLArm,0,x,ASpeed,c,d,c,v3(0,0,90),1) | |
| 940 | SetWeld(wRSho,0,x,ASpeed,e,f,v3( 1.5,0.5,0)*Scale,v3(0,0,45),1) | |
| 941 | SetWeld(wRArm,0,x,ASpeed,g,h,g,v3(0,0,-90),1) | |
| 942 | SetWeld(wLThi,0,x,ASpeed,i,j,v3(0,1, 0.5)*Scale,v3(-30,0,0),1) | |
| 943 | SetWeld(wLLeg,0,x,ASpeed,k,l,k,v3(60,0,0),1) | |
| 944 | SetWeld(wRThi,0,x,ASpeed,m,n,v3(0,1,-0.5)*Scale,v3(30,0,0),1) | |
| 945 | SetWeld(wRLeg,0,x,ASpeed,o,p,o,v3(-60,0,0),1) | |
| 946 | SetWeld(pNeck,0,x,ASpeed,n1,n2,v3(0,0,0),n2,1) | |
| 947 | SetWeld(wTorso,0,x,ASpeed,oTorso,nov3,v3(0,-2,0)*Scale,nov3,1) | |
| 948 | wait() | |
| 949 | end | |
| 950 | tWS[2]=3 | |
| 951 | repeat | |
| 952 | local cf=Torso.CFrame*cn(mran2(-1,1)*Scale,-4*Scale,0.5*Scale)*ca(90+mran(-20,20),mran(-30,30),0) | |
| 953 | MeshEffect(24,cf,cf*cn(0,4*Scale,0),v3(0.5,0.5,0.5)*Scale,v3(mran2(1,4),mran2(3,5),mran2(1,3))*Scale,0.1,1,'Dark stone grey','Brick') | |
| 954 | Hum:MoveTo(Tt.CFrame*cn(0,0,Scale).p,Tt) wTorso.C0=wTorso.C0*ca(-20,0,0) wait(0.035) until lTt~=Tt or (Tt.Position-Stand.CFrame*cn(0,-Stand.Size.y/2+1,-2.8*Scale).p).magnitude<6 or Anim~='Roll' | |
| 955 | tWS[2]=1 | |
| 956 | ClearWeld(wTorso) | |
| 957 | if Anim~='Roll' then return end | |
| 958 | Hum:MoveTo(Torso.Position+v3(0,1,0),Torso) | |
| 959 | Torso.Anchored=true Torso.Velocity=nov3 | |
| 960 | local cf=Stand.CFrame*cn(0,0,-1.5*Scale)*ca(-45,0,0) --iPart{Char,1,1,1,co='Black',cf=cf,an=true}
| |
| 961 | MeshEffect(50,cf,nil,v3(3.5,3.5,2)*Scale,v3(11,11,6)*Scale,0.1,1,'White',as.ring) | |
| 962 | for i=1,16 do | |
| 963 | local cf=cf*ca(90,360*(i/16),0)*ca(45,0,0) | |
| 964 | MeshEffect(40,cf,cf*cn(0,10*Scale,0),v3(0.2,2,0.2)*Scale,v3(1,5,1)*Scale,0.1,1,'','Sphere') | |
| 965 | end | |
| 966 | AOEFind(cf.p,6.5*Scale,function(Hum,v) Damage(Hum,2,true) Hum.Sit=true v.Velocity=cn(pTorso.Position,v.Position).lookVector*50 end) | |
| 967 | wait(0.2) | |
| 968 | Torso.Anchored=false | |
| 969 | ReturnAnim() | |
| 970 | Hum:MoveTo(Torso.Position,Torso) | |
| 971 | Anim,LegAnim,ArmAnim='None','None','None' | |
| 972 | elseif cmd=='beam' and (Anim=='None' or Anim=='Follow') then | |
| 973 | Anim='beam' | |
| 974 | local che =iPart{Char,1,1,1,sc=Scale,co=CC[1],ma=Mat} local chew=iNew{'Weld',che ,Part0=pTorso,Part1=che}
| |
| 975 | local che2=iPart{che ,0.8*Scale,0.2,0.8*Scale,co='Really black'} local che2w=iNew{'Weld',che2,Part0=che,Part1=che2}
| |
| 976 | local chem=iNew{'CylinderMesh',che} iNew{'CylinderMesh',che2}
| |
| 977 | local chest,chex,i={},0,0
| |
| 978 | for x=-1,1,2 do for y=-1,1,2 do i=i+1 chest[i]={pTorso[x..y..'-1']} chest[i][2]=chest[i][1].Weld chest[i][3]=chest[i][2].C0
| |
| 979 | local xx,yy,zz=chest[i][2].C0:toEulerAnglesXYZ() chest[i][4]=v3(mdeg(xx),mdeg(yy),mdeg(zz)) | |
| 980 | chest[i][5]=cn(0.45*x*Scale,0,-0.5*Scale)*chest[i][3] chest[i][6]=chest[i][4]+v3(0,-105*x,0) end end | |
| 981 | local len=1.75 | |
| 982 | local dochest=function(v,chexx,adj) | |
| 983 | local p=v/ASpeed | |
| 984 | chex=adj*p | |
| 985 | chem.Scale=v3(1,len*p,1) | |
| 986 | chew.C0=ca(chexx+chex,0,0)*cn(0,len/2*p*Scale,0) | |
| 987 | che2w.C0=cn(0,len/2*p*Scale,0) | |
| 988 | for i=1,4 do SetWeld(chest[i][2],0,v,ASpeed,chest[i][3],chest[i][4],chest[i][5],chest[i][6],1) end | |
| 989 | end | |
| 990 | for v=1,ASpeed do if Tt then FaceBG(Tt.Position) end dochest(v,-90,-45) wait() end | |
| 991 | local beam=iPart{Char,0.7*Scale,1,0.7*Scale,co='New Yeller',an=true,tr=0.3} beamm=iNew{'CylinderMesh',beam}
| |
| 992 | for i=1,ASpeed*3 do | |
| 993 | local p=i/ASpeed*3 | |
| 994 | chex=90*math.sin((math.pi/2)/(ASpeed*3)*i) | |
| 995 | chew.C0=ca(-135+chex,0,0)*cn(0,len/2*Scale,0) | |
| 996 | local hit,pos=ray(che2.Position,che2.Position-che2.CFrame*cn(0,-1,0).p,Char) | |
| 997 | local mag=(che2.Position-pos).magnitude local p1,p2=che2.Position+v3(mran2(-1,1),mran2(-1,1),mran2(-1,1))/3,pos+v3(mran2(-1,1),mran2(-1,1),mran2(-1,1))/3 | |
| 998 | beam.CFrame=cn(p1,p2)*cn(0,0,-mag/2)*ca(90,0,0) beamm.Scale=v3(1,mag+(Scale/3),1) | |
| 999 | AOEFind(pos,Scale*2,function(Hum) Damage(Hum,2.5) end) | |
| 1000 | if i%2==0 then for i=1,5 do local cf=cn(pos)*ca(0,mran(-180,180),mran(-95,95)) MeshEffect(8,cf,cf*cn(0,Scale*2.2,0),v3(0.1,0.4,0.1)*Scale,v3(0.4,3,0.4)*Scale,0.2,1,CC[mran(2,3)],as.cone) end | |
| 1001 | MeshEffect(8,cn(pos),nil,v3(0.8,0.8,0.8)*Scale,v3(4,4,4)*Scale,0.2,1,CC[mran(2,3)],'Sphere') end | |
| 1002 | if Tt then FaceBG(Tt.Position) end | |
| 1003 | wait() | |
| 1004 | end | |
| 1005 | DoLoop(12,function(i) beam.Transparency=0.3+i*0.7 if i==1 then beam:Remove() end end) | |
| 1006 | for v=ASpeed,0,-1 do dochest(v,-90,45) wait() end | |
| 1007 | Stay(false) | |
| 1008 | che:Remove() | |
| 1009 | Anim='None' | |
| 1010 | ---------------------------------------------------------------------------=---WWWWWWWWWWWWWWWWWW | |
| 1011 | elseif cmd=='box' and (Anim=='None' or Anim=='Follow') then | |
| 1012 | Anim,ArmAnim='cart','cart' | |
| 1013 | for x=1,ASpeed do | |
| 1014 | SetWeld(wLSho,0,x,ASpeed,Oa,Ob,Oa,v3(90,0,10),1) | |
| 1015 | SetWeld(wLArm,0,x,ASpeed,Oc,Od,Oc,v3(0,0,25),1) | |
| 1016 | SetWeld(wRSho,0,x,ASpeed,Oe,Of,Oe,v3(90,0,-10),1) | |
| 1017 | SetWeld(wRArm,0,x,ASpeed,Og,Oh,Og,v3(0,0,-25),1) | |
| 1018 | wait() | |
| 1019 | end | |
| 1020 | Stay(true) | |
| 1021 | local spawn=RArm.CFrame*cn(0,-0.75*Scale-2,0)*ca(-90,0,0) | |
| 1022 | local des=iPart{Char,1,1,1,an=true,ma=Mat,cf=spawn,ca=false}
| |
| 1023 | for i=1,6,0.2 do des.Size=v3(i,i,i) des.CFrame=spawn*cn(0,0,-i/2) wait() end | |
| 1024 | local cart=iNew{'Model',workspace,Name='Cart'}
| |
| 1025 | local base=iPart{cart,4,1,5,ma=Mat,cf=des.CFrame} iNew{'BodyGyro',base}
| |
| 1026 | for x=-1,1,2 do | |
| 1027 | local new=iPart{cart,0.5,4,5,ma=Mat,cf=base.CFrame} iNew{'Weld',new,Part0=base,Part1=new,C0=cn(1.75*x,2.5,0)}
| |
| 1028 | local new=iPart{cart,3.5,4,0.5,ma=Mat,cf=base.CFrame} iNew{'Weld',new,Part0=base,Part1=new,C0=cn(0,2.5,2.25*x)}
| |
| 1029 | end | |
| 1030 | for i=6,0.8,-0.2 do des.Size=v3(i,i,i) des.CFrame=spawn*cn(0,0,-i/2) wait() end des:Remove() | |
| 1031 | Stay(false) | |
| 1032 | ReturnAnim() | |
| 1033 | Anim,ArmAnim='None','None' | |
| 1034 | elseif cmd=='crush' and Grabbing and (Anim=='None' or Anim=='Follow') then | |
| 1035 | Anim,ArmAnim='crush','crush' | |
| 1036 | for x=1,ASpeed do | |
| 1037 | SetWeld(wLSho,0,x,ASpeed,Oa,Ob,Oa,v3(80,0,-160),1) | |
| 1038 | SetWeld(wLArm,0,x,ASpeed,Oc,Od,Oc,v3(0,0,80),1) | |
| 1039 | SetWeld(wRSho,0,x,ASpeed,Oe,Of,Oe,v3(80,0,160),1) | |
| 1040 | SetWeld(wRArm,0,x,ASpeed,Og,Oh,Og,v3(0,0,-80),1) | |
| 1041 | wait() | |
| 1042 | end | |
| 1043 | local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=GetPose() | |
| 1044 | wait(0.2) | |
| 1045 | for x=1,ASpeed/2 do | |
| 1046 | SetWeld(wLSho,0,x,ASpeed/2,a,b,Oa,v3(80,0,-14),1) | |
| 1047 | SetWeld(wLArm,0,x,ASpeed/2,c,d,Oc,v3(0,0,80),1) | |
| 1048 | SetWeld(wRSho,0,x,ASpeed/2,e,f,Oe,v3(80,0,14),1) | |
| 1049 | SetWeld(wRArm,0,x,ASpeed/2,g,h,Og,v3(0,0,-80),1) | |
| 1050 | wait() | |
| 1051 | end | |
| 1052 | MeshEffect(35,Grabbing.Part1.CFrame,nil,v3(2,2,1)*Scale,v3(7,7,3)*Scale,0.3,1,'Light stone grey',as.ring) | |
| 1053 | local crushjo=60 | |
| 1054 | pcall(function() for i,v in pairs({'Neck','Left Shoulder','Right Shoulder','Left Hip','Right Hip'}) do local w=Grabbing.Part1.Parent.Torso[v] w.C1=w.C1*ca(mran(-crushjo,crushjo),mran(-crushjo,crushjo),mran(-crushjo,crushjo)) end end)
| |
| 1055 | local hit=Grabbing.Part1 | |
| 1056 | Grabbing:Remove() Grabbing=nil | |
| 1057 | wait(2) | |
| 1058 | pcall(function() hit.Parent.Humanoid.PlatformStand=false end) | |
| 1059 | ReturnAnim() | |
| 1060 | Anim,ArmAnim='None','None' | |
| 1061 | elseif cmd=='eat' and Grabbing and (Anim=='None' or Anim=='Follow') then | |
| 1062 | Anim,ArmAnim='Eat','Eat' | |
| 1063 | for x=1,ASpeed*2 do | |
| 1064 | SetWeld(wRSho,0,x,ASpeed*2,Oe,Of,Oe,v3(135,0,15),1) | |
| 1065 | SetWeld(wRArm,0,x,ASpeed*2,Og,Oh,Og,v3(45,-10,-100),1) | |
| 1066 | wait() | |
| 1067 | end | |
| 1068 | wait(1) | |
| 1069 | for x=1,40 do | |
| 1070 | SetWeld(wRSho,0,1,1,Oe,Of,Oe,v3(135+mran(-3,3),0,15+mran(-3,3)),1) | |
| 1071 | SetWeld(wRArm,0,1,1,Og,Oh,Og,v3(45,-10+mran(-12,12),-100+mran(-3,3)),1) | |
| 1072 | wait(0.05) | |
| 1073 | if x%2==0 then | |
| 1074 | local cf=Grabbing.Part1.CFrame*ca(180,mran(-180,180),mran(-40,40))*cn(0,1.5,0) | |
| 1075 | MeshEffect(24,cf,cf*cn(0,10,0),v3(0.2,2,0.2),v3(0.4,5,0.4),0.1,1,'Really red','Sphere') | |
| 1076 | end | |
| 1077 | end | |
| 1078 | Grabbing.Part1:BreakJoints() | |
| 1079 | pcall(function() Grabbing.Part1.Parent.Head:Remove() end) | |
| 1080 | Grabbing:Remove() Grabbing=nil | |
| 1081 | wait(2) | |
| 1082 | ReturnAnim() | |
| 1083 | Anim,ArmAnim='None','None' | |
| 1084 | elseif cmd=='drop' and Grabbing then | |
| 1085 | local hum=Grabbing.Part1.Parent.Humanoid Grabbing:Remove() Grabbing=nil hum.PlatformStand=false | |
| 1086 | elseif LimbNames[Sep[1]] and (Anim=='None' or Anim=='Form') then | |
| 1087 | Anim,ArmAnim,LegAnim='Form','Form','Form' | |
| 1088 | local v1,v2=GetWeld(LimbNames[Sep[1]],0) | |
| 1089 | local sepx=se(',',Sep[2])
| |
| 1090 | for x=1,ASpeed*2 do | |
| 1091 | SetWeld(LimbNames[Sep[1]],0,x,ASpeed*2,v1,v2,v1,v3(tonumber(sepx[1]),tonumber(sepx[2]),tonumber(sepx[3])),1) | |
| 1092 | wait() | |
| 1093 | end | |
| 1094 | elseif cmd=='plode' then | |
| 1095 | Char:BreakJoints() wait() | |
| 1096 | local Pressure=tonumber(sep[2]) or 50 | |
| 1097 | fMarble(Char,function(v) v.Velocity=cn(Torso.Position,v.Position).lookVector*Pressure end) | |
| 1098 | for i,v in pairs(RootLimbs) do v.Velocity=cn(Torso.Position,v.Position).lookVector*Pressure end | |
| 1099 | elseif cmd=='explode' then | |
| 1100 | iNew{'Explosion',pTorso,Position=pTorso.Position,BlastRadius=Scale*20}
| |
| 1101 | elseif cmd=='goto' then | |
| 1102 | pcall(function() | |
| 1103 | Hum:MoveTo(Player:GetMouse().Hit.p,Player:GetMouse().Target) end) | |
| 1104 | elseif cmd=='newscale' and tonumber(sep[2]) then | |
| 1105 | Char:BreakJoints() | |
| 1106 | Scale=tonumber(sep[2]) | |
| 1107 | if Scale<0.5 then Scale=0.5 end | |
| 1108 | if Scale>=100 then Scale=100 end | |
| 1109 | elseif cmd=='nobox' then | |
| 1110 | for i,v in pairs(workspace:children()) do if v.Name=='Cart' then v:Remove() end end | |
| 1111 | elseif cmd=='die' then | |
| 1112 | Char:BreakJoints() | |
| 1113 | elseif cmd=='brick' then | |
| 1114 | iPart{workspace,12,30,30,cf=Player.Character.Torso.CFrame*cn(0,10,-20),tr=0.5,an=true}
| |
| 1115 | elseif cmd=='test' then | |
| 1116 | local pt=Player.Character.Torso.CFrame | |
| 1117 | MeshEffect(35,pt*cn(0,5,0)*ca(90,0,0),nil,v3(2,2,1)*Scale,v3(7,7,3)*Scale,0.2,1,'Light stone grey',as.ring) | |
| 1118 | else | |
| 1119 | end | |
| 1120 | end)) | |
| 1121 | end) | |
| 1122 | keys={}
| |
| 1123 | NewAnim={}
| |
| 1124 | Player:GetMouse().KeyDown:connect(function(k) | |
| 1125 | coroutine.resume(coroutine.create(function() keys[k]=true | |
| 1126 | if (k=='q' or k=='e') and (Anim=='None' or Anim=='Laser') and (ArmAnim=='None' or ArmAnim=='Laser') and not NewAnim[k] then | |
| 1127 | NewAnim[k]=true | |
| 1128 | local w1,w2=k=='q' and wLSho or wRSho,k=='q' and wLArm or wRArm | |
| 1129 | local x=k=='q' and -1 or 1 | |
| 1130 | local aa,bb=GetWeld(w1,0) | |
| 1131 | local cc,dd=GetWeld(w2,0) | |
| 1132 | local targ=w1.Part1.CFrame*cn(0,-333,0) | |
| 1133 | local tips={}
| |
| 1134 | local co=0 | |
| 1135 | local sho1=iPart{Char,0.35,RArm.Size.y/Scale+0.15 ,0.35,sc=Scale,co=CC[1]} iNew{'Weld',sho1,Part0=k=='q' and LArm or RArm,Part1=sho1} iNew{'CylinderMesh',sho1}
| |
| 1136 | local sho2=iPart{Char,0.3,RArm.Size.y/Scale+0.16,0.3,sc=Scale,co='Really black'} iNew{'Weld',sho2,Part0=sho1,Part1=sho2} iNew{'CylinderMesh',sho2}
| |
| 1137 | for x=-1,1,2 do for z=-1,1,2 do tips[#tips+1]={(k=='q' and LArm or RArm)[x..'-1'..z].Weld}
| |
| 1138 | co=co+0.25 | |
| 1139 | local asd=tips[#tips] | |
| 1140 | asd[2],asd[3]=GetWeld(asd[1],0) | |
| 1141 | local cf=ca(0,360*co,0)*cn(0,asd[2].y*1.8,-0.75*Scale)*ca(-20,0,0) | |
| 1142 | asd[4]=cf.p | |
| 1143 | local a,b,c=cf:toEulerAnglesXYZ() | |
| 1144 | asd[5]=v3(mdeg(a),mdeg(b),mdeg(c)) | |
| 1145 | end end | |
| 1146 | for u=1,ASpeed/2 do | |
| 1147 | for i=1,4 do local asd=tips[i] | |
| 1148 | SetWeld(asd[1],0,u,ASpeed/2,asd[2],asd[3],asd[4],asd[5],1) | |
| 1149 | end wait() | |
| 1150 | end | |
| 1151 | repeat Anim,ArmAnim,LaserOn='Laser','Laser',true wait() | |
| 1152 | for i=1,4 do tips[i][1].C0=ca(0,15*x,0)*tips[i][1].C0 end | |
| 1153 | targ=TweenV3(1,12,targ,Player:GetMouse().Hit.p) | |
| 1154 | w1.C0=pTorso.CFrame:toObjectSpace(cn(pTorso.CFrame*cn(1.5*Scale*x,0.5*Scale,0).p,targ))*ca(90,0,0) | |
| 1155 | w2.C0=cn(0,-0.75*Scale,0) | |
| 1156 | until not keys[k] | |
| 1157 | ClearWeld(w1) ClearWeld(w2) for i=1,4 do ClearWeld(tips[i][1]) tips[i][6],tips[i][7]=GetWeld(tips[i][1],0) end | |
| 1158 | local a,b=GetWeld(w1,0) | |
| 1159 | local c,d=GetWeld(w2,0) | |
| 1160 | for z=1,ASpeed/2 do | |
| 1161 | for i=1,4 do SetWeld(tips[i][1],0,z,ASpeed/2,tips[i][6],tips[i][7],tips[i][2],tips[i][3],1) end | |
| 1162 | SetWeld(w1,0,z,ASpeed/2,a,b,aa,bb,1) | |
| 1163 | SetWeld(w2,0,z,ASpeed/2,c,d,cc,dd,1) | |
| 1164 | wait() | |
| 1165 | end | |
| 1166 | sho1:Remove() sho2:Remove() | |
| 1167 | NewAnim[k]=false | |
| 1168 | Anim,ArmAnim,LaserOn='None','None',false | |
| 1169 | end | |
| 1170 | end)) end) | |
| 1171 | Player:GetMouse().KeyUp:connect(function(k) keys[k]=false end) | |
| 1172 | Player:GetMouse().Button1Down:connect(function() | |
| 1173 | Button=true | |
| 1174 | if keys.f and Player:GetMouse().Target and Anim=='None' then | |
| 1175 | Hum:MoveTo(Player:GetMouse().Hit.p,Player:GetMouse().Target) | |
| 1176 | elseif (keys.q or keys.e) and LaserOn then | |
| 1177 | local pick=keys.q and 'q' or 'e' | |
| 1178 | repeat | |
| 1179 | local ofs=(pick=='q' and LArm or RArm).CFrame*ca(90,0,0) | |
| 1180 | if pick=='q' and keys.e then pick='e' | |
| 1181 | elseif pick=='e' and keys.q then pick='q' end | |
| 1182 | local part=iPart{Char,0.2,0.5,0.2,sc=Scale,co=CC[mran(2,3)],an=true,ma=Mat} iNew{'CylinderMesh',part}
| |
| 1183 | Projectile(ofs,2*Scale,part,ca(-90,0,0),function(hit,pos) | |
| 1184 | AOEFind(pos,Scale*2,function(Hum,v) Damage(Hum) end) | |
| 1185 | end, | |
| 1186 | function(pos) | |
| 1187 | for i=1,5 do local cf=cn(pos)*ca(0,mran(-180,180),mran(-95,95)) MeshEffect(8,cf,cf*cn(0,Scale*2.2,0),v3(0.07,0.3,0.07)*Scale,v3(0.4,3,0.4)*Scale,0.2,1,CC[mran(2,3)],as.cone) end | |
| 1188 | MeshEffect(8,cn(pos),nil,v3(0.1,0.1,0.1)*Scale,v3(3,3,3)*Scale,0.2,1,CC[mran(2,3)],'Sphere') part:Remove() end) | |
| 1189 | wait((keys.q and keys.e) and 0.2 or 0.4) | |
| 1190 | until not Button or (not keys.q and not keys.e) | |
| 1191 | elseif 'swag'=='sweg' then | |
| 1192 | end | |
| 1193 | end) | |
| 1194 | Player:GetMouse().Button1Up:connect(function() | |
| 1195 | Button=false | |
| 1196 | end) | |
| 1197 | ||
| 1198 | WalkAnim=0 | |
| 1199 | Walking=false | |
| 1200 | WalkMulp=1 | |
| 1201 | WalkMax=16 | |
| 1202 | Hum.WalkSpeed=18 | |
| 1203 | tWS={1,1,1,1,1,1,1}
| |
| 1204 | ||
| 1205 | Marbler=0 | |
| 1206 | local cou=0 | |
| 1207 | while Char.Parent do | |
| 1208 | cou=cou+1 | |
| 1209 | --if cou%2==0 then print(cou) end | |
| 1210 | if Hum.Health>0 then | |
| 1211 | if Torso.Velocity.y>5 then Torso.Velocity=v3(Torso.Velocity.x,5,Torso.Velocity.z) end | |
| 1212 | Walking=v3(Torso.Velocity.x,0,Torso.Velocity.z).magnitude>Hum.WalkSpeed-2 and true or false | |
| 1213 | if Walking and LegAnim=='None' then | |
| 1214 | WalkAnim=WalkAnim+WalkMulp | |
| 1215 | end | |
| 1216 | if WalkAnim>0 and not Walking then | |
| 1217 | WalkAnim=WalkAnim-1 | |
| 1218 | elseif WalkAnim<0 and not Walking then | |
| 1219 | WalkAnim=WalkAnim+1 | |
| 1220 | end | |
| 1221 | if math.abs(WalkAnim)>=WalkMax then WalkMulp=WalkMulp*-1 end | |
| 1222 | local WalkAdj=26 | |
| 1223 | Neck.C0=Torso.CFrame:toObjectSpace(pHead.CFrame) | |
| 1224 | if ArmAnim=='None' then | |
| 1225 | SetWeld(wLSho,0,WalkAnim,WalkMax,Oa,Ob,Oa,v3(-WalkAdj*1.5,0,-10),1) | |
| 1226 | SetWeld(wLArm,0,WalkAnim,WalkMax,Oc,Od,Oc,v3(10+(WalkAnim>0 and WalkAdj or 0),0,10),1) | |
| 1227 | SetWeld(wRSho,0,WalkAnim,WalkMax,Oe,Of,Oe,v3(WalkAdj*1.5,0,10),1) | |
| 1228 | SetWeld(wRArm,0,WalkAnim,WalkMax,Og,Oh,Og,v3(10+(WalkAnim>0 and WalkAdj or 0),0,-10),1) | |
| 1229 | end | |
| 1230 | if LegAnim=='None' then | |
| 1231 | SetWeld(wLThi,0,WalkAnim,WalkMax,Oi,Oj,Oi,v3(15+WalkAdj,0,-5),1) | |
| 1232 | SetWeld(wLLeg,0,WalkAnim,WalkMax,Ok,Ol,Ok,v3(-15+(WalkAnim>0 and -WalkAdj or 0),0,5),1) | |
| 1233 | SetWeld(wRThi,0,WalkAnim,WalkMax,Om,On,Om,v3(15-WalkAdj,0,5),1) | |
| 1234 | SetWeld(wRLeg,0,WalkAnim,WalkMax,Oo,Op,Oo,v3(-15+(WalkAnim<0 and WalkAdj or 0),0,-5),1) | |
| 1235 | end | |
| 1236 | --[[ | |
| 1237 | for i,v in pairs(Marble) do | |
| 1238 | v[1].C0=v[1].C0*ca(MarbleSpeed*v[2],MarbleSpeed*v[3],MarbleSpeed*v[4]) | |
| 1239 | Marbler=Marbler+(MarbleSpeed*v[2]) | |
| 1240 | if Marbler>MarbleMax then | |
| 1241 | v[2]=v[2]*-1 | |
| 1242 | v[3]=v[3]*-1 | |
| 1243 | v[4]=v[4]*-1 | |
| 1244 | end | |
| 1245 | end --]] | |
| 1246 | if Anim=='Follow' and Target and Target:findFirstChild'Torso' and not BG.maxTorque~=v3(1,1,1)/0 then | |
| 1247 | Hum:MoveTo(Target.Torso.CFrame*cn(2.5*Scale,0,5*Scale).p,Target.Torso) | |
| 1248 | end | |
| 1249 | if Grabbing and (not Grabbing.Part1 or not Grabbing.Part1.Parent or Grabbing.Part1.Parent:findFirstChild'Humanoid'==nil or Grabbing.Part1.Parent.Humanoid.Health<1) then | |
| 1250 | Grabbing:Remove() Grabbing=nil | |
| 1251 | end | |
| 1252 | end--hleat | |
| 1253 | --DoLoop Package | |
| 1254 | for i,v in pairs(LoopFunctions) do | |
| 1255 | v[2]=v[2]+1 | |
| 1256 | v[3](v[2]/v[1]) | |
| 1257 | if v[1]<=v[2] then LoopFunctions[i]=nil end | |
| 1258 | end | |
| 1259 | local ws=18 | |
| 1260 | for i=1,#tWS do ws=ws*tWS[i] end | |
| 1261 | Hum.WalkSpeed=ws | |
| 1262 | if Hum.MaxHealth~=8000 then Hum.MaxHealth=8000 Hum.Health=8000 end | |
| 1263 | Hum.Health=Hum.Health+0.1 | |
| 1264 | wait(0.03) | |
| 1265 | end | |
| 1266 | ChatConnection:disconnect() | |
| 1267 | game:service'Debris':AddItem(script,0.5) | |
| 1268 | script.Disabled=true |