diff --git a/gamemodes/beatrun/gamemode/cl/JumpAnim.lua b/gamemodes/beatrun/gamemode/cl/JumpAnim.lua index e17324c0..4a4e282c 100644 --- a/gamemodes/beatrun/gamemode/cl/JumpAnim.lua +++ b/gamemodes/beatrun/gamemode/cl/JumpAnim.lua @@ -259,6 +259,7 @@ local events = { vaultkong = true, vaultonto = true, vaultover = true, + vaulthigh = true, vaultontohigh = true, ladderclimbright = true, meleeairstill = true @@ -1051,63 +1052,131 @@ eventsounds = { hangfoldedendhang = { [0.42] = "Handsteps.ConcreteHard", [0.05] = "Handsteps.ConcreteSoft", + [0.1] = "Cloth.MovementRun", [0.25] = "Handsteps.ConcreteRelease", + [0.4] = "Cloth.MovementRun", [0.15] = "Handsteps.ConcreteRelease", + [0.7] = "Cloth.MovementWalk", [0.5] = "Faith.StrainHard" }, hangfoldedheaveup = { - [0.1] = "Faith.StrainHard" + [0.1] = "Faith.StrainHard", + [0.05] = "Cloth.MovementRun", }, hangfoldedstart = { - [0.1] = "Faith.Impact" + [0.05] = "Cloth.Fall" }, hangheaveup = { - [0] = "Faith.StrainMedium" + [0] = "Faith.StrainMedium", + [0.01] = "Cloth.MovementWalk", + [0.3] = "WallrunRelease.Concrete", + [0.5] = "Cloth.MovementWalk", + [0.7] = "WallrunRelease.Concrete", + }, + hanghardstart = { + [0] = "Faith.Impact", + [0.05] = "Cloth.MovementRun", + [0.15] = "Cloth.MovementRun" + }, + hanghardstart2 = { + [0.01] = "Cloth.MovementRun", + [0.45] = "Cloth.MovementWalk", + [0.7] = "Cloth.MovementWalk" + }, + hanghardstartvertical = { + [0.6] = "Faith.StrainSoft", + [0.4] = "Cloth.MovementWalk", + [1] = "Cloth.MovementSneak" + }, + hangstrafeleft = { + [0.1] = "Cloth.MovementSneak", + [0.5] = "Cloth.MovementSneak" + }, + hangstraferight = { + [0.1] = "Cloth.MovementSneak", + [0.5] = "Cloth.MovementSneak" }, vaultontohigh = { [0.2] = "Vault", - [0.05] = "Handsteps.ConcreteHard", [0.25] = "Faith.StrainSoft", - [0.45] = "Footsteps.Concrete", [0.5] = "Cloth.MovementRun", [0.3] = "Cloth.VaultSwish" }, + vaultoverhigh = { + [0.1] = "Vault", + [0.05] = "Faith.StrainMedium", + [0.2] = "Cloth.VaultSwish", + [0.3] = "Cloth.SideStep", + [0.4] = "Cloth.MovementRun" + }, vaultonto = { - [0.1] = "Footsteps.Concrete", - [0.01] = "Handsteps.ConcreteHard", - [0.025] = "Cloth.MovementRun" + [0] = "Vault", + [0.075] = "Faith.StrainSoft", }, vaultkong = { - [0.025] = "Vault" + [0.025] = "Vault", + [0.075] = "Faith.StrainSoft", + [0.055] = "Cloth.VaultSwish" }, snatchscar = { [0.35] = "Melee.Foot", [0.05] = "Melee.ArmSwoosh", [0.1] = "Melee.LegSwoosh", + [0.01] = "Cloth.MovementRun", [0.15] = "Faith.StrainMedium" }, meleeslide = { - [0.025] = "Melee.LegSwoosh" + [0.025] = "Melee.LegSwoosh", + [0.055] = "Faith.StrainMedium", + [0.015] = "Cloth.MovementRun" + }, + meleeairhit = { + [0.015] = "Melee.LegSwoosh", + [0.01] = "Cloth.MovementRun", + [0.025] = "Faith.StrainHard" + }, + meleeair = { + [0.01] = "Cloth.MovementRun", + [0.25] = "Cloth.MovementWalk" + }, + meleeairstill = { + [0.025] = "Melee.LegSwoosh", + [0.065] = "Faith.StrainHard", + [0.015] = "Cloth.MovementRun" }, meleewrleft = { [0.035] = "Melee.LegSwoosh", + [0.025] = "Cloth.MovementRun", [0.075] = "Faith.StrainHard" }, meleewrright = { [0.035] = "Melee.LegSwoosh", + [0.025] = "Cloth.MovementRun", [0.075] = "Faith.StrainHard" }, + ladderenterbottom = { + [0.1] = "Cloth.MovementWalk", + [0.25] = "Handsteps.Ladder", + [0.12] = "Handsteps.Ladder", + [0.3] = "Footsteps.LadderMedium", + [0.4] = "Footsteps.LadderMedium" + }, ladderclimbhangstart = { [0] = "Footsteps.LadderHeavy", - [0.1] = "Land.Ladder" + [0.1] = "Land.Ladder", + [0.075] = "Handsteps.Ladder", + [0.06] = "Faith.Impact", + [0.05] = "Handsteps.Ladder", }, ladderclimbuplefthand = { [0] = "Release.Ladder", + [0.1] = "Cloth.MovementWalk", [0.15] = "Footsteps.LadderMedium", [0.2] = "Handsteps.Ladder" }, ladderclimbuprighthand = { [0] = "Release.Ladder", + [0.1] = "Cloth.MovementWalk", [0.15] = "Footsteps.LadderMedium", [0.2] = "Handsteps.Ladder" }, @@ -1115,18 +1184,28 @@ eventsounds = { [0.45] = "Release.Ladder", [0.1] = "Handsteps.Ladder", [0.5] = "Release.Ladder", - [0.15] = "Handsteps.Ladder" + [0.15] = "Handsteps.Ladder", + [0.3] = "Cloth.SideStep", + [0.5] = "Cloth.MovementWalk" }, ladderexittoprighthand = { [0.45] = "Release.Ladder", [0.1] = "Handsteps.Ladder", [0.5] = "Release.Ladder", - [0.15] = "Handsteps.Ladder" + [0.15] = "Handsteps.Ladder", + [0.3] = "Cloth.SideStep", + [0.5] = "Cloth.MovementWalk" + }, + diveslidestart = { + [0] = "Faith.ImpactSoft" }, jumpturnlandstand = { + [0] = "Cloth.RollCloth", [0.01] = "Cloth.BodyRollSwish", [0.25] = "Faith.StrainSoft", - [0.3] = "Cloth.BodyRoll" + [0.3] = "Cloth.Roll", + [0.35] = "Cloth.BodyRoll", + [0.45] = "Land.Concrete" } } @@ -1844,6 +1923,7 @@ local function JumpThink() BodyAnim:SetSequence("jumpturnland") ply:EmitSound("Cloth.FallShortHard") + ply:EmitSound("Cloth.Fall") ply:FaithVO("Faith.Impact") DoImpactBlur(6) end @@ -1975,8 +2055,9 @@ local function JumpThink() ply:EmitSound("Release." .. stepmat) timer.Simple(0.15, function() - ply:EmitSound("Footsteps." .. stepmat) + ply:EmitSound("Walk." .. stepmat) end) + end end end diff --git a/gamemodes/beatrun/gamemode/sh/Climb.lua b/gamemodes/beatrun/gamemode/sh/Climb.lua index e620ead0..205a94b0 100644 --- a/gamemodes/beatrun/gamemode/sh/Climb.lua +++ b/gamemodes/beatrun/gamemode/sh/Climb.lua @@ -38,7 +38,7 @@ local function ClimbingEnd(ply, mv, cmd) local trout = util.TraceHull(tr) if trout.Hit then - local trout = {} + trout = {} tr.output = trout local start = tr.start @@ -78,6 +78,8 @@ local function ClimbingThink(ply, mv, cmd) if ply:GetClimbing() == 5 then if mv:KeyPressed(IN_FORWARD) and ply:GetClimbingDelay() < CurTime() + 0.65 or mv:KeyDown(IN_FORWARD) and ply:GetClimbingDelay() < CurTime() then ParkourEvent("hangfoldedheaveup", ply) + ply.FootstepLand = false + timer.Simple(0.35, function() ply:PlayStepSound(1) end) ply:SetClimbing(6) ply:SetClimbingTime(0) @@ -159,6 +161,14 @@ local function ClimbingThink(ply, mv, cmd) ply:SetClimbing(0) ply:SetSafetyRollKeyTime(CurTime() + 0.1) ParkourEvent("hangjump", ply) + if SERVER then + ply:EmitSound("WallrunRelease.Concrete") + timer.Simple(0.025, function() + ply:EmitSound("WallrunRelease.Concrete") + ply:EmitSound("Handsteps.ConcreteRelease") + end) + ply:EmitSound("Cloth.MovementRun") + end if CLIENT and IsFirstTimePredicted() then lockang2 = false @@ -166,7 +176,7 @@ local function ClimbingThink(ply, mv, cmd) BodyLimitX = 90 BodyLimitY = 180 - local ang = ply:EyeAngles() + ang = ply:EyeAngles() ang.x = 0 ang.z = 0 BodyAnim:SetAngles(ang) @@ -174,7 +184,7 @@ local function ClimbingThink(ply, mv, cmd) ply:SendLua("lockang2=false lockang=false BodyLimitX=90 BodyLimitY=180 local ang=LocalPlayer():EyeAngles() ang.x=0 ang.z=0 BodyAnim:SetAngles(ang)") end - local ang = cmd:GetViewAngles() + ang = cmd:GetViewAngles() ang.x = math.min(ang.x, 0) ang = ang:Forward() ang:Mul(350) @@ -232,7 +242,11 @@ local function ClimbingThink(ply, mv, cmd) if not trout.Hit then ply:SetClimbing(2) + ply.FootstepLand = false ParkourEvent("climbheave", ply) + + timer.Simple(0.55, function() ply:PlayStepSound(1) end) + timer.Simple(0.95, function() ply:PlayStepSound(1) end) end end end @@ -250,6 +264,9 @@ local function ClimbingThink(ply, mv, cmd) -- local oldstart = tr.start -- local oldend = tr.endpos local start = mv:GetOrigin() + wallang:Forward() * 20 + Vector(0, 0, 100) + dir + local wallmat = trout.MatType + local handstepsoft = HANDSTEPS_SOFT_LUT[wallmat] or "ConcreteSoft" + tr.start = start tr.endpos = start - Vector(0, 0, 80) @@ -282,24 +299,27 @@ local function ClimbingThink(ply, mv, cmd) util.TraceHull(tr) - if not trout.Hit then - ply:SetClimbingEndOld(ply:GetClimbingEnd()) - ply:SetClimbing(isright and 4 or 3) - ply:SetClimbingStart(mv:GetOrigin()) - ply:SetClimbingEnd(mv:GetOrigin() + dir) - ply:SetClimbingTime(0) - - tr.start = mv:GetOrigin() + ply:GetClimbingAngle():Forward() * 20 + Vector(0, 0, 100) + dir - tr.endpos = tr.start - Vector(0, 0, 80) - - if isright then - ParkourEvent("hangstraferight", ply) - else - ParkourEvent("hangstrafeleft", ply) - end - - ply:SetClimbingDelay(CurTime() + 0.9) + if trout.Hit then return end + ply:SetClimbingEndOld(ply:GetClimbingEnd()) + ply:SetClimbing(isright and 4 or 3) + ply:SetClimbingStart(mv:GetOrigin()) + ply:SetClimbingEnd(mv:GetOrigin() + dir) + ply:SetClimbingTime(0) + + tr.start = mv:GetOrigin() + ply:GetClimbingAngle():Forward() * 20 + Vector(0, 0, 100) + dir + tr.endpos = tr.start - Vector(0, 0, 80) + + if isright then + ParkourEvent("hangstraferight", ply) + timer.Simple(0.4, function() ply:EmitSound("Handsteps." .. handstepsoft) end) + timer.Simple(0.9, function() ply:EmitSound("Handsteps." .. handstepsoft) end) + else + ParkourEvent("hangstrafeleft", ply) + timer.Simple(0.4, function() ply:EmitSound("Handsteps." .. handstepsoft) end) + timer.Simple(0.9, function() ply:EmitSound("Handsteps." .. handstepsoft) end) end + + ply:SetClimbingDelay(CurTime() + 0.9) end end end @@ -434,11 +454,14 @@ local function ClimbingCheck(ply, mv, cmd) ply:SetClimbingAngle(wallang) - local tr = ply.ClimbingTraceEnd - local trout = ply.ClimbingTraceEndOut + local wallmat = trout.MatType local upvalue = ply:GetWallrun() == 1 and Vector(0, 0, 90) or Vector(0, 0, 65) local plymins, plymaxs = ply:GetHull() + local handstepsoft = HANDSTEPS_SOFT_LUT[wallmat] or "ConcreteSoft" + local handstephard = HANDSTEPS_HARD_LUT[wallmat] or "ConcreteHard" + trout = ply.ClimbingTraceEndOut + tr = ply.ClimbingTraceEnd tr.start = mv:GetOrigin() + wallang:Forward() * 45 + upvalue tr.endpos = tr.start - Vector(0, 0, 90) tr.maxs = plymaxs @@ -498,8 +521,8 @@ local function ClimbingCheck(ply, mv, cmd) return end - local tr = ply.ClimbingTraceSafety - local trout = ply.ClimbingTraceSafetyOut + tr = ply.ClimbingTraceSafety + trout = ply.ClimbingTraceSafetyOut tr.filter = ply tr.start = endpos @@ -526,8 +549,6 @@ local function ClimbingCheck(ply, mv, cmd) if trout.Hit then return end -- local steep = trout.HitNormal:Distance(Vector(0, 0, 1)) > 0.01 - local tr = ply.ClimbingTraceSafety - local trout = ply.ClimbingTraceSafetyOut tr.start = mv:GetOrigin() tr.endpos = tr.start + Vector(0, 0, 75) @@ -537,8 +558,6 @@ local function ClimbingCheck(ply, mv, cmd) if trout.Hit then return end local origin = mv:GetOrigin() - local tr = ply.ClimbingTraceSafety - local trout = ply.ClimbingTraceSafetyOut tr.start = startpos tr.endpos = startpos @@ -619,12 +638,17 @@ local function ClimbingCheck(ply, mv, cmd) end local wr = ply:GetWallrun() + local wallrun = FOOTSTEPS_MAT_TYPE_TO_STR[wallmat] or "Concrete" -- local wrtime = ply:GetWallrunTime() - CurTime() -- local vel = mv:GetVelocity() if wr ~= 0 then ply:SetWallrun(0) - ply:EmitSound("Wallrun.Concrete") + ply:EmitSound("Wallrun." .. wallrun) + ply:EmitSound("Cloth.MovementRun") + timer.Simple(0.025, function() + ply:EmitSound("WallrunRelease.Concrete") + end) end local climbvalue = 1 @@ -650,9 +674,7 @@ local function ClimbingCheck(ply, mv, cmd) local folded = mv:GetVelocity().z < -400 if folded then - local tr = ply.ClimbingTraceSafety - local trout = ply.ClimbingTraceSafetyOut - local mins, maxs = ply:GetCollisionBounds() + mins, maxs = ply:GetCollisionBounds() mins.z = maxs.z * 0.25 tr.start = ply:GetClimbingEnd() @@ -678,16 +700,56 @@ local function ClimbingCheck(ply, mv, cmd) if folded then ply:SetClimbing(5) ply:SetClimbingDelay(CurTime() + 0.8) + local dmg + local info = DamageInfo() ParkourEvent("hangfoldedstart", ply) + if lastvel.z < -800 then + timer.Simple(0.1, function() ply:FaithVO("Faith.ImpactHard") end) + dmg = ply:Health() * 0.4 + info:SetDamage(dmg) + info:SetDamageType(DMG_FALL) + info:SetAttacker(game.GetWorld()) + info:SetInflictor(game.GetWorld()) + ply:TakeDamageInfo(info) + else + timer.Simple(0.1, function() ply:FaithVO("Faith.Impact") end) + if lastvel.z < -500 then + dmg = ply:Health() * 0.1 + info:SetDamage(dmg) + info:SetDamageType(DMG_FALL) + info:SetAttacker(game.GetWorld()) + info:SetInflictor(game.GetWorld()) + ply:TakeDamageInfo(info) + end + end + timer.Simple(0.12, function() ply:EmitSound("Handsteps." .. handstepsoft) end) + else local event = "climbhard" if wr == 1 then event = "climb" + timer.Simple(0.95, function() + if ply:GetClimbing() == 1 or ply:GetClimbing() == 2 then + ply:EmitSound("Handsteps." .. handstepsoft) + end + end) wallangc.x = -30 elseif lastvel.z < -200 then event = "climbhard2" + timer.Simple(0.05, function() ply:EmitSound("Handsteps." .. handstephard) end) + timer.Simple(0.7, function() ply:EmitSound("Handsteps." .. handstepsoft) end) + + if lastvel.z < -250 then + ply:FaithVO("Faith.Impact") + else + ply:FaithVO("Faith.ImpactSoft") + end + else + timer.Simple(0.15, function() + ply:EmitSound("Handsteps." .. handstephard) + end) end ParkourEvent(event, ply) @@ -695,14 +757,12 @@ local function ClimbingCheck(ply, mv, cmd) ply.wallang = wallang - if IsFirstTimePredicted() then - if CLIENT or game.SinglePlayer() then - timer.Simple(0.05, function() - ply:EmitSound("Bump.Concrete") - end) - end + if game.SinglePlayer() or CLIENT and IsFirstTimePredicted() then + timer.Simple(0.05, function() + ply:EmitSound("Bump.Concrete") + end) - ply:EmitSound("Handsteps.ConcreteHard") + ply:EmitSound("Handsteps." .. handstephard) ply:EmitSound("Cloth.FallShortMedium") if CLIENT and IsFirstTimePredicted() then @@ -766,4 +826,4 @@ hook.Add("SetupMove", "Climbing", function(ply, mv, cmd) if ply:GetClimbing() ~= 0 then ClimbingThink(ply, mv, cmd) end -end) \ No newline at end of file +end) diff --git a/gamemodes/beatrun/gamemode/sh/FreerunSysAll.lua b/gamemodes/beatrun/gamemode/sh/FreerunSysAll.lua index cd26f087..32c427d7 100644 --- a/gamemodes/beatrun/gamemode/sh/FreerunSysAll.lua +++ b/gamemodes/beatrun/gamemode/sh/FreerunSysAll.lua @@ -1,444 +1,451 @@ -local quakejump = CreateConVar("Beatrun_QuakeJump", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}) -local sidestep = CreateConVar("Beatrun_SideStep", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}) -local speedLimit = CreateConVar("Beatrun_SpeedLimit", 325, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}) - -CreateConVar("Beatrun_Disarm", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}, "", 0, 1) -CreateConVar("Beatrun_AllowOverdriveInMultiplayer", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}) - -local function Hardland(jt) - local ply = LocalPlayer() - ply.hardlandtime = CurTime() + 1 - - util.ScreenShake(Vector(0, 0, 0), 2, 2, 0.25, 0) - - BodyAnimCycle = 0 - - if not ply:GetDive() then - if jt then - if ply:GetMelee() == MELEE_DROPKICK then - jt = false - end - - DoJumpTurn(jt) - - BodyAnim:SetSequence("jumpturnflyidle") - else - BodyAnim:SetSequence("jumpcoilend") - end - end -end - -if game.SinglePlayer() and SERVER then - util.AddNetworkString("Beatrun_HardLand") -end - -if game.SinglePlayer() and CLIENT then - net.Receive("Beatrun_HardLand", function() - Hardland(net.ReadBool()) - end) -end - -hook.Add("PlayerStepSoundTime", "MEStepTime", function(ply, step, walking) - local sprint = ply:GetMEMoveLimit() < speedLimit:GetInt() - 25 - local stepmod = ply:GetStepRight() and 1 or -1 - local stepvel = 1.25 - local stepvel2 = 1 - - if BodyAnimArmCopy then - stepvel2 = 0 - end - - stepvel = stepvel - math.abs(ply:GetMEMoveLimit() / 100 - 1) * 0.33 - - local stepmod2 = 1 - local stepmod3 = 1 - - if not ply:UsingRH() then - stepmod2 = 0.25 - - if not ply:IsSprinting() then - stepmod3 = 0.25 - end - end - - if not ply:Crouching() and not walking then - if game.SinglePlayer() then - local intensity = ply:GetInfoNum("Beatrun_ViewbobIntensity", 20) / 20 - - intensity = sprint and intensity * 0.5 or intensity * 0.25 - - ply:ViewPunch(Angle(0.45 * stepmod2 * stepvel2, 0, 0.5 * stepmod * stepvel * stepmod3) * intensity) - elseif CLIENT and IsFirstTimePredicted() then - local intensity = ply:GetInfoNum("Beatrun_ViewbobIntensity", 20) / 20 - - intensity = sprint and intensity * 0.25 or intensity * 0.1 - - ply:CLViewPunch(Angle(0.45 * stepmod2 * stepvel2, 0, 0.5 * stepmod * stepvel * stepmod3) * intensity) - end - end - - local steptime = math.Clamp(750 / (ply:GetVelocity() * Vector(1, 1, 0)):Length() * 100, 200, 400) - - if ply:Crouching() then - steptime = steptime * 2 - end - - if ply:InOverdrive() then - steptime = steptime * 0.8 - end - - ply:SetStepRelease(CurTime() + steptime * 0.25 * 0.001) - - return steptime -end) - -hook.Add("PlayerFootstep", "MEStepSound", function(ply, pos, foot, sound, volume, filter, skipcheck) - ply:SetStepRight(not ply:GetStepRight()) - - if (ply:GetSliding() or CurTime() < ply:GetSafetyRollTime() - 0.5) and not skipcheck then return true end - if ply:GetMEMoveLimit() < 100 and ply:KeyDown(IN_FORWARD) and not ply.FootstepLand then return true end - - local mat = sound:sub(0, -6) - local newsound = FOOTSTEPS_LUT[mat] - - if mat == "player/footsteps/ladder" then return end - - newsound = newsound or "Concrete" - - ply.LastStepMat = newsound - - if game.SinglePlayer() then ply:SetNW2String("LastStepMat", newsound) end - - ply.FootstepReleaseLand = true - - if CLIENT or game.SinglePlayer() and not ply:Crouching() and not IsValid(ply:GetBalanceEntity()) then - ply:EmitSound("Footsteps." .. newsound) - ply:EmitSound("Cloth.MovementRun") - - if math.random() > 0.9 then ParkourEvent("step") end - end - - ply.LastFootstepSound = mat - - if not ply:Crouching() and ply:WaterLevel() > 0 then - ply:EmitSound("Footsteps.Water") - elseif ply:Crouching() and ply:WaterLevel() > 0 then - ply:EmitSound("Sneak.Water") - end - - if ply:InOverdrive() and ply:GetVelocity():Length() > 400 then ply:EmitSound("Footsteps.Spark") end - - if (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) and ply:Crouching() and not IsValid(ply:GetBalanceEntity()) then - local sneaksound = FOOTSTEPS_SNEAK_LUT[mat] - sneaksound = sneaksound or "Concrete" - - ply.LastStepMat = sneaksound - - ply:EmitSound("Sneak." .. sneaksound) - ply:EmitSound("Cloth.MovementSneak") - end - - if (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) and IsValid(ply:GetBalanceEntity()) then - ply:EmitSound("Footsteps.MetalPipe") - ply:EmitSound("Cloth.MovementWalk") - end - - if (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) and ply.FootstepLand then - local landsound = FOOTSTEPS_LAND_LUT[mat] or "Concrete" - - ply:EmitSound("Land." .. landsound) - - ply.FootstepLand = false - end - - hook.Run("PlayerFootstepME", ply, pos, foot, sound, volume, filter) - - return true -end) - -hook.Add("OnPlayerHitGround", "MELandSound", function(ply, water, floater, speed) - local vel = ply:GetVelocity() - vel.z = 0 - - ply.FootstepLand = true - ply.LastLandTime = CurTime() - - ply:ViewPunch(Angle(3, 0, 1.5) * speed * 0.0025) - - if SERVER and vel:Length() < 100 then - ply:PlayStepSound(1) - end - - ParkourEvent("land", ply) - - if ply:GetMelee() == MELEE_DROPKICK and ply:GetMeleeTime() < CurTime() and vel:Length() < 300 then - if CLIENT and IsFirstTimePredicted() then - Hardland(false) - elseif SERVER and game.SinglePlayer() then - net.Start("Beatrun_HardLand") - net.WriteBool(false) - net.Send(ply) - end - end - - if not ply:InOverdrive() and speed > 500 and speed < 750 and not ply:GetJumpTurn() and (ply:GetSafetyRollKeyTime() <= CurTime() or ply:GetCrouchJump()) then - ply:ViewPunch(Angle(10, -2, 5)) - ply:SetMESprintDelay(CurTime() + 0.5) - ply:SetMEMoveLimit(50) - - local jt = false - local eyedir = ply:EyeAngles() - eyedir.x = 0 - eyedir = eyedir:Forward() - - local vel = ply:GetVelocity() - vel.z = 0 - - if ply:GetCrouchJumpTime() < CurTime() and vel:GetNormalized():Dot(eyedir) < -0.75 and not ply:GetDive() then - jt = true - - ply:SetJumpTurn(true) - end - - if CLIENT and IsFirstTimePredicted() then - Hardland(jt) - elseif SERVER and game.SinglePlayer() then - net.Start("Beatrun_HardLand") - net.WriteBool(jt) - net.Send(ply) - end - end - - if SERVER and speed >= 500 and ply:GetJumpTurn() then - local dmg = ply:Health() * 0.1 - - if ply:Health() - dmg > 0 then - local info = DamageInfo() - info:SetDamage(dmg) - info:SetDamageType(DMG_FALL) - info:SetAttacker(game.GetWorld()) - info:SetInflictor(game.GetWorld()) - ply:TakeDamageInfo(info) - end - end -end) - -hook.Add("SetupMove", "MESetupMove", function(ply, mv, cmd) - local usingrh = ply:UsingRH() - local ismoving = (mv:KeyDown(IN_FORWARD) or not ply:OnGround() or ply:Crouching()) and not mv:KeyDown(IN_BACK) and ply:Alive() and (mv:GetVelocity():Length() > 50 or ply:GetMantle() ~= 0 or ply:Crouching()) - - if (CLIENT or game.SinglePlayer()) and CurTime() > (ply:GetStepRelease() or 0) and ply.FootstepReleaseLand then - local newsound = FOOTSTEPS_RELEASE_LUT[ply.LastFootstepSound] or "Concrete" - - if ply:WaterLevel() > 0 then - ply:EmitSound("Release.Water") - end - - ply:EmitSound("Release." .. newsound) - ply.FootstepReleaseLand = false - end - - if not ply:OnGround() and ply:GetClimbing() == 0 and mv:GetVelocity():Length() > 50 then - ply.FootstepLand = true - end - - if ply:GetRunSpeed() ~= speedLimit:GetInt() * ply:GetOverdriveMult() then - ply:SetRunSpeed(speedLimit:GetInt() * ply:GetOverdriveMult()) - end - - if not ply:GetMEMoveLimit() then - ply:SetMEMoveLimit(speedLimit:GetInt()) - ply:SetMESprintDelay(0) - ply:SetMEAng(0) - end - - if ply:KeyDown(IN_WALK) then - mv:SetForwardSpeed(mv:GetForwardSpeed() * 0.0065) - mv:SetSideSpeed(mv:GetSideSpeed() * 0.0065) - - ply:SetMEMoveLimit(150) - ply:SetMESprintDelay(0) - ply:SetMEAng(0) - end - - local ang = mv:GetAngles() - ang[1] = 0 - ang[3] = 0 - - local MEAng = math.Truncate(ang:Forward().x, 2) - local MEAngDiff = math.abs((MEAng - ply:GetMEAng()) * 100) - local weaponspeed = 150 - local activewep = ply:GetActiveWeapon() - - if not ply:UsingRH() then - weaponspeed = speedLimit:GetInt() + math.floor(325 - speedLimit:GetInt()) - end - - if (ismoving or ply:GetMantle() ~= 0) and ply:GetMESprintDelay() < CurTime() and (cmd:KeyDown(IN_SPEED) or ply:GetMantle() ~= 0 or not ply:OnGround() or (not ply:OnGround() or ply:GetMantle() ~= 0) and mv:GetVelocity().z > -450) then - local mult = 0.6 + math.abs(ply:GetMEMoveLimit() / (speedLimit:GetInt() - 25) - 1) - - if not ply:InOverdrive() and ply:GetMEMoveLimit() > (speedLimit:GetInt() - 100) then - mult = mult * 0.35 - end - - if ply:GetMEMoveLimit() < 160 then - mult = mult * ply:GetMEMoveLimit() / 1000 - end - - ply:SetMEMoveLimit(math.Clamp(ply:GetMEMoveLimit() + mult * ply:GetOverdriveMult() * 2, 0, speedLimit:GetInt() * ply:GetOverdriveMult())) - elseif not ismoving and (not ply:Crouching() or ply:GetCrouchJump()) or CurTime() < ply:GetMESprintDelay() and ply:OnGround() then - ply:SetMEMoveLimit(math.Clamp(ply:GetMEMoveLimit() - 40, weaponspeed, speedLimit:GetInt() * ply:GetOverdriveMult())) - end - - if MEAngDiff > 1.25 and ply:GetWallrun() == 0 then - local slow = MEAngDiff * 0.75 - ply:SetMEMoveLimit(math.max(ply:GetMEMoveLimit() - slow, 160)) - end - - if ply:OnGround() then - local stepheight = mv:GetOrigin().z - (ply.LastOrigin or vector_origin).z - - if stepheight > 1.5 then - ply:SetMEMoveLimit(math.Approach(ply:GetMEMoveLimit(), speedLimit:GetInt() - 75, FrameTime() * 100)) - elseif stepheight < -0.8 then - ply:SetMEMoveLimit(math.Approach(ply:GetMEMoveLimit(), speedLimit:GetInt() + 75, FrameTime() * 100)) - end - end - - ply.LastOrigin = mv:GetOrigin() - - if ply:GetSliding() then - ply:SetMEMoveLimit(150) - ply:SetMaxSpeed(200) - end - - mv:SetMaxClientSpeed(ply:GetMEMoveLimit()) - - ply:SetMEAng(MEAng) - - if sidestep:GetBool() and usingrh and activewep.GetSideStep and not activewep:GetSideStep() and CurTime() > ply:GetSlidingDelay() - 0.2 and ply:GetClimbing() == 0 and ply:OnGround() and not ply:Crouching() and not cmd:KeyDown(IN_FORWARD) and not cmd:KeyDown(IN_JUMP) and cmd:KeyDown(IN_ATTACK2) then - if mv:KeyDown(IN_MOVELEFT) then - activewep:SendWeaponAnim(ACT_TURNLEFT45) - activewep:SetSideStep(true) - - mv:SetVelocity(cmd:GetViewAngles():Right() * -(speedLimit:GetInt() * 1.8)) - - ply:ViewPunch(Angle(-3, 0, -4.5)) - - ParkourEvent("sidestepleft", ply) - - ply:EmitSound("Cloth.SideStep") - - activewep.SideStepDir = ang:Forward() - - if game.SinglePlayer() then - ply:PlayStepSound(1) - end - elseif mv:KeyDown(IN_MOVERIGHT) then - activewep:SendWeaponAnim(ACT_TURNRIGHT45) - activewep:SetSideStep(true) - - mv:SetVelocity(cmd:GetViewAngles():Right() * (speedLimit:GetInt() * 1.8)) - - ply:ViewPunch(Angle(-3, 0, 4.5)) - - ParkourEvent("sidestepright", ply) - - ply:EmitSound("Cloth.SideStep") - - activewep.SideStepDir = ang:Forward() - - if game.SinglePlayer() then - ply:PlayStepSound(1) - end - end - elseif usingrh and activewep.GetSideStep and activewep:GetSideStep() and activewep.SideStepDir then - local forwarddelta = activewep.SideStepDir:Dot(ang:Forward()) - - if forwarddelta > 0.35 then - ply:SetMEMoveLimit(speedLimit:GetInt()) - end - - if forwarddelta < 0.65 then - forwarddelta = 1 - else - forwarddelta = forwarddelta * 0.025 - end - - mv:SetForwardSpeed(mv:GetForwardSpeed() * forwarddelta) - mv:SetSideSpeed(mv:GetSideSpeed() * math.abs(forwarddelta - 1)) - - if mv:KeyPressed(IN_JUMP) and not quakejump:GetBool() and activewep:GetWasOnGround() and not ply:GetJumpTurn() and ply:GetViewModel():GetCycle() < 0.25 then - local vel = mv:GetVelocity() - vel:Mul(0.75) - vel.z = -speedLimit:GetInt() + 25 - - mv:SetVelocity(vel) - - activewep:SetWasOnGround(false) - end - end -end) - -if CLIENT then - -- local jumpseq = {ACT_VM_HAULBACK, ACT_VM_SWINGHARD} - - hook.Add("CreateMove", "MECreateMove", function(cmd) - local ply = LocalPlayer() - local hardland = CurTime() < (ply.hardlandtime or 0) - - if hardland and not ply:InOverdrive() then - cmd:RemoveKey(IN_ATTACK2) - cmd:SetForwardMove(cmd:GetForwardMove() * 0.01) - cmd:SetSideMove(cmd:GetSideMove() * 0.01) - end - - if (ply:InOverdrive() or ply:UsingRH() and ply:GetMoveType() == MOVETYPE_WALK and not hardland and ply:OnGround()) and not cmd:KeyDown(IN_SPEED) and not ply:GetSliding() and not IsValid(ply:GetBalanceEntity()) then - cmd:SetButtons(cmd:GetButtons() + IN_SPEED) - end - end) - - hook.Add("GetMotionBlurValues", "MEBlur", function(h, v, f, r) - local ply = LocalPlayer() - local vel = LocalPlayer():GetVelocity() - - if not ply.blurspeed then - ply.blurspeed = 0 - end - - if inmantle then - vel = vector_origin - end - - if vel:Length() > speedLimit:GetInt() + 75 then - ply.blurspeed = Lerp(0.001, ply.blurspeed, 0.1) - elseif ply:GetMantle() == 0 then - ply.blurspeed = math.Approach(ply.blurspeed, 0, 0.005) - end - - return h, v, ply.blurspeed, r - end) -end - -MMY = 0 -MMX = 0 - -hook.Add("InputMouseApply", "MouseMovement", function(cmd, x, y) - MMY = y - MMX = x - - local ply = LocalPlayer() - local activewep = ply:GetActiveWeapon() - local usingrh = ply:UsingRH(activewep) - - if not LocalPlayer():OnGround() or usingrh and activewep.GetSideStep and activewep:GetSideStep() then - MMX = 0 - end -end) - -if CLIENT then - net.Receive("DoorBashAnim", function() - ArmInterrupt("doorbash") - LocalPlayer():CLViewPunch(Angle(1.5, -0.75, 0)) - end) -end +local quakejump = CreateConVar("Beatrun_QuakeJump", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}) +local sidestep = CreateConVar("Beatrun_SideStep", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}) +local speedLimit = CreateConVar("Beatrun_SpeedLimit", 325, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}) + +CreateConVar("Beatrun_Disarm", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}, "", 0, 1) +CreateConVar("Beatrun_AllowOverdriveInMultiplayer", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}) + +local function Hardland(jt) + local ply = LocalPlayer() + ply.hardlandtime = CurTime() + 1 + + util.ScreenShake(Vector(0, 0, 0), 2, 2, 0.25, 0) + + BodyAnimCycle = 0 + + if not ply:GetDive() then + if jt then + if ply:GetMelee() == MELEE_DROPKICK then + jt = false + end + + DoJumpTurn(jt) + + BodyAnim:SetSequence("jumpturnflyidle") + else + BodyAnim:SetSequence("jumpcoilend") + end + end +end + +if game.SinglePlayer() and SERVER then + util.AddNetworkString("Beatrun_HardLand") +end + +if game.SinglePlayer() and CLIENT then + net.Receive("Beatrun_HardLand", function() + Hardland(net.ReadBool()) + end) +end + +hook.Add("PlayerStepSoundTime", "MEStepTime", function(ply, step, walking) + local sprint = ply:GetMEMoveLimit() < speedLimit:GetInt() - 25 + local stepmod = ply:GetStepRight() and 1 or -1 + local stepvel = 1.25 + local stepvel2 = 1 + + if BodyAnimArmCopy then + stepvel2 = 0 + end + + stepvel = stepvel - math.abs(ply:GetMEMoveLimit() / 100 - 1) * 0.33 + + local stepmod2 = 1 + local stepmod3 = 1 + + if not ply:UsingRH() then + stepmod2 = 0.25 + + if not ply:IsSprinting() then + stepmod3 = 0.25 + end + end + + if not ply:Crouching() and not walking then + if game.SinglePlayer() then + local intensity = ply:GetInfoNum("Beatrun_ViewbobIntensity", 20) / 20 + + intensity = sprint and intensity * 0.5 or intensity * 0.25 + + ply:ViewPunch(Angle(0.45 * stepmod2 * stepvel2, 0, 0.5 * stepmod * stepvel * stepmod3) * intensity) + elseif CLIENT and IsFirstTimePredicted() then + local intensity = ply:GetInfoNum("Beatrun_ViewbobIntensity", 20) / 20 + + intensity = sprint and intensity * 0.25 or intensity * 0.1 + + ply:CLViewPunch(Angle(0.45 * stepmod2 * stepvel2, 0, 0.5 * stepmod * stepvel * stepmod3) * intensity) + end + end + + local steptime = math.Clamp(750 / (ply:GetVelocity() * Vector(1, 1, 0)):Length() * 100, 200, 400) + + if ply:Crouching() then + steptime = steptime * 2 + end + + if ply:KeyDown(IN_WALK) then + steptime = steptime * 1.5 + end + + if ply:InOverdrive() then + steptime = steptime * 0.8 + end + + ply:SetStepRelease(CurTime() + steptime * 0.25 * 0.001) + + return steptime +end) + +hook.Add("PlayerFootstep", "MEStepSound", function(ply, pos, foot, sound, volume, filter, skipcheck) + ply:SetStepRight(not ply:GetStepRight()) + + if (ply:GetSliding() or CurTime() < ply:GetSafetyRollTime() - 0.5) and not skipcheck then return true end + if ply:GetMEMoveLimit() < 100 and ply:KeyDown(IN_FORWARD) and not ply.FootstepLand then return true end + + local mat = sound:sub(0, -6) + local newsound = FOOTSTEPS_LUT[mat] or "Concrete" + local walksound = FOOTSTEPS_WALK_LUT[mat] or "Concrete" + + if mat == "player/footsteps/ladder" then return end + + ply.LastStepMat = newsound or walksound or releasesound + if game.SinglePlayer() then ply:SetNW2String("LastStepMat", newsound) end + + ply.FootstepReleaseLand = true + + if CLIENT or game.SinglePlayer() then + local isBalancing = IsValid(ply:GetBalanceEntity()) + local currentSpeed = ply:GetVelocity():Length() + + if not ply:Crouching() and not isBalancing then + + if currentSpeed < 150 then + ply:EmitSound("Walk." .. walksound) + ply:EmitSound("Cloth.MovementWalk") + else + ply:EmitSound("Footsteps." .. newsound) + ply:EmitSound("Cloth.MovementRun") + if math.random() > 0.9 then ParkourEvent("step") end + end + end + + if ply:InOverdrive() and currentSpeed > 400 then + ply:EmitSound("Footsteps.Spark") + end + + if ply:Crouching() and not isBalancing and IsFirstTimePredicted() then + local sneaksound = FOOTSTEPS_SNEAK_LUT[mat] or "Concrete" + ply.LastStepMat = sneaksound + ply:EmitSound("Sneak." .. sneaksound) + ply:EmitSound("Cloth.MovementSneak") + end + + if isBalancing and IsFirstTimePredicted() then + ply:EmitSound("Footsteps.MetalPipe") + ply:EmitSound("Cloth.MovementWalk") + end + + if ply.FootstepLand and IsFirstTimePredicted() then + local landsound = FOOTSTEPS_LAND_LUT[mat] or "Concrete" + ply:EmitSound("Land." .. landsound) + if ply:WaterLevel() > 0 then + ply:EmitSound("Land.Water") + end + ply.FootstepLand = false + end + end + + ply.LastFootstepSound = mat + hook.Run("PlayerFootstepME", ply, pos, foot, sound, volume, filter) + + return true +end) + +hook.Add("OnPlayerHitGround", "MELandSound", function(ply, water, floater, speed) + local vel = ply:GetVelocity() + vel.z = 0 + + ply.FootstepLand = true + ply.LastLandTime = CurTime() + + ply:ViewPunch(Angle(3, 0, 1.5) * speed * 0.0025) + + if SERVER and vel:Length() < 100 then + ply:PlayStepSound(1) + end + + ParkourEvent("land", ply) + + if ply:GetMelee() == MELEE_DROPKICK and ply:GetMeleeTime() < CurTime() and vel:Length() < 300 then + if CLIENT and IsFirstTimePredicted() then + Hardland(false) + elseif SERVER and game.SinglePlayer() then + net.Start("Beatrun_HardLand") + net.WriteBool(false) + net.Send(ply) + end + end + + if not ply:InOverdrive() and speed > 500 and speed < 750 and not ply:GetJumpTurn() and (ply:GetSafetyRollKeyTime() <= CurTime() or ply:GetCrouchJump()) then + ply:ViewPunch(Angle(10, -2, 5)) + ply:SetMESprintDelay(CurTime() + 0.5) + ply:SetMEMoveLimit(50) + + local jt = false + local eyedir = ply:EyeAngles() + eyedir.x = 0 + eyedir = eyedir:Forward() + + vel = ply:GetVelocity() + vel.z = 0 + + if ply:GetCrouchJumpTime() < CurTime() and vel:GetNormalized():Dot(eyedir) < -0.75 and not ply:GetDive() then + jt = true + + ply:SetJumpTurn(true) + end + + if CLIENT and IsFirstTimePredicted() then + Hardland(jt) + elseif SERVER and game.SinglePlayer() then + net.Start("Beatrun_HardLand") + net.WriteBool(jt) + net.Send(ply) + end + end + + if SERVER and speed >= 500 and ply:GetJumpTurn() then + local dmg = ply:Health() * 0.1 + + if ply:Health() - dmg > 0 then + local info = DamageInfo() + info:SetDamage(dmg) + info:SetDamageType(DMG_FALL) + info:SetAttacker(game.GetWorld()) + info:SetInflictor(game.GetWorld()) + ply:TakeDamageInfo(info) + end + end +end) + +hook.Add("SetupMove", "MESetupMove", function(ply, mv, cmd) + local usingrh = ply:UsingRH() + local ismoving = (mv:KeyDown(IN_FORWARD) or not ply:OnGround() or ply:Crouching()) and ply:Alive() and (mv:GetVelocity():Length() > 145 or ply:GetMantle() ~= 0 or ply:Crouching()) + + if (CLIENT or game.SinglePlayer()) and CurTime() > (ply:GetStepRelease() or 0) and ply.FootstepReleaseLand then + local newsound = FOOTSTEPS_RELEASE_LUT[ply.LastFootstepSound] or "Concrete" + + if ply:GetVelocity():Length() > 150 or newsound == "Gantry" or newsound == "Duct" then + ply:EmitSound("Release." .. newsound) + elseif ply:WaterLevel() > 0 then + ply:EmitSound("Release.Water") + end + ply.FootstepReleaseLand = false + end + + if not ply:OnGround() and ply:GetClimbing() == 0 and mv:GetVelocity():Length() > 50 then + ply.FootstepLand = true + end + + if ply:GetRunSpeed() ~= speedLimit:GetInt() * ply:GetOverdriveMult() then + ply:SetRunSpeed(speedLimit:GetInt() * ply:GetOverdriveMult()) + end + + if not ply:GetMEMoveLimit() then + ply:SetMEMoveLimit(speedLimit:GetInt()) + ply:SetMESprintDelay(0) + ply:SetMEAng(0) + end + + if ply:KeyDown(IN_WALK) then + mv:SetForwardSpeed(mv:GetForwardSpeed() * 0.0095) + mv:SetSideSpeed(mv:GetSideSpeed() * 0.0095) + + ply:SetMEMoveLimit(150) + ply:SetMESprintDelay(0) + ply:SetMEAng(0) + end + + local ang = mv:GetAngles() + ang[1] = 0 + ang[3] = 0 + + local MEAng = math.Truncate(ang:Forward().x, 2) + local MEAngDiff = math.abs((MEAng - ply:GetMEAng()) * 100) + local weaponspeed = 150 + local activewep = ply:GetActiveWeapon() + + if not ply:UsingRH() then + weaponspeed = 150 + end + + if (ismoving or ply:GetMantle() ~= 0) and ply:GetMESprintDelay() < CurTime() and (cmd:KeyDown(IN_SPEED) or ply:GetMantle() ~= 0 or not ply:OnGround() or (not ply:OnGround() or ply:GetMantle() ~= 0) and mv:GetVelocity().z > -450) then + local mult = 0.6 + math.abs(ply:GetMEMoveLimit() / (speedLimit:GetInt() - 25) - 1) + + if not ply:InOverdrive() and ply:GetMEMoveLimit() > (speedLimit:GetInt() - 100) then + mult = mult * 0.35 + end + + if ply:GetMEMoveLimit() < 160 then + mult = mult * ply:GetMEMoveLimit() / 1000 + end + + ply:SetMEMoveLimit(math.Clamp(ply:GetMEMoveLimit() + mult * ply:GetOverdriveMult() * 2, 0, speedLimit:GetInt() * ply:GetOverdriveMult())) + elseif not ismoving and (not ply:Crouching() or ply:GetCrouchJump()) or CurTime() < ply:GetMESprintDelay() and ply:OnGround() then + ply:SetMEMoveLimit(math.Clamp(ply:GetMEMoveLimit() - 40, weaponspeed, speedLimit:GetInt() * ply:GetOverdriveMult())) + end + + if MEAngDiff > 1.25 and ply:GetWallrun() == 0 then + local slow = MEAngDiff * 0.75 + ply:SetMEMoveLimit(math.max(ply:GetMEMoveLimit() - slow, 160)) + end + + if ply:OnGround() then + local stepheight = mv:GetOrigin().z - (ply.LastOrigin or vector_origin).z + + if stepheight > 1.5 then + ply:SetMEMoveLimit(math.Approach(ply:GetMEMoveLimit(), speedLimit:GetInt() - 75, FrameTime() * 100)) + elseif stepheight < -0.8 then + ply:SetMEMoveLimit(math.Approach(ply:GetMEMoveLimit(), speedLimit:GetInt() + 75, FrameTime() * 100)) + end + end + + ply.LastOrigin = mv:GetOrigin() + + if ply:GetSliding() then + ply:SetMEMoveLimit(150) + ply:SetMaxSpeed(200) + end + + mv:SetMaxClientSpeed(ply:GetMEMoveLimit()) + + ply:SetMEAng(MEAng) + + if sidestep:GetBool() and usingrh and activewep.GetSideStep and not activewep:GetSideStep() and CurTime() > ply:GetSlidingDelay() - 0.2 and ply:GetClimbing() == 0 and ply:OnGround() and not ply:Crouching() and not cmd:KeyDown(IN_FORWARD) and not cmd:KeyDown(IN_JUMP) and cmd:KeyDown(IN_ATTACK2) then + if mv:KeyDown(IN_MOVELEFT) then + activewep:SendWeaponAnim(ACT_TURNLEFT45) + activewep:SetSideStep(true) + + mv:SetVelocity(cmd:GetViewAngles():Right() * -(speedLimit:GetInt() * 1.8)) + + ply:ViewPunch(Angle(-3, 0, -4.5)) + + ParkourEvent("sidestepleft", ply) + + ply:EmitSound("Cloth.SideStep") + ply:FaithVO("Faith.StrainSoft") + + activewep.SideStepDir = ang:Forward() + + if game.SinglePlayer() then + ply:PlayStepSound(1) + end + elseif mv:KeyDown(IN_MOVERIGHT) then + activewep:SendWeaponAnim(ACT_TURNRIGHT45) + activewep:SetSideStep(true) + + mv:SetVelocity(cmd:GetViewAngles():Right() * (speedLimit:GetInt() * 1.8)) + + ply:ViewPunch(Angle(-3, 0, 4.5)) + + ParkourEvent("sidestepright", ply) + + ply:EmitSound("Cloth.SideStep") + ply:FaithVO("Faith.StrainSoft") + + activewep.SideStepDir = ang:Forward() + + if game.SinglePlayer() then + ply:PlayStepSound(1) + end + end + elseif usingrh and activewep.GetSideStep and activewep:GetSideStep() and activewep.SideStepDir then + local forwarddelta = activewep.SideStepDir:Dot(ang:Forward()) + + if forwarddelta > 0.35 then + ply:SetMEMoveLimit(speedLimit:GetInt()) + end + + if forwarddelta < 0.65 then + forwarddelta = 1 + else + forwarddelta = forwarddelta * 0.025 + end + + mv:SetForwardSpeed(mv:GetForwardSpeed() * forwarddelta) + mv:SetSideSpeed(mv:GetSideSpeed() * math.abs(forwarddelta - 1)) + + if mv:KeyPressed(IN_JUMP) and not quakejump:GetBool() and activewep:GetWasOnGround() and not ply:GetJumpTurn() and ply:GetViewModel():GetCycle() < 0.25 then + local vel = mv:GetVelocity() + vel:Mul(0.75) + vel.z = -speedLimit:GetInt() + 25 + + mv:SetVelocity(vel) + + activewep:SetWasOnGround(false) + end + end +end) + +if CLIENT then + -- local jumpseq = {ACT_VM_HAULBACK, ACT_VM_SWINGHARD} + + hook.Add("CreateMove", "MECreateMove", function(cmd) + local ply = LocalPlayer() + local hardland = CurTime() < (ply.hardlandtime or 0) + + if hardland and not ply:InOverdrive() then + cmd:RemoveKey(IN_ATTACK2) + cmd:SetForwardMove(cmd:GetForwardMove() * 0.01) + cmd:SetSideMove(cmd:GetSideMove() * 0.01) + end + + if (ply:InOverdrive() or ply:UsingRH() and ply:GetMoveType() == MOVETYPE_WALK and not hardland and ply:OnGround()) and not cmd:KeyDown(IN_SPEED) and not ply:GetSliding() and not IsValid(ply:GetBalanceEntity()) then + cmd:SetButtons(cmd:GetButtons() + IN_SPEED) + end + end) + + hook.Add("GetMotionBlurValues", "MEBlur", function(h, v, f, r) + local ply = LocalPlayer() + local vel = LocalPlayer():GetVelocity() + + if not ply.blurspeed then + ply.blurspeed = 0 + end + + if inmantle then + vel = vector_origin + end + + if vel:Length() > speedLimit:GetInt() + 75 then + ply.blurspeed = Lerp(0.001, ply.blurspeed, 0.1) + elseif ply:GetMantle() == 0 then + ply.blurspeed = math.Approach(ply.blurspeed, 0, 0.005) + end + + return h, v, ply.blurspeed, r + end) +end + +MMY = 0 +MMX = 0 + +hook.Add("InputMouseApply", "MouseMovement", function(cmd, x, y) + MMY = y + MMX = x + + local ply = LocalPlayer() + local activewep = ply:GetActiveWeapon() + local usingrh = ply:UsingRH(activewep) + + if not LocalPlayer():OnGround() or usingrh and activewep.GetSideStep and activewep:GetSideStep() then + MMX = 0 + end +end) + +if CLIENT then + net.Receive("DoorBashAnim", function() + ArmInterrupt("doorbash") + LocalPlayer():CLViewPunch(Angle(1.5, -0.75, 0)) + end) +end diff --git a/gamemodes/beatrun/gamemode/sh/Ladder.lua b/gamemodes/beatrun/gamemode/sh/Ladder.lua index bf352d17..e2785d46 100644 --- a/gamemodes/beatrun/gamemode/sh/Ladder.lua +++ b/gamemodes/beatrun/gamemode/sh/Ladder.lua @@ -69,7 +69,7 @@ local function LadderCheck(ply, mv, cmd, ladder) ply.LadderHardStart = not ply:OnGround() if not ply:OnGround() then - ply:ViewPunch(Angle(10, 0, 0)) + ply:ViewPunch(Angle(15, 5, -15)) ply:SetLadderDelay(CurTime() + 0.75) ply:SetLadderHand(false) else @@ -121,6 +121,8 @@ local function LadderThink(ply, mv, cmd, ladder) ParkourEvent(event, ply) ply.LadderDown = false + ply:StopSound("Slide.Ladder") + ply:StopSound("Slide.LadderHands") elseif mv:KeyDown(IN_BACK) and ply:GetLadderDelay() < CurTime() and ply:GetLadderHeight() > 1 then local pos = mv:GetOrigin() @@ -135,11 +137,16 @@ local function LadderThink(ply, mv, cmd, ladder) if not ply.LadderDown then ParkourEvent("ladderclimbdownfast", ply) + ply:EmitSound("Slide.LadderHands") + ply:EmitSound("Slide.Ladder") end ply.LadderDown = true elseif ply.LadderDown and ply:GetLadderDelay() < CurTime() then ply.LadderDown = false + ply:EmitSound("Footsteps.LadderMedium") + ply:StopSound("Slide.Ladder") + ply:StopSound("Slide.LadderHands") if CLIENT and IsFirstTimePredicted() then ply:CLViewPunch(Angle(5, 0, 0)) @@ -235,8 +242,12 @@ local function LadderThink(ply, mv, cmd, ladder) if CLIENT and IsFirstTimePredicted() then BodyAnim:SetSequence("jumpfast") + ply:StopSound("Slide.Ladder") + ply:StopSound("Slide.LadderHands") elseif game.SinglePlayer() then ply:SendLua("BodyAnim:SetSequence('jumpfast')") + ply:StopSound("Slide.Ladder") + ply:StopSound("Slide.LadderHands") end ply:SetMoveType(MOVETYPE_WALK) diff --git a/gamemodes/beatrun/gamemode/sh/SafetyRoll.lua b/gamemodes/beatrun/gamemode/sh/SafetyRoll.lua index 8ba28f93..f0cb64c9 100644 --- a/gamemodes/beatrun/gamemode/sh/SafetyRoll.lua +++ b/gamemodes/beatrun/gamemode/sh/SafetyRoll.lua @@ -167,6 +167,10 @@ hook.Add("SetupMove", "EvadeRoll", function(ply, mv, cmd) if SERVER and not land then ply:EmitSound("Cloth.FallShortMediumLong") + timer.Simple(0.1, function() + ply:EmitSound("Cloth.Roll") + ply:EmitSound("Cloth.BodyRollSwish") + end) ply:EmitSound("Cloth.RollCloth") elseif CLIENT and IsFirstTimePredicted() or game.SinglePlayer() then ply:EmitSound("Handsteps.ConcreteHard") @@ -254,8 +258,16 @@ hook.Add("OnPlayerHitGround", "SafetyRoll", function(ply, water, floater, speed) end) ply:EmitSound("Cloth.RollLand") + ply:EmitSound("Cloth.RollCloth") + ply:EmitSound("Cloth.FallShortMedium") elseif CLIENT and IsFirstTimePredicted() or game.SinglePlayer() then - ply:EmitSound("Handsteps.ConcreteHard") + timer.Simple(0.01, function() + ply:EmitSound("Handsteps.ConcreteHard") + ply:EmitSound("Cloth.FallShortMedium") + end) + timer.Simple(0.35, function() + ply:EmitSound("Cloth.MovementWalk") + end) ply:EmitSound("Land.Concrete") end diff --git a/gamemodes/beatrun/gamemode/sh/Sliding.lua b/gamemodes/beatrun/gamemode/sh/Sliding.lua index 6026aa0a..f3200b05 100644 --- a/gamemodes/beatrun/gamemode/sh/Sliding.lua +++ b/gamemodes/beatrun/gamemode/sh/Sliding.lua @@ -238,22 +238,26 @@ local function SlideSurfaceSound(ply, pos) local tr = util.TraceLine(trace_tbl) local sndtable = slide_sounds[tr.MatType] or slide_sounds[0] - ply:EmitSound(sndtable[math.random(#sndtable)], 75, 100 + math.random(-20, -15), 0.5) - - if ply:WaterLevel() > 0 then - sndtable = slide_sounds[MAT_SLOSH] - - ply:EmitSound(sndtable[math.random(#sndtable)]) + if not ply.DiveSliding then + ply:EmitSound("Cloth.FallShortMedium") + else + ply:EmitSound("Cloth.FallShortHard") end + ply:EmitSound(sndtable[math.random(#sndtable)], 75, 100 + math.random(-20, -15), 0.5) return tr.MatType end local function SlideLoopSound(ply, pos, mat) - local sndtable = slideloop_sounds[mat] or slideloop_sounds[0] + local sndtable + if ply:WaterLevel() > 0 then + sndtable = slideloop_sounds[MAT_SLOSH] + else + sndtable = slideloop_sounds[mat] or slideloop_sounds[0] + end ply.SlideLoopSound = CreateSound(ply, sndtable) - ply.SlideLoopSound:PlayEx(0.08, 100) + ply.SlideLoopSound:PlayEx(0.1, 100) end -- local COORD_FRACTIONAL_BITS = 5 @@ -514,7 +518,7 @@ hook.Add("SetupMove", "qslide", function(ply, mv, cmd) ply:SetSlidingDelay(CT + 0.1) if SERVER and ply.SlideLoopSound then - ply.SlideLoopSound:Stop() + ply.SlideLoopSound:FadeOut(0.5) end ply:ConCommand("-duck") @@ -532,8 +536,8 @@ hook.Add("SetupMove", "qslide", function(ply, mv, cmd) ply:SetViewOffsetDucked(Vector(0, 0, 28) + eyeang * -25) local slidedelta = (ply:GetSlidingTime() - CT) / slidetime - local speed = ply:GetSlidingVel() * math.min(1.75, (ply:GetSlidingTime() - CT + 0.5) / slidetime) * qslide_speedmult + speed = ply:GetSlidingVel() * math.min(1.75, (ply:GetSlidingTime() - CT + 0.5) / slidetime) * qslide_speedmult mv:SetVelocity(ply:GetSlidingAngle():Forward() * speed) local pos = mv:GetOrigin() @@ -563,7 +567,7 @@ hook.Add("SetupMove", "qslide", function(ply, mv, cmd) mv:SetVelocity(mv:GetVelocity() - ply:GetSlidingAngle():Right() * ply:GetSlidingStrafe()) if mv:KeyPressed(IN_JUMP) then - local vel = mv:GetVelocity() + vel = mv:GetVelocity() vel:Mul(math.min(math.max(speed, 300) / 300, 1)) vel.z = 175 @@ -657,7 +661,7 @@ hook.Add("SetupMove", "qslide", function(ply, mv, cmd) ply:SetSlidingDelay(CT + 0.1) if SERVER then - ply.SlideLoopSound:Stop() + ply.SlideLoopSound:FadeOut(0.5) end ply.DiveSliding = false @@ -709,4 +713,4 @@ hook.Add("StartCommand", "qslidespeed", function(ply, cmd) cmd:SetButtons(bit.bor(cmd:GetButtons(), IN_DUCK)) end end -end) +end) \ No newline at end of file diff --git a/gamemodes/beatrun/gamemode/sh/Sounds_Cloth.lua b/gamemodes/beatrun/gamemode/sh/Sounds_Cloth.lua index ade9462a..c2468169 100644 --- a/gamemodes/beatrun/gamemode/sh/Sounds_Cloth.lua +++ b/gamemodes/beatrun/gamemode/sh/Sounds_Cloth.lua @@ -11,7 +11,7 @@ sound.Add({ sound.Add({ name = "Cloth.MovementRun", volume = 0.75, - level = 30, + level = 31, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Cloth/ME_Cloth_Movement_Run1.wav", "mirrorsedge/Cloth/ME_Cloth_Movement_Run2.wav", "mirrorsedge/Cloth/ME_Cloth_Movement_Run3.wav", "mirrorsedge/Cloth/ME_Cloth_Movement_Run4.wav", "mirrorsedge/Cloth/ME_Cloth_Movement_Run5.wav", "mirrorsedge/Cloth/ME_Cloth_Movement_Run6.wav", "mirrorsedge/Cloth/ME_Cloth_Movement_Run7.wav", "mirrorsedge/Cloth/ME_Cloth_Movement_Run8.wav"} @@ -20,7 +20,7 @@ sound.Add({ sound.Add({ name = "Cloth.MovementWalk", volume = 0.75, - level = 50, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Cloth/Cloth_Movement_Walk_01.wav", "mirrorsedge/Cloth/Cloth_Movement_Walk_02.wav", "mirrorsedge/Cloth/Cloth_Movement_Walk_03.wav", "mirrorsedge/Cloth/Cloth_Movement_Walk_04.wav", "mirrorsedge/Cloth/Cloth_Movement_Walk_05.wav", "mirrorsedge/Cloth/Cloth_Movement_Walk_06.wav", "mirrorsedge/Cloth/Cloth_Movement_Walk_07.wav", "mirrorsedge/Cloth/Cloth_Movement_Walk_08.wav"} @@ -29,7 +29,7 @@ sound.Add({ sound.Add({ name = "Cloth.MovementSneak", volume = 0.75, - level = 50, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Cloth/Cloth_Movement_Sneak_01.wav", "mirrorsedge/Cloth/Cloth_Movement_Sneak_02.wav", "mirrorsedge/Cloth/Cloth_Movement_Sneak_03.wav", "mirrorsedge/Cloth/Cloth_Movement_Sneak_04.wav", "mirrorsedge/Cloth/Cloth_Movement_Sneak_05.wav", "mirrorsedge/Cloth/Cloth_Movement_Sneak_06.wav", "mirrorsedge/Cloth/Cloth_Movement_Sneak_07.wav", "mirrorsedge/Cloth/Cloth_Movement_Sneak_08.wav"} @@ -112,21 +112,21 @@ sound.Add({ sound.Add({ name = "Cloth.Fall", volume = 0.75, - level = 75, + level = 42, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Cloth/Body_Fall_Cloth1.wav", "mirrorsedge/Cloth/Body_Fall_Cloth2.wav", "mirrorsedge/Cloth/Body_Fall_Cloth3.wav", "mirrorsedge/Cloth/Body_Fall_Cloth4.wav"} }) -- Cloth Swing -- ---[[sound.Add({ +sound.Add({ name = "Cloth.Swing", volume = 0.75, - level = 40, + level = 60, channel = CHAN_STATIC, pitch = {90, 110}, - sound = {"mirrorsedge/Cloth/Cloth_Swing1.wav", "mirrorsedge/Cloth/Cloth_Swing2.wav", "mirrorsedge/Cloth/Cloth_Swing3.wav", "mirrorsedge/Cloth/Cloth_Swing4.wav"} -})]] + sound = {"mirrorsedge/Cloth/cloth_swing_1a.wav", "mirrorsedge/Cloth/cloth_swing_1b.wav", "mirrorsedge/Cloth/cloth_swing_1c.wav", "mirrorsedge/Cloth/cloth_swing_1d.wav"} +}) -- Cloth SideStep -- sound.Add({ @@ -136,4 +136,4 @@ sound.Add({ channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Cloth/ME_Cloth_SideStep1.wav", "mirrorsedge/Cloth/ME_Cloth_SideStep2.wav", "mirrorsedge/Cloth/ME_Cloth_SideStep3.wav", "mirrorsedge/Cloth/ME_Cloth_SideStep4.wav"} -}) \ No newline at end of file +}) diff --git a/gamemodes/beatrun/gamemode/sh/Sounds_Footsteps.lua b/gamemodes/beatrun/gamemode/sh/Sounds_Footsteps.lua index bcfbb842..cf2a994b 100644 --- a/gamemodes/beatrun/gamemode/sh/Sounds_Footsteps.lua +++ b/gamemodes/beatrun/gamemode/sh/Sounds_Footsteps.lua @@ -10,7 +10,7 @@ sound.Add({ sound.Add({ name = "Walk.Concrete", - volume = 1, + volume = 0.75, level = 40, channel = CHAN_STATIC, pitch = {90, 110}, @@ -19,7 +19,7 @@ sound.Add({ sound.Add({ name = "Sneak.Concrete", - volume = 1, + volume = 0.5, level = 40, channel = CHAN_STATIC, pitch = {90, 110}, @@ -100,7 +100,7 @@ sound.Add({ -- Concrete Dirt-- sound.Add({ name = "Walk.ConcreteDirt", - volume = 1, + volume = 0.5, level = 40, channel = CHAN_STATIC, pitch = {90, 110}, @@ -109,7 +109,7 @@ sound.Add({ sound.Add({ name = "Sneak.ConcreteDirt", - volume = 1, + volume = 0.5, level = 40, channel = CHAN_STATIC, pitch = {90, 110}, @@ -118,7 +118,24 @@ sound.Add({ -- Concrete Grit -- sound.Add({ name = "Footsteps.ConcreteGrit", - volume = 1, + volume = 0, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run1.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run2.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run3.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run4.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run5.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run6.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run7.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run8.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run9.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run10.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run11.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run12.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run13.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run14.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run15.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run16.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run17.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run18.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run19.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run20.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run21.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run22.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run23.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run24.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run25.wav"} +}) + +sound.Add({ + name = "Walk.ConcreteGrit", + volume = 0.75, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run1.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run2.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run3.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run4.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run5.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run6.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run7.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run8.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run9.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run10.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run11.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run12.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run13.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run14.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run15.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run16.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run17.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run18.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run19.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run20.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run21.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run22.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run23.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run24.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_Run25.wav"} +}) -- Reusing quieter running footsteps if no other option is available +sound.Add({ + name = "Sneak.ConcreteGrit", + volume = 0.5, level = 40, channel = CHAN_STATIC, pitch = {90, 110}, @@ -131,7 +148,7 @@ sound.Add({ level = 40, channel = CHAN_STATIC, pitch = {90, 110}, - sound = {"mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast1.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast2.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast3.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast4.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast5.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast6.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast7.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast8.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast9.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast10.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast11.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast12.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast13.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast14.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast15.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast16.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast17.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast18.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast19.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast20.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast21.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast22.wav"} + sound = {"mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast1.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast2.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast3.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast-04.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast5.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast6.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast7.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast8.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast9.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast10.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast11.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast12.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast13.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast14.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast15.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast16.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast17.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast18.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast19.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast20.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast21.wav", "mirrorsedge/Footsteps/Concrete/ME_Footsteps_Concrete_Grit_WallRun_Fast22.wav"} }) -- Marble -- sound.Add({ @@ -143,6 +160,24 @@ sound.Add({ sound = {"mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint1.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint2.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint3.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint4.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint5.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint6.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint7.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint8.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint9.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint10.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint11.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint12.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint13.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint14.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint15.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint16.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint17.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint18.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint19.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint20.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint21.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint22.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint23.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint24.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint25.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint26.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint27.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint28.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint29.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint30.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint31.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint32.wav", "mirrorsedge/Footsteps/Marble/ME_Footsteps_Marble_Sprint33.wav"} }) +sound.Add({ + name = "Walk.Marble", + volume = 0.85, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run1.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run2.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run3.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run4.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run5.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run6.wav"} +}) + +sound.Add({ + name = "Sneak.Marble", + volume = 0.75, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run1.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run2.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run3.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run4.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run5.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteTile_Run6.wav"} +}) + sound.Add({ name = "Release.Marble", volume = 0.25, @@ -188,6 +223,15 @@ sound.Add({ sound = {"mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun1.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun10.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun11.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun12.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun13.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun14.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun15.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun16.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun17.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun18.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun19.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun2.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun20.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun3.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun4.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun5.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun6.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun7.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun8.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPaneRun9.wav"} }) +sound.Add({ + name = "Walk.Glass", + volume = 0.75, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk1.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk10.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk11.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk12.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk13.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk14.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk15.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk16.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk17.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk18.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk19.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk2.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk20.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk21.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk-22.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk3.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk4.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk5.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk6.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk7.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk8.wav", "mirrorsedge/Footsteps/Glass/ME_FootStep_GlassPane_Walk9.wav"} +}) + sound.Add({ name = "Release.Glass", volume = 1, @@ -253,7 +297,7 @@ sound.Add({ sound.Add({ name = "Walk.Metal", - volume = 1, + volume = 0.75, level = 40, channel = CHAN_STATIC, pitch = {90, 110}, @@ -263,7 +307,7 @@ sound.Add({ sound.Add({ name = "Sneak.Metal", volume = 1, - level = 40, + level = 35, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk1.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk2.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk3.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk4.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk5.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk6.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk7.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk8.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk9.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk10.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk11.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk12.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk13.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk14.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk15.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk16.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk17.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk18.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Walk19.wav"} @@ -332,6 +376,24 @@ sound.Add({ sound = {"mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run1.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run2.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run3.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run4.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run5.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run6.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run7.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run8.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run9.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_Metal_Run10.wav"} }) +sound.Add({ + name = "Walk.MetalBox", + volume = 0.75, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk1.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk2.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk3.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk4.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk5.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk6.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk7.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk8.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk9.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk10.wav"} +}) + +sound.Add({ + name = "Sneak.MetalBox", + volume = 1, + level = 35, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk1.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk2.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk3.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk4.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk5.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk6.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk7.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk8.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk9.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalWalk10.wav"} +}) + sound.Add({ name = "Release.MetalBox", volume = 1, @@ -351,6 +413,15 @@ sound.Add({ sound = {"mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun1.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun2.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun3.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun4.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun5.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun6.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun7.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun8.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun9.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun10.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun11.wav"} }) +sound.Add({ + name = "Walk.Duct", + volume = 1, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk-01.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk-02.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk-03.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk-04.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk-05.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk-06.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk-07.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk-08.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk-09.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk10.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctWalk11.wav"} +}) + sound.Add({ name = "Land.Duct", volume = 1, @@ -360,6 +431,15 @@ sound.Add({ sound = {"mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuct_Land1.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuct_Land2.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuct_Land3.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuct_Land4.wav"} }) +sound.Add({ + name = "Wallrun.Duct", + volume = 1, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun1.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun2.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun3.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun4.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun5.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun6.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun7.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun8.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun9.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun10.wav", "mirrorsedge/Footsteps/Metal/ME_FootStep_MetalDuctRun11.wav"} +}) + sound.Add({ name = "Sneak.Duct", volume = 1, @@ -405,6 +485,24 @@ sound.Add({ sound = {"mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_01.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_02.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_03.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_04.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_05.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_06.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_07.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_08.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_09.wav"} }) +sound.Add({ + name = "Walk.Gantry", + volume = 0.4, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_01.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_02.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_03.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_04.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_05.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_06.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_07.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_08.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_09.wav"} +}) + +sound.Add({ + name = "Sneak.Gantry", + volume = 0.4, + level = 35, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_01.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_02.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_03.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_04.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_05.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_06.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_07.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_08.wav", "mirrorsedge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Steps_Sprint_New_09.wav"} +}) + sound.Add({ name = "Release.Gantry", volume = 1, @@ -488,7 +586,25 @@ sound.Add({ sound.Add({ name = "Footsteps.Wood", volume = 1, - level = 43, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant1.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant10.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant11.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant12.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant13.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant14.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant15.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant2.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant3.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant4.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant5.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant6.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant7.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant8.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant9.wav"} +}) + +sound.Add({ + name = "Walk.Wood", + volume = 0.75, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant1.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant10.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant11.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant12.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant13.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant14.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant15.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant2.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant3.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant4.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant5.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant6.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant7.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant8.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant9.wav"} +}) + +sound.Add({ + name = "Sneak.Wood", + volume = 0.5, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant1.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant10.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant11.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant12.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant13.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant14.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant15.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant2.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant3.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant4.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant5.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant6.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant7.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant8.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunFootplant9.wav"} @@ -506,7 +622,7 @@ sound.Add({ sound.Add({ name = "Land.Wood", volume = 1, - level = 60, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land1.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land2.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land3.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land4.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land5.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land6.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land7.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land8.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land9.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodGeneric_Land10.wav"} @@ -515,7 +631,7 @@ sound.Add({ sound.Add({ name = "WallRun.Wood", volume = 1, - level = 60, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun1.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun2.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun3.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun4.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun5.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun6.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun7.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun8.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun9.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodWallRun10.wav"} @@ -559,7 +675,7 @@ sound.Add({ sound.Add({ name = "Walk.WoodPlank", - volume = 1, + volume = 0.75, level = 40, channel = CHAN_STATIC, pitch = {90, 110}, @@ -577,8 +693,8 @@ sound.Add({ sound.Add({ name = "Sneak.WoodPlank", - volume = 1, - level = 30, + volume = 0.5, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk1.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk2.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk3.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk4.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk5.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk6.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk7.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk8.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk9.wav", "mirrorsedge/Footsteps/Wood/ME_FootStep_WoodPlank_Walk10.wav"} @@ -593,15 +709,33 @@ sound.Add({ sound = {"mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step1.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step10.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step11.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step12.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step13.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step2.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step3.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step4.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step5.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step6.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step7.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step8.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step9.wav"} }) +sound.Add({ + name = "Walk.Water", + volume = 0.4, + level = 35, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step1.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step10.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step11.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step12.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step13.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step2.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step3.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step4.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step5.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step6.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step7.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step8.wav", "mirrorsedge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Step9.wav"} +}) + sound.Add({ name = "Sneak.Water", - volume = 0.25, - level = 40, + volume = 1, + level = 50, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak1.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak2.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak3.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak4.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak5.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak6.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak7.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak8.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak9.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterSneak10.wav"} }) +sound.Add({ + name = "Land.Water", + volume = 1, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Footsteps/Water/ME_FootStep_WaterLand1.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterLand2.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterLand3.wav", "mirrorsedge/Footsteps/Water/ME_FootStep_WaterLand4.wav"} +}) + sound.Add({ name = "Release.Water", volume = 1, @@ -647,15 +781,6 @@ sound.Add({ sound = {"mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy1.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy10.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy11.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy2.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy3.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy4.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy5.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy6.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy7.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy8.wav", "mirrorsedge/Footsteps/Gravel/ME_Footsteps_Gravel_Land_Heavy9.wav"} }) -sound.Add({ - name = "Walk.Gravel", - volume = 0.25, - level = 40, - channel = CHAN_STATIC, - pitch = {90, 110}, - sound = {"mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk1.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk2.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk3.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk4.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk5.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk6.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk6.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk7.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk8.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk9.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk10.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk11.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk12.wav", "mirrorsedge/Footsteps/Concrete/ME_FootStep_ConcreteDirtWalk13.wav"} -}) - sound.Add({ name = "Slide.Gravel", volume = 1, @@ -695,7 +820,7 @@ sound.Add({ sound.Add({ name = "Walk.Carpet", - volume = 0.25, + volume = 0.5, level = 40, channel = CHAN_STATIC, pitch = {90, 110}, @@ -704,8 +829,8 @@ sound.Add({ sound.Add({ name = "Sneak.Carpet", - volume = 0.25, - level = 40, + volume = 0.5, + level = 35, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk1.wav", "mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk2.wav", "mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk3.wav", "mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk4.wav", "mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk5.wav", "mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk6.wav", "mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk7.wav", "mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk8.wav", "mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk9.wav", "mirrorsedge/Footsteps/Carpet/ME_FootStep_Carpet_Walk10.wav"} @@ -805,7 +930,7 @@ FOOTSTEPS_LUT = { ["player/footsteps/gravel"] = "Gravel", ["player/footsteps/sand"] = "Gravel", ["player/footsteps/snow"] = "Gravel", - ["player/footsteps/mud"] = "Carpet", + ["player/footsteps/mud"] = "Water", ["player/footsteps/grass"] = "Carpet", ["player/footsteps/dirt"] = "Carpet", ["player/footsteps/metalgrate"] = "Gantry", @@ -819,46 +944,64 @@ FOOTSTEPS_LUT = { --["physics/rubber/rubber_tire_impact_soft"] = "Tarp", ["player/footsteps/duct"] = "Duct", ["player/footsteps/wood"] = "Wood", - ["player/footsteps/chainlink"] = "MetalCrane" + ["player/footsteps/chainlink"] = "MetalCrane", + ["player/footsteps/slosh"] = "Water", + ["player/footsteps/wade"] = "Water" } FOOTSTEPS_WALK_LUT = { - ["player/footsteps/woodpanel"] = "WoodPanel", - ["player/footsteps/gravel"] = "Gravel", - ["player/footsteps/sand"] = "Gravel", + ["player/footsteps/woodpanel"] = "WoodPlank", + ["player/footsteps/gravel"] = "ConcreteDirt", + ["player/footsteps/sand"] = "Carpet", ["player/footsteps/metalgrate"] = "Gantry", ["player/footsteps/concrete"] = "Concrete", + ["physics/plaster/drywall_footstep"] = "ConcreteGrit", ["player/footsteps/metal"] = "Metal", + ["physics/metal/metal_box_footstep"] = "MetalBox", ["physics/wood/wood_box_footstep"] = "WoodPlank", ["physics/glass/glass_sheet_step"] = "Glass", ["player/footsteps/duct"] = "Duct", ["player/footsteps/wood"] = "Wood", - ["player/footsteps/chainlink"] = "Gantry" + ["player/footsteps/chainlink"] = "MetalCrane", + ["player/footsteps/snow"] = "Carpet", + ["player/footsteps/tile"] = "Marble", + ["player/footsteps/mud"] = "Water", + ["player/footsteps/dirt"] = "ConcreteDirt", + ["player/footsteps/grass"] = "Carpet", + ["player/footsteps/slosh"] = "Water", + ["player/footsteps/wade"] = "Water" } FOOTSTEPS_SNEAK_LUT = { ["player/footsteps/concrete"] = "Concrete", + ["physics/plaster/drywall_footstep"] = "ConcreteGrit", ["physics/wood/wood_box_footstep"] = "WoodPlank", - ["player/footsteps/woodpanel"] = "Wood", + ["player/footsteps/woodpanel"] = "WoodPlank", ["player/footsteps/wood"] = "Wood", ["player/footsteps/duct"] = "Duct", ["player/footsteps/grass"] = "Carpet", ["player/footsteps/dirt"] = "ConcreteDirt", ["physics/glass/glass_sheet_step"] = "Glass", ["player/footsteps/metal"] = "Metal", - ["player/footsteps/metalgrate"] = "Metal", + ["player/footsteps/metalgrate"] = "Gantry", ["player/footsteps/chainlink"] = "MetalCrane", - ["player/footsteps/sand"] = "ConcreteDirt", - ["player/footsteps/gravel"] = "ConcreteDirt" + ["player/footsteps/sand"] = "Carpet", + ["player/footsteps/mud"] = "Water", + ["player/footsteps/tile"] = "Marble", + ["player/footsteps/gravel"] = "ConcreteDirt", + ["player/footsteps/snow"] = "Carpet", + ["player/footsteps/wade"] = "Water", + ["player/footsteps/wade"] = "Water" } FOOTSTEPS_RELEASE_LUT = { - ["player/footsteps/woodpanel"] = "Wood", + ["player/footsteps/woodpanel"] = "WoodPlank", ["player/footsteps/gravel"] = "Gravel", - ["player/footsteps/sand"] = "Gravel", + ["player/footsteps/sand"] = "Carpet", ["player/footsteps/mud"] = "Water", ["player/footsteps/grass"] = "Carpet", ["player/footsteps/dirt"] = "Gravel", + ["player/footsteps/tarp"] = "Tarp", ["player/footsteps/metalgrate"] = "Gantry", ["player/footsteps/concrete"] = "Concrete", ["player/footsteps/metal"] = "Metal", @@ -866,9 +1009,11 @@ FOOTSTEPS_RELEASE_LUT = { ["player/footsteps/tile"] = "Marble", ["physics/wood/wood_box_footstep"] = "WoodPlank", ["physics/glass/glass_sheet_step"] = "Glass", - ["player/footsteps/duct"] = "Metal", + ["player/footsteps/duct"] = "MetalBox", ["player/footsteps/wood"] = "Wood", - ["player/footsteps/chainlink"] = "MetalCrane" + ["player/footsteps/chainlink"] = "MetalCrane", + ["player/footsteps/snow"] = "Carpet", + ["player/footsteps/wade"] = "Water" } FOOTSTEPS_LAND_LUT = { @@ -881,9 +1026,22 @@ FOOTSTEPS_LAND_LUT = { ["player/footsteps/chainlink"] = "MetalCrane", ["player/footsteps/tile"] = "Marble", ["player/footsteps/sand"] = "Gravel", + ["player/footsteps/metalgrate"] = "MetalCrane", ["player/footsteps/gravel"] = "Gravel", ["player/footsteps/dirt"] = "Gravel", ["player/footsteps/woodpanel"] = "Wood", ["player/footsteps/wood"] = "Wood", - ["physics/wood/wood_box_footstep"] = "Wood" + ["physics/wood/wood_box_footstep"] = "Wood", + ["player/footsteps/mud"] = "Water", } + +FOOTSTEPS_MAT_TYPE_TO_STR = { + [MAT_GLASS] = "Glass", + [MAT_CONCRETE] = "Concrete", + [MAT_GRATE] = "Metal", + [MAT_METAL] = "Metal", + [MAT_VENT] = "Duct", + [MAT_PLASTIC] = "ConcreteGrit", + [MAT_TILE] = "ConcreteGrit", + [MAT_WOOD] = "Wood" +} \ No newline at end of file diff --git a/gamemodes/beatrun/gamemode/sh/Sounds_Handsteps.lua b/gamemodes/beatrun/gamemode/sh/Sounds_Handsteps.lua index aaaa1506..ddc8423e 100644 --- a/gamemodes/beatrun/gamemode/sh/Sounds_Handsteps.lua +++ b/gamemodes/beatrun/gamemode/sh/Sounds_Handsteps.lua @@ -22,32 +22,41 @@ sound.Add({ volume = 1, level = 40, channel = CHAN_STATIC, - pitch = {75, 90}, - sound = {"mirrorsedge/Ladder/LadderHandstep_01.ogg", "mirrorsedge/Ladder/LadderHandstep_02.ogg", "mirrorsedge/Ladder/LadderHandstep_03.ogg", "mirrorsedge/Ladder/LadderHandstep_04.ogg", "mirrorsedge/Ladder/LadderHandstep_05.ogg", "mirrorsedge/Ladder/LadderHandstep_06.ogg", "mirrorsedge/Ladder/LadderHandstep_07.ogg", "mirrorsedge/Ladder/LadderHandstep_08.ogg", "mirrorsedge/Ladder/LadderHandstep_09.ogg", "mirrorsedge/Ladder/LadderHandstep_10.ogg", "mirrorsedge/Ladder/LadderHandstep_21.ogg", "mirrorsedge/Ladder/LadderHandstep_22.ogg", "mirrorsedge/Ladder/LadderHandstep_23.ogg", "mirrorsedge/Ladder/LadderHandstep_24.ogg", "mirrorsedge/Ladder/LadderHandstep_25.ogg", "mirrorsedge/Ladder/LadderHandstep_26.ogg", "mirrorsedge/Ladder/LadderHandstep_27.ogg", "mirrorsedge/Ladder/LadderHandstep_28.ogg", "mirrorsedge/Ladder/LadderHandstep_29.ogg", "mirrorsedge/Ladder/LadderHandstep_30.ogg", "mirrorsedge/Ladder/LadderHandstep_41.ogg", "mirrorsedge/Ladder/LadderHandstep_42.ogg", "mirrorsedge/Ladder/LadderHandstep_43.ogg", "mirrorsedge/Ladder/LadderHandstep_44.ogg", "mirrorsedge/Ladder/LadderHandstep_45.ogg", "mirrorsedge/Ladder/LadderHandstep_46.ogg", "mirrorsedge/Ladder/LadderHandstep_47.ogg", "mirrorsedge/Ladder/LadderHandstep_48.ogg", "mirrorsedge/Ladder/LadderHandstep_49.ogg", "mirrorsedge/Ladder/LadderHandstep_50.ogg"} + pitch = {90, 110}, + sound = {"mirrorsedge/Ladder/LadderHandstep_01.ogg", "mirrorsedge/Ladder/LadderHandstep_02.ogg", "mirrorsedge/Ladder/LadderHandstep_03.ogg", "mirrorsedge/Ladder/LadderHandstep_04.ogg", "mirrorsedge/Ladder/LadderHandstep_05.ogg", "mirrorsedge/Ladder/LadderHandstep_06.ogg", "mirrorsedge/Ladder/LadderHandstep_07.ogg", "mirrorsedge/Ladder/LadderHandstep_08.ogg", "mirrorsedge/Ladder/LadderHandstep_09.ogg", "mirrorsedge/Ladder/LadderHandstep_10.ogg", "mirrorsedge/Ladder/LadderHandstep_21.ogg", "mirrorsedge/Ladder/LadderHandstep_22.ogg", "mirrorsedge/Ladder/LadderHandstep_23.ogg", "mirrorsedge/Ladder/LadderHandstep_24.ogg", "mirrorsedge/Ladder/LadderHandstep_25.ogg", "mirrorsedge/Ladder/LadderHandstep_26.ogg", "mirrorsedge/Ladder/LadderHandstep_27.ogg", "mirrorsedge/Ladder/LadderHandstep_28.ogg", "mirrorsedge/Ladder/LadderHandstep_29.ogg", "mirrorsedge/Ladder/LadderHandstep_30.ogg", "mirrorsedge/Ladder/LadderHandstep_41.ogg", "mirrorsedge/Ladder/LadderHandstep_42.ogg", "mirrorsedge/Ladder/LadderHandstep_43.ogg", "mirrorsedge/Ladder/LadderHandstep_44.ogg", "mirrorsedge/Ladder/LadderHandstep_45.ogg", "mirrorsedge/Ladder/LadderHandstep_49.ogg", "mirrorsedge/Ladder/LadderHandstep_50.ogg"} }) sound.Add({ name = "Handsteps.ConcreteRelease", - volume = 0.5, + volume = 0.75, level = 40, channel = CHAN_STATIC, - pitch = {75, 90}, + pitch = {90, 110}, sound = {"mirrorsedge/Handsteps/Concrete/ConcreteHandStepFastRelease_01.wav", "mirrorsedge/Handsteps/Concrete/ConcreteHandStepFastRelease_02.wav", "mirrorsedge/Handsteps/Concrete/ConcreteHandStepFastRelease_03.wav"} }) -- Metal Handsteps -- sound.Add({ name = "Handsteps.MetalPipeHard", volume = 1, - level = 60, + level = 50, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard1.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard2.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard3.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard4.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard5.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard6.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard7.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard8.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard9.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_HandStepHard10.wav"} }) +sound.Add({ + name = "Handsteps.MetalSoft", + volume = 1, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Ladder/LadderHandstep_41.ogg", "mirrorsedge/Ladder/LadderHandstep_42.ogg", "mirrorsedge/Ladder/LadderHandstep_43.ogg", "mirrorsedge/Ladder/LadderHandstep_44.ogg", "mirrorsedge/Ladder/LadderHandstep_45.ogg", "mirrorsedge/Ladder/LadderHandstep_49.ogg", "mirrorsedge/Ladder/LadderHandstep_50.ogg"} +}) + sound.Add({ name = "Handsteps.MetalPipeGrab", volume = 1, - level = 75, + level = 45, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab1.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab2.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab3.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab4.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab5.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab6.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab7.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab8.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab9.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab10.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab11.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab12.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab13.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab14.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab15.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab16.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab17.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Grab18.wav"} @@ -56,16 +65,36 @@ sound.Add({ sound.Add({ name = "Handsteps.MetalPipeRelease", volume = 1, - level = 75, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release1.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release2.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release3.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release4.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release5.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release6.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release7.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release8.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release9.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release10.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release11.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release12.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release13.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release14.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release15.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release16.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release17.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Release18.wav"} }) + +sound.Add({ + name = "Handsteps.MetalPipeLetGo", + volume = 1, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Handsteps/Metal/MetalPipeSwing_Release1.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_Release2.wav", "mirrorsedge/Handsteps/Metal/MetalPipeSwing_Release3.wav"} +}) + +sound.Add({ + name = "Handsteps.MetalPipeSwing", + volume = 0.5, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing1.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing2.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing3.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing4.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing5.wav","mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing6.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing7.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing8.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing9.wav","mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing10.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing11.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing12.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing13.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing14.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing15.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing16.wav", "mirrorsedge/Handsteps/Metal/ME_Handstep_Pipe_Swing17.wav",} +}) + + -- Duct HandSteps -- sound.Add({ name = "Handsteps.DuctHard", volume = 1, - level = 65, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard1.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard2.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard3.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard4.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard5.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard6.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard7.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard8.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard9.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctHard10.wav"} @@ -74,7 +103,7 @@ sound.Add({ sound.Add({ name = "Handsteps.DuctSoft", volume = 1, - level = 45, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft1.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft2.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft3.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft4.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft5.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft6.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft7.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft8.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft9.wav", "mirrorsedge/Handsteps/Metal/ME_HandStepAirDuctSoft10.wav"} @@ -92,7 +121,7 @@ sound.Add({ sound.Add({ name = "Handsteps.GlassHard", volume = 1, - level = 65, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard1.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard2.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard3.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard4.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard5.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard6.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard7.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard8.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard9.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard10.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard11.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard12.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard13.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard14.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard15.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard16.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard17.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard18.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard19.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassHard20.wav"} @@ -101,8 +130,27 @@ sound.Add({ sound.Add({ name = "Handsteps.GlassSoft", volume = 1, - level = 45, + level = 40, channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft1.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft2.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft3.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft4.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft5.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft6.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft7.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft8.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft9.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft10.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft11.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft12.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft13.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft14.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft15.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft16.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft17.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft18.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft19.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft20.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft21.wav", "mirrorsedge/Handsteps/Glass/ME_HandStepGlassSoft22.wav"} }) + +HANDSTEPS_SOFT_LUT = { + [MAT_GLASS] = "GlassSoft", + [MAT_TILE] = "GlassSoft", + [MAT_CONCRETE] = "ConcreteSoft", + [MAT_METAL] = "MetalSoft", + [MAT_GRATE] = "MetalSoft", + [MAT_VENT] = "DuctSoft" +} + +HANDSTEPS_HARD_LUT = { + [MAT_GLASS] = "GlassHard", + [MAT_TILE] = "GlassHard", + [MAT_WOOD] = "GlassHard", + [MAT_CONCRETE] = "ConcreteHard", + [MAT_METAL] = "MetalPipeHard", + [MAT_GRATE] = "MetalPipeHard", + [MAT_VENT] = "DuctHard" +} \ No newline at end of file diff --git a/gamemodes/beatrun/gamemode/sh/Sounds_Misc.lua b/gamemodes/beatrun/gamemode/sh/Sounds_Misc.lua index d96cd95b..34fbe71c 100644 --- a/gamemodes/beatrun/gamemode/sh/Sounds_Misc.lua +++ b/gamemodes/beatrun/gamemode/sh/Sounds_Misc.lua @@ -36,7 +36,7 @@ sound.Add({ sound.Add({ name = "Vault", - volume = 1, + volume = 0.75, level = 40, channel = CHAN_STATIC, pitch = {90, 110}, @@ -77,4 +77,22 @@ sound.Add({ channel = CHAN_STATIC, pitch = {90, 110}, sound = {"mirrorsedge/Ladder/Ladder_Land_01.ogg", "mirrorsedge/Ladder/Ladder_Land_02.ogg", "mirrorsedge/Ladder/Ladder_Land_03.ogg"} -}) \ No newline at end of file +}) + +sound.Add({ + name = "Slide.LadderHands", + volume = 1, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Ladder/ladder_slide_1a.wav"} +}) + +sound.Add({ + name = "Slide.Ladder", + volume = 1, + level = 40, + channel = CHAN_STATIC, + pitch = {90, 110}, + sound = {"mirrorsedge/Ladder/ladder_slide_2a.wav"} +}) diff --git a/gamemodes/beatrun/gamemode/sh/Sounds_VO.lua b/gamemodes/beatrun/gamemode/sh/Sounds_VO.lua index e88e5391..7819d1e4 100644 --- a/gamemodes/beatrun/gamemode/sh/Sounds_VO.lua +++ b/gamemodes/beatrun/gamemode/sh/Sounds_VO.lua @@ -4,45 +4,64 @@ local meta = FindMetaTable("Player") sound.Add({ name = "Faith.StrainSoft", - volume = 0.75, - pitch = 100, - level = 40, + volume = 1, + pitch = {90, 105}, + level = 50, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Strain_Soft_1.wav", "mirrorsedge/VO/Faith/Strain_Soft_2.wav", "mirrorsedge/VO/Faith/Strain_Soft_3.wav", "mirrorsedge/VO/Faith/Strain_Soft_4.wav", "mirrorsedge/VO/Faith/Strain_Soft_5.wav", "mirrorsedge/VO/Faith/Strain_Soft_6.wav", "mirrorsedge/VO/Faith/Strain_Soft_7.wav", "mirrorsedge/VO/Faith/Strain_Soft_8.wav"} }) sound.Add({ name = "Faith.StrainMedium", - volume = 0.75, - pitch = 100, - level = 40, + volume = 1, + pitch = {90, 105}, + level = 50, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Strain_Medium_1.wav", "mirrorsedge/VO/Faith/Strain_Medium_2.wav", "mirrorsedge/VO/Faith/Strain_Medium_3.wav", "mirrorsedge/VO/Faith/Strain_Medium_4.wav", "mirrorsedge/VO/Faith/Strain_Medium_5.wav", "mirrorsedge/VO/Faith/Strain_Medium_6.wav", "mirrorsedge/VO/Faith/Strain_Medium_7.wav", "mirrorsedge/VO/Faith/Strain_Medium_8.wav"} }) sound.Add({ name = "Faith.StrainHard", - volume = 0.75, - pitch = 100, - level = 40, + volume = 1, + pitch = {95, 100}, + level = 50, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Strain_Hard_1.wav", "mirrorsedge/VO/Faith/Strain_Hard_2.wav", "mirrorsedge/VO/Faith/Strain_Hard_3.wav", "mirrorsedge/VO/Faith/Strain_Hard_4.wav", "mirrorsedge/VO/Faith/Strain_Hard_5.wav", "mirrorsedge/VO/Faith/Strain_Hard_6.wav", "mirrorsedge/VO/Faith/Strain_Hard_7.wav", "mirrorsedge/VO/Faith/Strain_Hard_8.wav"} }) +sound.Add({ + name = "Faith.ImpactSoft", + volume = 1, + pitch = {95, 105}, + level = 50, + channel = CHAN_VOICE, + sound = {"mirrorsedge/VO/Faith/Impact_Soft_01.wav", "mirrorsedge/VO/Faith/Impact_Soft_02.wav", "mirrorsedge/VO/Faith/Impact_Soft_03.wav", "mirrorsedge/VO/Faith/Impact_Soft_04.wav", "mirrorsedge/VO/Faith/Impact_Soft_05.wav", "mirrorsedge/VO/Faith/Impact_Soft_06.wav", "mirrorsedge/VO/Faith/Impact_Soft_07.wav", "mirrorsedge/VO/Faith/Impact_Soft_08.wav", "mirrorsedge/VO/Faith/Impact_Soft_09.wav", "mirrorsedge/VO/Faith/Impact_Soft_10.wav", "mirrorsedge/VO/Faith/Impact_Soft_11.wav", "mirrorsedge/VO/Faith/Impact_Soft_12.wav", "mirrorsedge/VO/Faith/Impact_Soft_13.wav", "mirrorsedge/VO/Faith/Impact_Soft_14.wav"} +}) + sound.Add({ name = "Faith.Impact", - volume = 0.75, - pitch = 100, - level = 40, + volume = 1, + pitch = {95, 105}, + level = 50, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Impact_Med_01.wav", "mirrorsedge/VO/Faith/Impact_Med_02.wav", "mirrorsedge/VO/Faith/Impact_Med_03.wav", "mirrorsedge/VO/Faith/Impact_Med_04.wav", "mirrorsedge/VO/Faith/Impact_Med_05.wav", "mirrorsedge/VO/Faith/Impact_Med_06.wav", "mirrorsedge/VO/Faith/Impact_Med_07.wav", "mirrorsedge/VO/Faith/Impact_Med_08.wav", "mirrorsedge/VO/Faith/Impact_Med_09.wav", "mirrorsedge/VO/Faith/Impact_Med_10.wav", "mirrorsedge/VO/Faith/Impact_Med_11.wav", "mirrorsedge/VO/Faith/Impact_Med_12.wav", "mirrorsedge/VO/Faith/Impact_Med_13.wav", "mirrorsedge/VO/Faith/Impact_Med_14.wav"} }) +sound.Add({ + name = "Faith.ImpactHard", + volume = 1, + pitch = {95, 105}, + level = 50, + channel = CHAN_VOICE, + sound = {"mirrorsedge/VO/Faith/Impact_Hard_01.wav", "mirrorsedge/VO/Faith/Impact_Hard_02.wav", "mirrorsedge/VO/Faith/Impact_Hard_03.wav", "mirrorsedge/VO/Faith/Impact_Hard_04.wav", "mirrorsedge/VO/Faith/Impact_Hard_05.wav", "mirrorsedge/VO/Faith/Impact_Hard_06.wav", "mirrorsedge/VO/Faith/Impact_Hard_07.wav", "mirrorsedge/VO/Faith/Impact_Hard_08.wav", "mirrorsedge/VO/Faith/Impact_Hard_09.wav", "mirrorsedge/VO/Faith/Impact_Hard_10.wav", "mirrorsedge/VO/Faith/Impact_Hard_11.wav", "mirrorsedge/VO/Faith/Impact_Hard_12.wav", "mirrorsedge/VO/Faith/Impact_Hard_13.wav", "mirrorsedge/VO/Faith/Impact_Hard_14.wav"} +}) + + sound.Add({ name = "Faith.Breath.SoftShortIn", volume = 0.75, - pitch = 100, - level = 35, + pitch = {95, 105}, + level = 40, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Breath_Soft_Short_In_01.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_In_02.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_In_03.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_In_04.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_In_05.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_In_06.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_In_07.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_In_08.wav"} }) @@ -50,8 +69,8 @@ sound.Add({ sound.Add({ name = "Faith.Breath.SoftShortOut", volume = 0.75, - pitch = 100, - level = 35, + pitch = {95, 105}, + level = 40, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Breath_Soft_Short_Out_01.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_Out_02.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_Out_03.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_Out_04.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_Out_05.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_Out_06.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_Out_07.wav", "mirrorsedge/VO/Faith/Breath_Soft_Short_Out_08.wav"} }) @@ -59,7 +78,7 @@ sound.Add({ sound.Add({ name = "Faith.Breath.SoftLongIn", volume = 0.75, - pitch = 100, + pitch = {95, 105}, level = 35, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Breath_Soft_Long_In_01.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_In_02.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_In_03.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_In_04.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_In_05.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_In_06.wav"} @@ -68,7 +87,7 @@ sound.Add({ sound.Add({ name = "Faith.Breath.SoftLongOut", volume = 0.75, - pitch = 100, + pitch = {95, 105}, level = 35, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Breath_Soft_Long_Out_01.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_Out_02.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_Out_03.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_Out_04.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_Out_05.wav", "mirrorsedge/VO/Faith/Breath_Soft_Long_Out_06.wav"} @@ -77,8 +96,8 @@ sound.Add({ sound.Add({ name = "Faith.Breath.MediumShortIn", volume = 0.75, - pitch = 100, - level = 35, + pitch = {95, 105}, + level = 40, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Breath_Medium_Short_In_01.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_In_02.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_In_03.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_In_04.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_In_05.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_In_06.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_In_07.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_In_08.wav"} }) @@ -86,8 +105,8 @@ sound.Add({ sound.Add({ name = "Faith.Breath.MediumShortOut", volume = 0.75, - pitch = 100, - level = 35, + pitch = {95, 105}, + level = 40, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Breath_Medium_Short_Out_01.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_Out_02.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_Out_03.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_Out_04.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_Out_05.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_Out_06.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_Out_07.wav", "mirrorsedge/VO/Faith/Breath_Medium_Short_Out_08.wav"} }) @@ -95,8 +114,8 @@ sound.Add({ sound.Add({ name = "Faith.Breath.MediumLongIn", volume = 0.75, - pitch = 100, - level = 35, + pitch = {95, 105}, + level = 40, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Breath_Medium_Long_In_01.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_In_02.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_In_03.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_In_04.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_In_05.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_In_06.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_In_07.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_In_08.wav"} }) @@ -104,8 +123,8 @@ sound.Add({ sound.Add({ name = "Faith.Breath.MediumLongOut", volume = 0.75, - pitch = 100, - level = 35, + pitch = {95, 105}, + level = 40, channel = CHAN_VOICE, sound = {"mirrorsedge/VO/Faith/Breath_Medium_Long_Out_01.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_Out_02.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_Out_03.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_Out_04.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_Out_05.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_Out_06.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_Out_07.wav", "mirrorsedge/VO/Faith/Breath_Medium_Long_Out_08.wav"} }) diff --git a/gamemodes/beatrun/gamemode/sh/SwingPipe.lua b/gamemodes/beatrun/gamemode/sh/SwingPipe.lua index aaac1718..56b8e0e0 100644 --- a/gamemodes/beatrun/gamemode/sh/SwingPipe.lua +++ b/gamemodes/beatrun/gamemode/sh/SwingPipe.lua @@ -124,7 +124,9 @@ local function SwingpipeThink(ply, mv, cmd) end if CLIENT and IsFirstTimePredicted() or game.SinglePlayer() then - ply:EmitSound("Handsteps.ConcreteHard") + ply:EmitSound("Handsteps.MetalPipeGrab") + ply:EmitSound("Cloth.Swing") + ply:EmitSound("Handsteps.MetalPipeSwing") end ply:ViewPunch(Angle(1, 0, 0)) @@ -180,6 +182,10 @@ local function SwingpipeThink(ply, mv, cmd) mv:SetVelocity(cmd:GetViewAngles():Forward() * 260 + Vector(0, 0, 150)) ParkourEvent("jumpfar", ply) + ply:StopSound("Cloth.Swing") + ply:StopSound("Handsteps.MetalPipeSwing") + ply:EmitSound("Handsteps.MetalPipeRelease") + ply:EmitSound("Cloth.SideStep") end end diff --git a/gamemodes/beatrun/gamemode/sh/Swingbar.lua b/gamemodes/beatrun/gamemode/sh/Swingbar.lua index db870725..e1ecfe83 100644 --- a/gamemodes/beatrun/gamemode/sh/Swingbar.lua +++ b/gamemodes/beatrun/gamemode/sh/Swingbar.lua @@ -47,12 +47,17 @@ local function SwingbarCheck(ply, mv, cmd) if mv:KeyDown(IN_FORWARD) or mv:GetVelocity():Length() > 150 then ply:SetSBOffsetSpeed(2) + ply:EmitSound("Handsteps.MetalPipeSwing") + ply:EmitSound("Cloth.Swing") else ply:SetSBOffsetSpeed(0) end if CLIENT and IsFirstTimePredicted() or game.SinglePlayer() then - ply:EmitSound("Handsteps.ConcreteHard") + ply:EmitSound("Handsteps.MetalPipeHard") + timer.Simple(0.025, function() ply:EmitSound("Handsteps.MetalPipeHard") end) + + ply:EmitSound("Cloth.MovementSneak") end end end @@ -122,8 +127,18 @@ local function SwingbarThink(ply, mv, cmd) if mv:KeyDown(IN_FORWARD) and ply:GetSBPeak() ~= 1 then ply:SetSBOffsetSpeed(math.Approach(math.max(ply:GetSBOffsetSpeed(), 0), 1 + ply:GetSBOffset() / 50, math.abs(ply:GetSBOffset() / 100 - 1) * 5 * FrameTime())) + if mv:KeyPressed(IN_FORWARD) and (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) then + ply:StopSound("Handsteps.MetalPipeSwing") + ply:EmitSound("Handsteps.MetalPipeSwing") + ply:EmitSound("Cloth.Swing") + end elseif mv:KeyDown(IN_BACK) and ply:GetSBPeak() ~= 2 then ply:SetSBOffsetSpeed(math.Approach(math.min(ply:GetSBOffsetSpeed(), 0), -1, math.abs(ply:GetSBOffset() / 100 - 1) * 5 * FrameTime())) + if mv:KeyPressed(IN_BACK) and (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) then + ply:StopSound("Handsteps.MetalPipeSwing") + ply:EmitSound("Handsteps.MetalPipeSwing") + ply:EmitSound("Cloth.Swing") + end else local a = (ply:GetSBOffset() - 50) / 50 ply:SetSBOffsetSpeed(math.Approach(ply:GetSBOffsetSpeed(), 0, a * 5 * FrameTime())) @@ -144,7 +159,7 @@ local function SwingbarThink(ply, mv, cmd) ply:SetSBOffsetSpeed(2.4) end - local ang = cmd:GetViewAngles() + ang = cmd:GetViewAngles() ang.x = 0 local vel = ang:Forward() * 125 * ply:GetSBOffsetSpeed() @@ -160,7 +175,10 @@ local function SwingbarThink(ply, mv, cmd) ply:SetSBDelay(CurTime() + 1) if CLIENT and IsFirstTimePredicted() or game.SinglePlayer() then - ply:EmitSound("Cloth.VaultSwish") + ply:StopSound("Handsteps.MetalPipeSwing") + ply:StopSound("Cloth.Swing") + ply:EmitSound("Handsteps.MetalPipeLetGo") + ply:EmitSound("Cloth.SideStep") end ply:SetMEMoveLimit(GetConVar("Beatrun_SpeedLimit"):GetInt()) diff --git a/gamemodes/beatrun/gamemode/sh/Vaulting.lua b/gamemodes/beatrun/gamemode/sh/Vaulting.lua index 1d8fbe4f..6958cec9 100644 --- a/gamemodes/beatrun/gamemode/sh/Vaulting.lua +++ b/gamemodes/beatrun/gamemode/sh/Vaulting.lua @@ -53,7 +53,7 @@ local function PlayVaultAnim(ply, ang) end if game.SinglePlayer() and SERVER then - local ang = ang or ply:EyeAngles() + ang = ang or ply:EyeAngles() ang.x = 0 ang.z = 0 @@ -64,7 +64,7 @@ local function PlayVaultAnim(ply, ang) end if CLIENT then - local ang = ang or ply:EyeAngles() + ang = ang or ply:EyeAngles() ang.x = 0 ang.z = 0 ply.OrigEyeAng = ang @@ -125,7 +125,6 @@ local function Vault1(ply, mv, ang, t, h) end local mat = t.MatType - local start = mv:GetOrigin() + eyevec local vaultendcheck = Vector(vaultend) vaultendcheck.z = vaultendcheck.z + 64 @@ -146,16 +145,27 @@ local function Vault1(ply, mv, ang, t, h) ply.MantleInitVel = mv:GetVelocity() ply.MantleMatType = mat + local handstepsoft = HANDSTEPS_SOFT_LUT[mat] or "ConcreteSoft" + if stepup then ParkourEvent("stepup", ply) ply.VaultStepUp = true + ply.FootstepLand = false + ply:PlayStepSound(1) else ParkourEvent("vaultonto", ply) ply.VaultStepUp = false - end - - if game.SinglePlayer() then - ply:PlayStepSound(1) + if game.SinglePlayer() or CLIENT and IsFirstTimePredicted() then + timer.Simple(0.01, function() + ply:EmitSound("Handsteps." .. handstepsoft) + end) + timer.Simple(0.1, function() + ply:PlayStepSound(1) + end) + if t.MatType == MAT_GRATE then + ply:EmitSound("FenceClimb") + end + end end return true @@ -200,7 +210,7 @@ local function Vault2(ply, mv, ang, t, h) if t.Hit then local tsafety = {} local tsafetyout = {} - local start = nil + start = nil TraceParkourMask(tsafety) tsafety.output = tsafetyout @@ -229,15 +239,9 @@ local function Vault2(ply, mv, ang, t, h) TraceSetData(h, vaultpos, vaultpos, mins, maxs, ply) local hulltr2 = util.TraceHull(h) + local handstepsoft = HANDSTEPS_SOFT_LUT[t.MatType] or "ConcreteSoft" if not hulltr.Hit and not hulltr2.Hit then - if t.MatType == MAT_GRATE and (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) then - ply:EmitSound("FenceClimb") - elseif t.MatType == MAT_GLASS or t.MatType == MAT_TILE and (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) then - ply:EmitSound("Handsteps.GlassHard") - elseif t.MatType == MAT_VENT or t.MatType == MAT_METAL and (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) then - ply:EmitSound("Handsteps.DuctHard") - end ply:SetMantleData(mv:GetOrigin(), vaultpos, 0, 2) ply:SetWallrunTime(0) @@ -252,12 +256,15 @@ local function Vault2(ply, mv, ang, t, h) ParkourEvent("vault", ply) if game.SinglePlayer() or CLIENT and IsFirstTimePredicted() then + ply:EmitSound("Handsteps." .. handstepsoft) timer.Simple(0.1, function() ply:EmitSound("Cloth.VaultSwish") + ply:EmitSound("Vault") ply:FaithVO("Faith.StrainSoft") end) - - ply:EmitSound("Handsteps.ConcreteHard") + if t.MatType == MAT_GRATE then + ply:EmitSound("FenceClimb") + end end return true @@ -324,7 +331,7 @@ local function Vault3(ply, mv, ang, t, h) TraceParkourMask(h) local hulltr = util.TraceHull(h) - local mins, maxs = ply:GetHull() + mins, maxs = ply:GetHull() h.start = vaultpos h.endpos = h.start @@ -333,15 +340,9 @@ local function Vault3(ply, mv, ang, t, h) h.mins = mins local hulltr2 = util.TraceHull(h) + local handstephard = HANDSTEPS_HARD_LUT[t.MatType] or "ConcreteHard" if not hulltr.Hit and not hulltr2.Hit then - if t.MatType == MAT_GRATE and (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) then - ply:EmitSound("FenceClimb") - elseif t.MatType == MAT_GLASS or t.MatType == MAT_TILE and (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) then - ply:EmitSound("Handsteps.GlassHard") - elseif t.MatType == MAT_VENT or t.MatType == MAT_METAL and (CLIENT and IsFirstTimePredicted() or game.SinglePlayer()) then - ply:EmitSound("Handsteps.DuctHard") - end ply:SetMantleData(mv:GetOrigin(), vaultpos, 0, 3) ply:SetWallrunTime(0) @@ -356,12 +357,11 @@ local function Vault3(ply, mv, ang, t, h) ParkourEvent("vaultkong", ply) if game.SinglePlayer() or CLIENT and IsFirstTimePredicted() then - timer.Simple(0.1, function() - ply:EmitSound("Cloth.VaultSwish") - ply:FaithVO("Faith.StrainSoft") - end) - - ply:EmitSound("Handsteps.ConcreteHard") + ply:EmitSound("Handsteps." .. handstephard) + timer.Simple(0.025, function() ply:EmitSound("Handsteps." .. handstephard) end) + if t.MatType == MAT_GRATE then + ply:EmitSound("FenceClimb") + end end return true @@ -393,14 +393,14 @@ function Vault4(ply, mv, ang, t, h) tsafety.start = mv:GetOrigin() + aircheck + ang:Forward() * 40 tsafety.endpos = tsafety.start - hairvec - local tsafetyout = util.TraceLine(tsafety) + tsafetyout = util.TraceLine(tsafety) if tsafetyout.Hit then return false end tsafety.start = mv:GetOrigin() + chestvec tsafety.endpos = tsafety.start + ang:Forward() * 150 - local tsafetyout = util.TraceLine(tsafety) + tsafetyout = util.TraceLine(tsafety) if not tsafetyout.Hit then return false end @@ -428,6 +428,7 @@ function Vault4(ply, mv, ang, t, h) ply.MantleInitVel = mv:GetVelocity() ply.MantleInitVel.z = 0 ply.MantleMatType = t.MatType + local handstephard = HANDSTEPS_HARD_LUT[tsafetyout.MatType] or "ConcreteHard" ParkourEvent("vaulthigh", ply) @@ -438,31 +439,21 @@ function Vault4(ply, mv, ang, t, h) end if game.SinglePlayer() or CLIENT and IsFirstTimePredicted() then - timer.Simple(0.1, function() - ply:EmitSound("Cloth.VaultSwish") - ply:FaithVO("Faith.StrainSoft") - end) - - ply:EmitSound("Handsteps.ConcreteHard") + ply:EmitSound("Handsteps." .. handstephard) + timer.Simple(0.075, function() ply:EmitSound("Handsteps." .. handstephard) end) end if CLIENT and IsFirstTimePredicted() or game.SinglePlayer() then tsafety.start = ply:EyePos() tsafety.endpos = tsafety.start + ang:Forward() * 100 - local tsafetyout = util.TraceLine(tsafety) + tsafetyout = util.TraceLine(tsafety) if tsafetyout.MatType == MAT_GRATE then - ply:EmitSound("Handsteps.FenceVault") + ply:EmitSound("Handsteps.FenceVault") timer.Simple(0.45, function() ply:EmitSound("FenceClimbEnd") end) end - - if tsafetyout.MatType == MAT_GLASS or tsafetyout.MatType == MAT_TILE then - ply:EmitSound("Handsteps.GlassSoft") - elseif tsafetyout.MatType == MAT_VENT or tsafetyout.MatType == MAT_METAL then - ply:EmitSound("Handsteps.DuctSoft") - end end return true @@ -472,8 +463,8 @@ function Vault5(ply, mv, ang, t, h) if ply:GetWallrun() == 1 and ply:GetWallrunTime() - CurTime() < 0.75 then return false end if mv:GetVelocity().z < (not ply:GetDive() and -100 or -1000) then return false end - local eyevec = not ply:Crouching() and eyevec or eyevecduck - local neckvec = not ply:Crouching() and neckvec or neckvecduck + eyevec = not ply:Crouching() and eyevec or eyevecduck + neckvec = not ply:Crouching() and neckvec or neckvecduck t.start = mv:GetOrigin() + eyevec + ang:Forward() * 70 t.endpos = t.start - neckvec @@ -515,6 +506,7 @@ function Vault5(ply, mv, ang, t, h) h.mins, h.maxs = ply:GetHull() local hulltr = util.TraceHull(h) + local handstepsoft = HANDSTEPS_SOFT_LUT[t.MatType] or "ConcreteSoft" if not hulltr.Hit then if t.HitNormal.x ~= 0 then @@ -535,7 +527,16 @@ function Vault5(ply, mv, ang, t, h) ParkourEvent("vaultontohigh", ply) - if game.SinglePlayer() then + if game.SinglePlayer() or CLIENT and IsFirstTimePredicted() then + timer.Simple(0.05, function() + ply:EmitSound("Handsteps." .. handstepsoft) + end) + timer.Simple(0.1, function() + ply:EmitSound("Handsteps." .. handstepsoft) + end) + timer.Simple(0.45, function() + ply:PlayStepSound(1) + end) ply:PlayStepSound(1) end diff --git a/gamemodes/beatrun/gamemode/sh/Wallrun.lua b/gamemodes/beatrun/gamemode/sh/Wallrun.lua index 170d3058..9b393a61 100644 --- a/gamemodes/beatrun/gamemode/sh/Wallrun.lua +++ b/gamemodes/beatrun/gamemode/sh/Wallrun.lua @@ -3,7 +3,7 @@ local hwrtime = 1.5 tiltdir = 1 local tilt = 0 -local PuristWallrun = CreateConVar("Beatrun_PuristWallrun", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE, FCVAR_NOTIFY}, "\"Realistic\" wallrunning", 0, 1) +PuristWallrun = CreateConVar("Beatrun_PuristWallrun", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "'Realistic' wallrunning", 0, 1) function WallrunningTilt(ply, pos, ang, fov) local wr = ply:GetWallrun() @@ -65,6 +65,10 @@ local wrmins = Vector(-16, -16, 0) local wrmaxs = Vector(16, 16, 16) local function WallrunningThink(ply, mv, cmd) + + mat = ply.WallRunTraceMat + local wallsound = FOOTSTEPS_MAT_TYPE_TO_STR[mat] or "Concrete" + local wr = ply:GetWallrun() if wr ~= 0 and ply:OnGround() then @@ -115,7 +119,14 @@ local function WallrunningThink(ply, mv, cmd) if mv:KeyPressed(IN_JUMP) then ParkourEvent("jumpwallrun", ply) - + if game.SinglePlayer() or CLIENT and IsFirstTimePredicted() then + ply:EmitSound("WallrunRelease.Concrete") + timer.Simple(0.025, function() + ply:EmitSound("WallrunRelease.Concrete") + ply:EmitSound("Cloth.SideStep") + end) + ply:EmitSound("Cloth.MovementRun") + end ply:SetSafetyRollKeyTime(CurTime() + 0.001) vel.z = 30 @@ -160,6 +171,7 @@ local function WallrunningThink(ply, mv, cmd) tr.output = trout util.TraceLine(tr) + ply.WallRunTraceMat = trout.MatType or MAT_CONCRETE if not trout.Hit then ply:SetWallrunTime(0) @@ -177,7 +189,9 @@ local function WallrunningThink(ply, mv, cmd) ParkourEvent(event, ply) if IsFirstTimePredicted() then - ply:EmitSound("Wallrun.Concrete") + ply:EmitSound("Wallrun." .. wallsound) + ply:EmitSound("Cloth.MovementRun") + timer.Simple(0.025, function() ply:EmitSound("WallrunRelease.Concrete") end) end end end @@ -212,6 +226,7 @@ local function WallrunningThink(ply, mv, cmd) tr.output = trout util.TraceHull(tr) + ply.WallRunTraceMat = trout.MatType or MAT_CONCRETE end if not ply:GetWallrunElevated() and trout.Hit then @@ -277,6 +292,7 @@ local function WallrunningThink(ply, mv, cmd) ply:SetWallrunDir(trout.HitNormal) end end + ply.WallRunTraceMat = trout.MatType or MAT_CONCRETE if mv:KeyPressed(IN_JUMP) and ply:GetWallrunTime() - CurTime() ~= hwrtime then ply:SetQuickturn(false) @@ -290,14 +306,16 @@ local function WallrunningThink(ply, mv, cmd) ParkourEvent(event, ply) if IsFirstTimePredicted() then - ply:EmitSound("Wallrun.Concrete") + ply:EmitSound("Wallrun." .. wallsound) + ply:EmitSound("Cloth.MovementRun") + timer.Simple(0.025, function() ply:EmitSound("WallrunRelease.Concrete") end) end end end if ply:GetWallrunSoundTime() < CurTime() then local delay = nil - local wr = ply:GetWallrun() + wr = ply:GetWallrun() if wr == 1 then delay = math.Clamp(math.abs(ply:GetWallrunTime() - CurTime() - 2.75) / vwrtime * 0.165, 0.175, 0.3) @@ -306,7 +324,8 @@ local function WallrunningThink(ply, mv, cmd) end if SERVER then - ply:EmitSound("Wallrun.Concrete") + ply:EmitSound("Wallrun." .. wallsound) + ply:EmitSound("Cloth.MovementRun") timer.Simple(0.025, function() ply:EmitSound("WallrunRelease.Concrete") @@ -396,7 +415,7 @@ local function WallrunningCheck(ply, mv, cmd) angdir.y = angdir.y - 180 local wallnormal = trout.HitNormal - local eyeang = Angle(angdir) + eyeang = Angle(angdir) eyeang.x = 0 tr.start = ply:EyePos() - Vector(0, 0, 5) @@ -406,6 +425,7 @@ local function WallrunningCheck(ply, mv, cmd) tr.output = trout util.TraceLine(tr) + ply.WallRunTraceMat = trout.MatType or MAT_CONCRETE if not trout.Hit then return end @@ -450,6 +470,7 @@ local function WallrunningCheck(ply, mv, cmd) tr.output = trout util.TraceLine(tr) + ply.WallRunTraceMat = trout.MatType or MAT_CONCRETE if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then return end @@ -491,6 +512,7 @@ local function WallrunningCheck(ply, mv, cmd) tr.output = trout util.TraceLine(tr) + ply.WallRunTraceMat = trout.MatType or MAT_CONCRETE if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then return end diff --git a/gamemodes/beatrun/gamemode/sh/WallrunME.lua b/gamemodes/beatrun/gamemode/sh/WallrunME.lua index 57b3ff44..3acce2ca 100644 --- a/gamemodes/beatrun/gamemode/sh/WallrunME.lua +++ b/gamemodes/beatrun/gamemode/sh/WallrunME.lua @@ -40,7 +40,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult) angdir.y = angdir.y - 180 local wallnormal = trout.HitNormal - local eyeang = Angle(angdir) + eyeang = Angle(angdir) eyeang.x = 0 tr.start = ply:EyePos() - Vector(0, 0, 5) @@ -53,6 +53,8 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult) if not trout.Hit then return end + ply.WallRunTraceMat = trout.MatType + if SERVER then ply:EmitSound("Bump.Concrete") end @@ -179,6 +181,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult) end function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains) + if wr == 4 then local ang = cmd:GetViewAngles() ang.x = 0 @@ -208,6 +211,14 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains) if mv:KeyPressed(IN_JUMP) then ParkourEvent("jumpwallrun", ply) + if SERVER then + ply:EmitSound("WallrunRelease.Concrete") + timer.Simple(0.025, function() + ply:EmitSound("WallrunRelease.Concrete") + ply:EmitSound("Cloth.SideStep") + end) + ply:EmitSound("Cloth.MovementRun") + end ply:SetSafetyRollKeyTime(CurTime() + 0.001) @@ -241,21 +252,23 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains) mv:SetForwardSpeed(0) mv:SetSideSpeed(0) - local tr = ply.WallrunTrace - local trout = ply.WallrunTraceOut - local eyeang = ply.WallrunOrigAng or Angle() - eyeang.x = 0 + do + local tr = ply.WallrunTrace + local trout = ply.WallrunTraceOut + local eyeang = ply:EyeAngles() + eyeang.x = 0 - tr.start = ply:EyePos() - Vector(0, 0, 5) - tr.endpos = tr.start + eyeang:Forward() * 40 - tr.filter = ply - tr.collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT - tr.output = trout + tr.start = ply:EyePos() - Vector(0, 0, 5) + tr.endpos = tr.start + eyeang:Forward() * 40 + tr.filter = ply + tr.collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT + tr.output = trout - util.TraceLine(tr) + util.TraceLine(tr) - if not trout.Hit then - ply:SetWallrunTime(0) + if trout.Hit then + ply.WallRunTraceMat = trout.MatType + end end if mv:KeyPressed(IN_JUMP) and (mv:KeyDown(IN_MOVELEFT) or mv:KeyDown(IN_MOVERIGHT)) then @@ -263,14 +276,19 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains) local vel = mv:GetVelocity() vel.z = 250 - mv:SetVelocity(vel + eyeang:Right() * 150 * dir) + mv:SetVelocity(vel + ply:EyeAngles():Right() * 150 * dir) local event = ply:GetWallrun() == 3 and "jumpwallrunright" or "jumpwallrunleft" ParkourEvent(event, ply) if IsFirstTimePredicted() then - ply:EmitSound("Wallrun.Concrete") + local wallsound = FOOTSTEPS_MAT_TYPE_TO_STR[ply.WallRunTraceMat] or "Concrete" + ply:EmitSound("Wallrun." .. wallsound) + timer.Simple(0.025, function() + ply:EmitSound("WallrunRelease.Concrete") + end) + ply:EmitSound("Cloth.MovementRun") end end end @@ -371,6 +389,8 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains) end end + ply.WallRunTraceMat = trout.MatType + if mv:KeyPressed(IN_JUMP) and ply:GetWallrunTime() - CurTime() ~= hwrtime then ply:SetQuickturn(false) ply:SetWallrunTime(0) @@ -383,14 +403,19 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains) ParkourEvent(event, ply) if IsFirstTimePredicted() then - ply:EmitSound("Wallrun.Concrete") + local wallsound = FOOTSTEPS_MAT_TYPE_TO_STR[ply.WallRunTraceMat] or "Concrete" + ply:EmitSound("Wallrun." .. wallsound) + timer.Simple(0.025, function() + ply:EmitSound("WallrunRelease.Concrete") + end) + ply:EmitSound("Cloth.MovementRun") end end end if ply:GetWallrunSoundTime() < CurTime() then local delay = nil - local wr = ply:GetWallrun() + wr = ply:GetWallrun() if wr == 1 then delay = math.Clamp(math.abs(ply:GetWallrunTime() - CurTime() - 2.75) / vwrtime * 0.165, 0.175, 0.3) @@ -399,7 +424,9 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains) end if SERVER then - ply:EmitSound("Wallrun.Concrete") + local wallsound = FOOTSTEPS_MAT_TYPE_TO_STR[ply.WallRunTraceMat] or "Concrete" + ply:EmitSound("Wallrun." .. wallsound) + ply:EmitSound("Cloth.MovementRun") timer.Simple(0.025, function() ply:EmitSound("WallrunRelease.Concrete") @@ -421,6 +448,7 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains) BodyAnimCycle = 0 BodyAnim:SetSequence("jumpair") + elseif game.SinglePlayer() and wr == 1 then net.Start("BodyAnimWallrun") net.WriteBool(false) diff --git a/gamemodes/beatrun/gamemode/sv/DoorBash.lua b/gamemodes/beatrun/gamemode/sv/DoorBash.lua index f33f2a5e..bc0e78ae 100644 --- a/gamemodes/beatrun/gamemode/sv/DoorBash.lua +++ b/gamemodes/beatrun/gamemode/sv/DoorBash.lua @@ -7,7 +7,7 @@ util.AddNetworkString("DoorBashAnim") hook.Add("PlayerUse", "DoorBash", function(ply, ent) if doors[ent:GetClass()] then - if ply:GetVelocity():Length() < 100 or ply:Crouching() then return end + if ply:GetVelocity():Length() < 200 or ply:Crouching() then return end if ent.bashdelay and ent.bashdelay > CurTime() then return end if ent:GetInternalVariable("m_bLocked") then return end diff --git a/gamemodes/beatrun/gamemode/sv/HitSoundsME.lua b/gamemodes/beatrun/gamemode/sv/HitSoundsME.lua index dc5632bd..5b754fdf 100644 --- a/gamemodes/beatrun/gamemode/sv/HitSoundsME.lua +++ b/gamemodes/beatrun/gamemode/sv/HitSoundsME.lua @@ -3,11 +3,16 @@ util.AddNetworkString("DeathStopSound") hook.Add("EntityTakeDamage", "MEHitSounds", function(ply, dmginfo) if not ply:IsPlayer() then return end + if not dmginfo:IsFallDamage() then + ply:FaithVO("Faith.ImpactHard") + end + if dmginfo:IsBulletDamage() then if ply:GetVelocity():Length() > 400 then return true end -- Block damage if they're going very fast ply:EmitSound("mirrorsedge/Flesh_0" .. tostring(math.random(1, 9)) .. ".wav") -- ply:ViewPunch(Angle(math.Rand(-10, -5), 0, math.Rand(0, 5))) -- People cried so hard about this + elseif not (ply:HasGodMode() or cvars.Bool("sbox_godmode", false)) and (dmginfo:IsFallDamage() and ply:Health() - dmginfo:GetDamage() <= 0) then net.Start("DeathStopSound") net.Send(ply) diff --git a/sound/mirrorsedge/cloth/Cloth_Swing_1a.wav b/sound/mirrorsedge/cloth/Cloth_Swing_1a.wav new file mode 100644 index 00000000..0926d116 Binary files /dev/null and b/sound/mirrorsedge/cloth/Cloth_Swing_1a.wav differ diff --git a/sound/mirrorsedge/cloth/Cloth_Swing_1b.wav b/sound/mirrorsedge/cloth/Cloth_Swing_1b.wav new file mode 100644 index 00000000..230c4585 Binary files /dev/null and b/sound/mirrorsedge/cloth/Cloth_Swing_1b.wav differ diff --git a/sound/mirrorsedge/cloth/Cloth_Swing_1c.wav b/sound/mirrorsedge/cloth/Cloth_Swing_1c.wav new file mode 100644 index 00000000..5b95cef6 Binary files /dev/null and b/sound/mirrorsedge/cloth/Cloth_Swing_1c.wav differ diff --git a/sound/mirrorsedge/cloth/Cloth_Swing_1d.wav b/sound/mirrorsedge/cloth/Cloth_Swing_1d.wav new file mode 100644 index 00000000..23de027d Binary files /dev/null and b/sound/mirrorsedge/cloth/Cloth_Swing_1d.wav differ diff --git a/sound/mirrorsedge/ladder/Ladder_Slide_1a.wav b/sound/mirrorsedge/ladder/Ladder_Slide_1a.wav new file mode 100644 index 00000000..bc40233e Binary files /dev/null and b/sound/mirrorsedge/ladder/Ladder_Slide_1a.wav differ diff --git a/sound/mirrorsedge/ladder/Ladder_Slide_2a.wav b/sound/mirrorsedge/ladder/Ladder_Slide_2a.wav new file mode 100644 index 00000000..42092ca6 Binary files /dev/null and b/sound/mirrorsedge/ladder/Ladder_Slide_2a.wav differ diff --git a/sound/mirrorsedge/slide/ME_FootStep_WaterShallowSlideLoop.wav b/sound/mirrorsedge/slide/ME_FootStep_WaterShallowSlideLoop.wav index 1c662324..27cade28 100644 Binary files a/sound/mirrorsedge/slide/ME_FootStep_WaterShallowSlideLoop.wav and b/sound/mirrorsedge/slide/ME_FootStep_WaterShallowSlideLoop.wav differ