twwrergeg

CharacterController (Aurelia)

Mar 9th, 2026
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.72 KB | None | 0 0
  1. local Character = script.Parent
  2. local CharManager = require(Character:WaitForChild("CharacterManager"))
  3.  
  4. local PlayerDataStore = game:GetService("DataStoreService"):GetDataStore("PlayerDataStore")
  5. local Player = game.Players:GetPlayerFromCharacter(Character)
  6. local DataStoreInfo = PlayerDataStore:GetAsync(Player.UserId)
  7.  
  8. local Humanoid = Character:WaitForChild("Humanoid")
  9. local RepStorage = game:GetService("ReplicatedStorage")
  10. local Remotes = RepStorage:WaitForChild("Assets"):WaitForChild("Remotes")
  11. local LootHandler = require(RepStorage.Assets.Modules.LootTableHandler)
  12. local RollAnimation = "rbxassetid://130673348041924"
  13. local FillFlaskAnimation = "rbxassetid://72763843965912"
  14. local HealAnimation = "rbxassetid://79998607658051"
  15. local ParryAnimation = "rbxassetid://110939892397353"
  16. local ChestAnimation = RepStorage.Assets.PreloadedAnimations.OpenChest
  17. local ChestAnimationTrack = Humanoid:LoadAnimation(ChestAnimation)
  18. ChestAnimationTrack:Play()
  19.  
  20. local SprintAnimation = RepStorage.Assets.PreloadedAnimations.Sprint
  21. local SprintAnimationTrack = Humanoid:LoadAnimation(SprintAnimation)
  22.  
  23. local Dead = false
  24. Character:SetAttribute("Sprinting",false)
  25.  
  26. local NumberCtags = 0
  27. local CTags = {
  28.  
  29. }
  30. local ChestsOpened = {}
  31.  
  32. local function ExchangeMalks(Value)
  33. CharManager.GiveMalks(Value)
  34. local Sound = Instance.new("Sound")
  35. Sound.SoundId = "rbxassetid://5613553529"
  36. Sound.Parent = Character.HumanoidRootPart
  37. Sound:Play()
  38. game.Debris:AddItem(Sound,1)
  39. local PlayerData = PlayerDataStore:GetAsync(Player.UserId)
  40. PlayerData.Malks += Value
  41. print(PlayerData.Malks)
  42. PlayerDataStore:UpdateAsync(Player.UserId, function(oldData)
  43. return PlayerData
  44. end)
  45. end
  46.  
  47.  
  48.  
  49. local function Wipe(Player)
  50.  
  51.  
  52. local WipeAnimation = Character.Humanoid:LoadAnimation(RepStorage.Assets.PreloadedAnimations.Wipe)
  53. WipeAnimation:Play()
  54.  
  55. Character.RagdollTrigger.Value = false
  56.  
  57. local Break1 = Instance.new("Sound")
  58. Break1.SoundId = "rbxassetid://9113546532"
  59. Break1.Parent = Character.HumanoidRootPart
  60.  
  61. local WipeSound = game.ReplicatedStorage.Assets.Sounds.Wipe:Clone()
  62. WipeSound.Parent = Character.HumanoidRootPart
  63. WipeSound:Play()
  64. game.Debris:AddItem(WipeSound,10)
  65.  
  66. local Break2 = Instance.new("Sound")
  67. Break2.SoundId = "rbxassetid://18507374738"
  68. Break2.Parent = Character.HumanoidRootPart
  69. for _,Part in pairs(Character:GetDescendants()) do
  70. if Part:IsA("BasePart") then
  71. Part.CanCollide = false
  72. Part.Anchored = false
  73.  
  74. end
  75.  
  76.  
  77. end
  78.  
  79. local PlayerData = PlayerDataStore:GetAsync(Player.UserId)
  80.  
  81. PlayerData = {
  82. ["Lives"] = 3,
  83. ["Weapon"] = "Fists",
  84. ["Malks"] = 0,
  85. ["AttunementSlots"] = 2,
  86. ["CurrentArea"] = "Overworld",
  87. ["Spells"] = {
  88.  
  89.  
  90. }
  91. }
  92. PlayerDataStore:SetAsync(Player.UserId,PlayerData)
  93.  
  94. Character.RagdollTrigger.Value = false
  95.  
  96. Character.HumanoidRootPart.Anchored = true
  97.  
  98.  
  99. task.delay(1.5,function()
  100. Character.RagdollTrigger.Value = false
  101. Break1:Play()
  102. for _,Part in pairs(Character:GetDescendants()) do
  103. if Part:IsA("BasePart") then
  104.  
  105.  
  106. end
  107. end
  108. end)
  109.  
  110. task.delay(3,function()
  111. Character.RagdollTrigger.Value = false
  112. Break2:Play()
  113. for _,Part in pairs(Character:GetDescendants()) do
  114. if Part:IsA("Clothing") then
  115. Part:Destroy()
  116. end
  117. if Part:IsA("Accessory") then
  118. Part:Destroy()
  119. end
  120. if Part:IsA("Decal") then
  121. Part:Destroy()
  122. end
  123. if Part:IsA("ParticleEmitter") then
  124. Part.Enabled = false
  125. end
  126. if Part:IsA("SpecialMesh") then
  127. Part:Destroy()
  128. end
  129. if Part:IsA("BasePart") then
  130. Part.Material = Enum.Material.Neon
  131. Part.Color = Color3.fromRGB(253, 234, 141)
  132. game.TweenService:Create(Part,TweenInfo.new(2), {Transparency = 1,}):Play()
  133. end
  134. end
  135. end)
  136. end
  137.  
  138.  
  139. local function GiveLives()
  140. local RaceAppearance = require(RepStorage.Assets.Modules.RaceAppearanceHandler)
  141.  
  142. for _,Object in pairs(Character:GetDescendants()) do
  143. if Object:IsA("Accessory") then
  144. Object:Destroy()
  145. end
  146. if Object:IsA("Decal") then
  147. Object:Destroy()
  148. end
  149. end
  150.  
  151. RaceAppearance.SetRaceAppearance(Character,false, "Etherborn")
  152.  
  153. local Lives = DataStoreInfo.Lives or 3
  154. CharManager.SetStat("Lives",Lives)
  155. Character:SetAttribute("Lives",Lives)
  156.  
  157. local Malks = DataStoreInfo.Malks or 25
  158. CharManager.SetStat("Malks",Malks)
  159. Character:SetAttribute("Malks",Malks)
  160. end
  161.  
  162. local function Death()
  163. if Dead == false then
  164. Dead = true
  165. Remotes.ShowDeathMessage:FireClient(Player,CTags)
  166.  
  167. Player.Character.Humanoid.Health = 0
  168.  
  169. if Player.Character:GetAttribute("InCombat") == true and Character:GetAttribute("Protection") == false then
  170. DataStoreInfo.Lives = DataStoreInfo.Lives - 1
  171. ExchangeMalks(-math.round(CharManager.GetStat("Malks") / 2.5))
  172. if DataStoreInfo.Lives == 0 and game.Workspace:GetAttribute("WorldType") ~= "Whirlpool" then
  173.  
  174. game["Teleport Service"]:Teleport(89324147654629,Player)
  175.  
  176. local PlayerDataStore = game:GetService("DataStoreService"):GetDataStore("PlayerDataStore")
  177. local DataStoreInfo = PlayerDataStore:GetAsync(Player.UserId)
  178. DataStoreInfo.CurrentArea = "Whirlpool"
  179.  
  180. PlayerDataStore:UpdateAsync(Player.UserId,function(oldData)
  181. return DataStoreInfo
  182. end)
  183.  
  184.  
  185. else
  186. local DataStoreInfo = PlayerDataStore:GetAsync(Player.UserId)
  187. DataStoreInfo.Lives = DataStoreInfo.Lives - 1
  188. PlayerDataStore:UpdateAsync(Player.UserId,function(oldData)
  189. return DataStoreInfo
  190. end)
  191. end
  192.  
  193. if Player.Character:GetAttribute("Permadeath") == true then
  194. Wipe(Player)
  195. end
  196. end
  197.  
  198. end
  199.  
  200. end
  201.  
  202. local function Roll(Player)
  203. if Player == game.Players:GetPlayerFromCharacter(Character) then
  204. CharManager.Dodge()
  205. end
  206. end
  207.  
  208. local function Parry(Player)
  209. if Player == game.Players:GetPlayerFromCharacter(Character) then
  210. CharManager.Parry()
  211. end
  212. end
  213.  
  214.  
  215.  
  216. local function CombatTag(Enemy,Time,IsInfinite)
  217. if CTags[Enemy] == nil then
  218. CTags[Enemy] = {
  219. Name = Enemy.Name,
  220. Time = Time,
  221. Applied = tick(),
  222. LastTimeReduction = tick(),
  223. Infinite = IsInfinite or false
  224. }
  225. NumberCtags += 1
  226. else
  227. CTags[Enemy].Time += 15
  228. if CTags[Enemy].Time > 25 then
  229. CTags[Enemy].Time = 25
  230. end
  231. end
  232. end
  233.  
  234. local function CalculateIntensity()
  235. local CurrentIntensity = 0
  236. for Enemy,CombatData in pairs(CTags) do
  237. CurrentIntensity += 1
  238. end
  239. CurrentIntensity += Character:GetAttribute("Adrenaline") / 10
  240. if CharManager.GetStat("Health") < CharManager.GetStat("MaxHealth") / 2 then
  241. CurrentIntensity += 1
  242. end
  243. Character:SetAttribute("Intensity", CurrentIntensity)
  244. end
  245.  
  246. local function StartSprinting()
  247. if Character:GetAttribute("Sprinting") == false then
  248. if CharManager.GetStat("M1sEnabled") == true then
  249. local WeaponStyle = CharManager.GetStat("AttackType")
  250. local CombatModule = require(RepStorage:WaitForChild("Assets"):WaitForChild("CombatStyles"):WaitForChild(WeaponStyle))
  251. CombatModule.PlaySprintAnimation(Character)
  252. end
  253.  
  254. Character:SetAttribute("Sprinting",true)
  255. local MaxMomentum = CharManager.GetStat("MaxMomentum") or 100
  256.  
  257. task.delay(0.15,function()
  258. SprintAnimationTrack:Play()
  259. for Momentum = 1, MaxMomentum do
  260.  
  261.  
  262. SprintAnimationTrack:AdjustSpeed(Humanoid.WalkSpeed / 21)
  263. CharManager.SetStat("Momentum",Momentum)
  264. Character.Humanoid.WalkSpeed = 17 * (1 + (CharManager.GetStat("Adrenaline") * 0.015)) + (Momentum / 8)
  265.  
  266.  
  267. task.wait(0.01)
  268.  
  269. if Character:GetAttribute("Sprinting") == false then
  270. SprintAnimationTrack:Stop(0.25)
  271. if Character.Humanoid.WalkSpeed ~= 10 or Character.Humanoid.WalkSpeed ~= 0 then
  272. Character.Humanoid.WalkSpeed = 16 * (1 + (CharManager.GetStat("Adrenaline") * 0.015))
  273. end
  274. return
  275. end
  276. end
  277. end)
  278. end
  279. end
  280.  
  281. local function EndSprinting()
  282. if Character:GetAttribute("Sprinting") == true then
  283. Character:SetAttribute("Sprinting",false)
  284. SprintAnimationTrack:Stop()
  285. CharManager.SetStat("Momentum",0)
  286. Character.Humanoid.WalkSpeed = 16 * (1 + (CharManager.GetStat("Adrenaline") * 0.015))
  287.  
  288. local WeaponStyle = CharManager.GetStat("AttackType")
  289. local CombatModule = require(RepStorage:WaitForChild("Assets"):WaitForChild("CombatStyles"):WaitForChild(WeaponStyle))
  290. CombatModule.EndSprintAnimation(Character)
  291. end
  292. end
  293.  
  294. local function UpdateCombatTags()
  295. if lastIndexedHealth and Character:GetAttribute("Health") < lastIndexedHealth then
  296. EndSprinting()
  297. end
  298.  
  299. lastIndexedHealth = CharManager.GetStat("Health")
  300.  
  301.  
  302. Character:SetAttribute("Malks",CharManager.GetStat("Malks"))
  303. Character:SetAttribute("Adrenaline",CharManager.GetStat("Adrenaline"))
  304.  
  305. local DefaultSpeed = Character:GetAttribute("CurrentBaseSpeed")
  306.  
  307. if Character.Humanoid.WalkSpeed == DefaultSpeed or Character.Humanoid.WalkSpeed >= DefaultSpeed and not Character:GetAttribute("Sprinting") then
  308. Character.Humanoid.WalkSpeed = DefaultSpeed * (1 + (CharManager.GetStat("Adrenaline") * 0.015))
  309. end
  310.  
  311. if tick() - CharManager.GetStat("LastStaminaConsumption") >= 3 then
  312. CharManager.SetStat("Stamina",CharManager.GetStat("Stamina") + 0.35)
  313. if CharManager.GetStat("Stamina") >= CharManager.GetStat("MaxStamina") then
  314. CharManager.SetStat("Stamina", CharManager.GetStat("MaxStamina"))
  315. end
  316. end
  317. if tick() - CharManager.GetStat("LastM1Landed") >= 4 then
  318. CharManager.SetStat("Adrenaline",CharManager.GetStat("Adrenaline") - 0.085)
  319. if CharManager.GetStat("Adrenaline") <= 0 then
  320. CharManager.SetStat("Adrenaline",0)
  321. end
  322. end
  323. Character:SetAttribute("Stamina",CharManager.GetStat("Stamina"))
  324. Character:SetAttribute("MaxStamina",CharManager.GetStat("MaxStamina"))
  325. for Enemy,CombatData in pairs(CTags) do
  326. if Enemy == nil then
  327. CTags[Enemy] = nil
  328. NumberCtags -= 1
  329.  
  330. end
  331. if tick() - CombatData.LastTimeReduction >= 1 and not CombatData.Infinite then
  332.  
  333. CombatData.Time -= 1
  334. CombatData.LastTimeReduction = tick()
  335. end
  336. if CombatData.Time <= 0 then
  337. CTags[Enemy] = nil
  338. NumberCtags -= 1
  339.  
  340. end
  341. if Enemy.Humanoid.Health <= 0 then
  342. CTags[Enemy] = nil
  343. NumberCtags -= 1
  344. end
  345.  
  346. if NumberCtags <= 0 then
  347. NumberCtags = 0
  348. CharManager.SetStat("InCombat",false)
  349. Character:SetAttribute("InCombat", false)
  350. CharManager.SetStat("Adrenaline", 0)
  351. elseif NumberCtags > 0 then
  352. CharManager.SetStat("InCombat",true)
  353.  
  354. end
  355. --print(NumberCtags .. " With time..." .. CombatData.Time)
  356. end
  357. end
  358.  
  359.  
  360.  
  361. local function Heal(Player)
  362. if Player == game.Players:GetPlayerFromCharacter(Character) and CharManager.GetStat("EtherFlaskUses") > 0 then
  363. local Connection = nil
  364. local StartHealth = CharManager.GetStat("Health")
  365. local Cancelled = false
  366.  
  367.  
  368.  
  369. Character.Humanoid.WalkSpeed = 0
  370.  
  371. local Flask = game.ServerStorage.ServerEssentials.EtherFlask:Clone()
  372.  
  373. -- Store original liquid size for calculations
  374. local originalLiquidSize = Flask.Liquid.Size
  375.  
  376.  
  377. -- Make the liquid of the flask's Y size lower proportional to EtherFlaskUses / MaxEtherFlaskUses
  378. local fillRatio = CharManager.GetStat("EtherFlaskUses") / CharManager.GetStat("MaxEtherFlaskUses")
  379. Flask.Liquid.Size = Vector3.new(Flask.Liquid.Size.X, originalLiquidSize.Y * fillRatio, Flask.Liquid.Size.Z)
  380.  
  381. -- Position the liquid at the bottom of the bottle
  382. Flask.Bottle.LiquidWeld2.Enabled = false
  383. Flask.Label.LiquidWeld.Enabled = false
  384.  
  385. -- Calculate the bottom position of the bottle and position liquid there
  386. local bottleBottom = Flask.Bottle.Position - Vector3.new(0, Flask.Bottle.Size.Y / 2, 0)
  387. local liquidBottomPosition = bottleBottom + Vector3.new(0, Flask.Liquid.Size.Y / 2, 0)
  388. Flask.Liquid.Position = liquidBottomPosition
  389.  
  390. Flask.Bottle.LiquidWeld2.Enabled = true
  391. Flask.Label.LiquidWeld.Enabled = true
  392.  
  393. local Motor6D = Instance.new("Motor6D")
  394. Motor6D.Part0 = Character["Right Arm"]
  395. Motor6D.Part1 = Flask.Bottle
  396. Motor6D.Parent = Character["Right Arm"]
  397.  
  398. Flask.Parent = Character
  399. Flask.Bottle.CFrame = Character["Right Arm"].CFrame * CFrame.new(0,0,0)
  400.  
  401. local Animation = Instance.new("Animation")
  402. Animation.AnimationId = HealAnimation
  403. local Animator = Character.Humanoid.Animator
  404. local AnimationTrack = Animator:LoadAnimation(Animation)
  405. AnimationTrack:Play()
  406.  
  407. Connection = game:GetService("RunService").Heartbeat:Connect(function()
  408. if StartHealth > CharManager.GetStat("Health") then
  409. Cancelled = true
  410. Flask:Destroy()
  411. Motor6D:Destroy()
  412. game.Debris:AddItem(AnimationTrack,0.1)
  413. AnimationTrack:Stop()
  414. end
  415. end)
  416.  
  417. task.delay(2.1,function()
  418. if Cancelled == true then return end
  419. print("Healing")
  420. CharManager.SetStat("Health",CharManager.GetStat("Health") + 125)
  421.  
  422. Character:SetAttribute("Health",CharManager.GetStat("Health"))
  423. Character.Humanoid.WalkSpeed = 16
  424. if Character:GetAttribute("InCombat") == false then
  425. local FilledFlask = false
  426. for _,InteractionPoints in workspace.InteractionPoints:GetChildren() do
  427. if InteractionPoints:IsA("BasePart") then
  428. if (InteractionPoints.Position - Player.Character.HumanoidRootPart.Position).Magnitude < 10 then
  429. if InteractionPoints:GetAttribute("Type") == "FillFlask" then
  430. CharManager.SetStat("EtherFlaskUses", CharManager.GetStat("MaxEtherFlaskUses"))
  431. FilledFlask = true
  432.  
  433. end
  434. end
  435. end
  436. end
  437. if FilledFlask == false then
  438. CharManager.SetStat("EtherFlaskUses", CharManager.GetStat("EtherFlaskUses") - 1)
  439. end
  440. else
  441. CharManager.SetStat("EtherFlaskUses", CharManager.GetStat("EtherFlaskUses") - 1)
  442. end
  443. end)
  444.  
  445.  
  446.  
  447. AnimationTrack.Stopped:Connect(function()
  448. Flask:Destroy()
  449. Motor6D:Destroy()
  450. game.Debris:AddItem(AnimationTrack,0.1)
  451. Connection:Disconnect()
  452. end)
  453. end
  454. end
  455.  
  456. local function SetCurrentWeapon(Player,Style)
  457. if Player == game.Players:GetPlayerFromCharacter(Character) then
  458. local Style = tostring(Style)
  459. local CombatStyle = game.ReplicatedStorage.Assets.CombatStyles:FindFirstChild(Style)
  460. print("Querying Equipping")
  461.  
  462. if CombatStyle then
  463. print("Equipping")
  464. print(Style, CombatStyle.Name)
  465. local CombatModule = require(RepStorage:WaitForChild("Assets"):WaitForChild("CombatStyles"):WaitForChild(CombatStyle.Name))
  466. CombatModule.SetAsCurrentWeapon(Character)
  467. local PlayerData = PlayerDataStore:GetAsync(Player.UserId)
  468. PlayerData.Weapon = tostring(Style)
  469.  
  470. PlayerDataStore:UpdateAsync(Player.UserId, function(oldData)
  471. return PlayerData
  472. end)
  473. print(PlayerData.Weapon)
  474. end
  475. end
  476. end
  477.  
  478. local function EquipWeapon(Player)
  479. if Player == game.Players:GetPlayerFromCharacter(Character) then
  480. if CharManager.GetStat("M1sEnabled") == false then
  481. local CombatStyle = CharManager.GetStat("AttackType")
  482. local CombatModule = require(RepStorage:WaitForChild("Assets"):WaitForChild("CombatStyles"):WaitForChild(CombatStyle))
  483. CombatModule.Equip(Character)
  484. print(CombatStyle)
  485. elseif CharManager.GetStat("M1sEnabled") == true then
  486. local CombatStyle = CharManager.GetStat("AttackType")
  487. local CombatModule = require(RepStorage:WaitForChild("Assets"):WaitForChild("CombatStyles"):WaitForChild(CombatStyle))
  488. CombatModule.Unequip(Character)
  489. print(CombatStyle)
  490. end
  491. end
  492. end
  493.  
  494. local function M1(Player)
  495. if Player == game.Players:GetPlayerFromCharacter(Character) then
  496. EndSprinting()
  497. local CombatStyle = CharManager.GetStat("AttackType")
  498.  
  499. local CombatModule = require(RepStorage:WaitForChild("Assets"):WaitForChild("CombatStyles"):WaitForChild(CombatStyle))
  500. CombatModule.Swing(Character)
  501. end
  502. end
  503.  
  504. local function CriticalAttack(Player)
  505. if Player == game.Players:GetPlayerFromCharacter(Character) then
  506.  
  507. local CombatStyle = CharManager.GetStat("AttackType")
  508. local CombatModule = require(RepStorage:WaitForChild("Assets"):WaitForChild("CombatStyles"):WaitForChild("CriticalAttacks"):WaitForChild(CombatStyle))
  509. CombatModule.CriticalAttack(Character)
  510. end
  511. end
  512.  
  513. local function ChangeMoveset(Player)
  514. if Player == game.Players:GetPlayerFromCharacter(Character) then
  515. CharManager.SetStat("AlternateMoveset",not CharManager.GetStat("AlternateMoveset"))
  516. local CombatStyle = CharManager.GetStat("AttackType")
  517. local CombatModule = require(RepStorage:WaitForChild("Assets"):WaitForChild("CombatStyles"):WaitForChild(CombatStyle))
  518. CombatModule.Unequip(Character)
  519. CombatModule.Equip(Character)
  520. end
  521. end
  522.  
  523. local function FillFlask(Player, Part)
  524. if Player.Character == script.Parent then
  525.  
  526. Character.HumanoidRootPart.Anchored = true
  527. CharManager.SetStat("Invulnerable", true)
  528. local Flask = game.ServerStorage.ServerEssentials.EtherFlask:Clone()
  529.  
  530. local Motor6D = Instance.new("Motor6D")
  531. Motor6D.Part0 = Character["Right Arm"]
  532. Motor6D.Part1 = Flask.Bottle
  533. Motor6D.Parent = Character["Right Arm"]
  534.  
  535. -- This is the same as the Heal() function.
  536. local originalLiquidSize = Flask.Liquid.Size
  537.  
  538. Flask.Parent = Character
  539. Flask.Bottle.CFrame = Character["Right Arm"].CFrame * CFrame.new(0,0,0)
  540.  
  541. local fillRatio = CharManager.GetStat("EtherFlaskUses") / CharManager.GetStat("MaxEtherFlaskUses")
  542. Flask.Liquid.Size = Vector3.new(Flask.Liquid.Size.X, originalLiquidSize.Y * fillRatio, Flask.Liquid.Size.Z)
  543.  
  544. local bottleBottom = Flask.Bottle.Position - Vector3.new(0, Flask.Bottle.Size.Y / 2, 0)
  545. local liquidBottomPosition = bottleBottom + Vector3.new(0, Flask.Liquid.Size.Y / 2, 0)
  546. Flask.Liquid.Position = liquidBottomPosition
  547.  
  548. local Animation = Instance.new("Animation")
  549. Animation.AnimationId = FillFlaskAnimation
  550. local Animator = Character.Humanoid.Animator
  551. local AnimationTrack = Animator:LoadAnimation(Animation)
  552. AnimationTrack:Play()
  553.  
  554. task.delay(1.5,function()
  555.  
  556.  
  557. CharManager.SetStat("EtherFlaskUses", CharManager.GetStat("MaxEtherFlaskUses"))
  558. local fillRatio = CharManager.GetStat("EtherFlaskUses") / CharManager.GetStat("MaxEtherFlaskUses")
  559. Flask.Liquid.Size = Vector3.new(Flask.Liquid.Size.X, originalLiquidSize.Y * fillRatio, Flask.Liquid.Size.Z)
  560.  
  561. local bottleBottom = Flask.Bottle.Position - Vector3.new(0, Flask.Bottle.Size.Y / 2, 0)
  562. local liquidBottomPosition = bottleBottom + Vector3.new(0, Flask.Liquid.Size.Y / 2, 0)
  563. Flask.Liquid.Position = liquidBottomPosition
  564. end)
  565. AnimationTrack.Stopped:Connect(function()
  566. CharManager.SetStat("Invulnerable", false)
  567. Character.HumanoidRootPart.Anchored = false
  568. Flask:Destroy()
  569. Motor6D:Destroy()
  570. game.Debris:AddItem(AnimationTrack,0.1)
  571. end)
  572. end
  573. end
  574.  
  575. local function OpenChest(Player,Chest)
  576. if not table.find(ChestsOpened,Chest) and Player.Character == script.Parent then
  577. if Chest:GetAttribute("Static") == true then
  578. game.Debris:AddItem(Chest, 15)
  579. end
  580. table.insert(ChestsOpened, Chest)
  581. local AnimationController = Chest.AnimationController
  582. local Animation = Instance.new("Animation")
  583. Animation.AnimationId = Chest.Animations.open.AnimationId
  584. local AnimationTrack = AnimationController.Animator:LoadAnimation(Animation)
  585.  
  586. ChestAnimationTrack:Play()
  587.  
  588. local Sound1 = Chest.Main.Open
  589. local Sound2 = Chest.Main.Impact
  590. local Sound3 = Chest.Main.Shine
  591. local Sound4 = Chest.Main.Coin
  592.  
  593. CharManager.SetStat("Invulnerable", true)
  594. Character.HumanoidRootPart.Anchored = true
  595. Character.HumanoidRootPart.CFrame = Chest.PositionPart.CFrame
  596.  
  597.  
  598.  
  599. task.wait(0.55)
  600.  
  601. Chest.Lock.Anchored = false
  602. Chest.Lock.Velocity = Chest.Lock.CFrame.LookVector * 15 + Vector3.new(0,15,0)
  603.  
  604. CharManager.SetStat("Invulnerable", false)
  605. Character.HumanoidRootPart.Anchored = false
  606.  
  607. ExchangeMalks(math.random(25,205))
  608.  
  609. local Loot = LootHandler.ReturnLoot("DefaultChestLootTable",8)
  610. for i = 1, #Loot do
  611. local Item = nil
  612. if game.ServerStorage.ServerEssentials.PossibleItems:FindFirstChild(tostring(Loot[i])) then
  613. Item = game.ServerStorage.ServerEssentials.PossibleItems:FindFirstChild(tostring(Loot[i]))
  614. else
  615. Item = game.ServerStorage.ServerEssentials.PossibleItems:FindFirstChild("Anomaly")
  616.  
  617. end
  618. local Clone = Item:Clone()
  619. Clone.Parent = Player.Backpack
  620. if Item.Name == "Anomaly" then
  621. Clone.ToolTip = "Error code 56: This item was given to you due to an item drop error, Drop ID: " .. tostring(Loot[i])
  622. end
  623. end
  624.  
  625. AnimationTrack:Play()
  626. Sound1:Play()
  627. Sound2:Play()
  628. Sound3:Play()
  629. Sound4:Play()
  630. end
  631. end
  632.  
  633. local function Forage(Plant)
  634. local PlantYield = Plant:GetAttribute("Foraging")
  635. local Item = game.ServerStorage.ServerEssentials.PossibleItems:FindFirstChild(tostring(PlantYield))
  636. if Item then
  637. local Animtrack = Character.Humanoid.Animator:LoadAnimation(game.ReplicatedStorage.Assets.PreloadedAnimations.Forage)
  638. Animtrack:Play()
  639. Animtrack.Stopped:Connect(function()
  640. Item:Clone().Parent = Player.Backpack
  641.  
  642. end)
  643. end
  644. end
  645.  
  646. Character:SetAttribute("CurrentBaseSpeed", 16)
  647. game["Run Service"].Heartbeat:Connect(UpdateCombatTags)
  648. Remotes.CombatTagEvent.Event:Connect(CombatTag)
  649. Remotes.Heal.OnServerEvent:Connect(Heal)
  650. Remotes.EquipWeapon.OnServerEvent:Connect(EquipWeapon)
  651. Remotes.ChangeMoveset.OnServerEvent:Connect(ChangeMoveset)
  652. Remotes.Critical.OnServerEvent:Connect(CriticalAttack)
  653. Remotes.M1.OnServerEvent:Connect(M1)
  654. Remotes.Roll.OnServerEvent:Connect(Roll)
  655. Remotes.Parry.OnServerEvent:Connect(Parry)
  656. Remotes.FillFlask.OnServerEvent:Connect(FillFlask)
  657. Remotes.SetCurrentWeapon.OnServerEvent:Connect(SetCurrentWeapon)
  658. Remotes.SetupPlayerWeapon.Event:Connect(SetCurrentWeapon)
  659. Remotes.ChestOpen.OnServerEvent:Connect(OpenChest)
  660. Remotes.Forage.OnServerEvent:Connect(Forage)
  661. Remotes.LocationOrb.OnServerEvent:Connect(function(Player, Location)
  662. local Module = require(game.ReplicatedStorage.Assets.Modules.LocationOrb)
  663. Module.SetPlayerLocation(Player,Location)
  664. end)
  665. Character.Humanoid.Died:Connect(Death)
  666.  
  667. local BlinkDebounce = false
  668.  
  669. task.delay(0.15,function()
  670. game["Run Service"].Heartbeat:Connect(function()
  671. local PartsImIn = workspace:GetPartsInPart(Character.HumanoidRootPart)
  672. for i,Part in pairs(PartsImIn) do
  673. if Part.Parent == workspace.Areas and Part:GetAttribute("Area") then
  674. if Part:GetAttribute("Area") ~= Character:GetAttribute("CurrentArea") then
  675.  
  676. Character:SetAttribute("CurrentArea", Part:GetAttribute("Area"))
  677. game.ReplicatedStorage.Assets.Remotes.NewArea:FireClient(game.Players:GetPlayerFromCharacter(Character), Part:GetAttribute("Area"))
  678. end
  679. end
  680. end
  681.  
  682.  
  683. if Character.Humanoid.Health <= 0 then
  684. local Eyes1 = Character.FakeHead.Eyes
  685. local Eyes2 = Character.FakeHead.BlinkingEyes
  686. local MiddleFrame = Character.FakeHead.BlinkingMiddleFrame
  687.  
  688. Eyes1.Transparency = 1
  689. MiddleFrame.Transparency = 1
  690. Eyes2.Transparency = 0
  691. end
  692. end)
  693. end)
  694.  
  695. Remotes.Sprint.OnServerEvent:Connect(function(Player, Sprinting)
  696. if Player.Character == Character then
  697. print("Sprint")
  698. if Sprinting == true then
  699. StartSprinting()
  700. else
  701. EndSprinting()
  702. end
  703. end
  704. end)
  705.  
  706. GiveLives()
  707. SetCurrentWeapon(DataStoreInfo.Weapon)
  708.  
  709.  
Advertisement
Add Comment
Please, Sign In to add comment