mirror of
https://github.com/JonnyBro/beatrun.git
synced 2024-12-27 20:43:02 +05:00
Shared cleanup and Discord Presence
This commit is contained in:
parent
7e58a2936e
commit
744cb37c1a
45 changed files with 1288 additions and 2120 deletions
10
FIXES.md
10
FIXES.md
|
@ -1,8 +1,12 @@
|
|||
# Сделанные мной фиксы
|
||||
# Сделанные мной фиксы и добавления
|
||||
* Разрешение Overdrive на сервере - Beatrun_AllowOvedriveInMultiplayer.
|
||||
* Небольшой толчёк камеры при нырянии.
|
||||
* Discord Rich Presence
|
||||
|
||||
* Фикс трёх букв из-за которых нихуя не работало.
|
||||
* Быстрый поворот на земле (ПКМ пока бежишь/стоишь) включён по умолчанию (Beatrun_QuickturnGround).
|
||||
* Быстрый поворот только с руками бегуна (Фикс поворотов при прицеливании и т.п.).
|
||||
* Убрал ваш SteamID в углу потому что могу.
|
||||
* Фикс ошибки запуска курса.
|
||||
* Фикс использования хука (пробел по стене когда вы в воздухе) и это починило сохранение времени.
|
||||
* Фикс сортировки таблицы лидеров.
|
||||
* Фикс сортировки таблицы лидеров.
|
||||
* Убрал ваш SteamID в углу потому что могу.
|
|
@ -349,10 +349,13 @@ end
|
|||
|
||||
local tr = {}
|
||||
local tr_result = {}
|
||||
|
||||
local allow_overdrive = CreateClientConVar("Beatrun_AllowOvedriveInMultiplayer", "0", false, false, "Allow ovedrive on servers")
|
||||
|
||||
function SWEP:PrimaryAttack()
|
||||
local ply = self.Owner
|
||||
|
||||
if ply:KeyDown(IN_USE) and game.SinglePlayer() then
|
||||
if ply:KeyDown(IN_USE) and (game.SinglePlayer() or allow_overdrive:GetBool()) then
|
||||
local mult = (ply:InOverdrive() and 1) or 1.25
|
||||
local fovmult = (mult == 1 and 1) or 1.1
|
||||
ply:SetMEMoveLimit(ply:GetMEMoveLimit()*0.75)
|
||||
|
|
65
beatrun/gamemodes/beatrun/gamemode/cl/DiscordPresence.lua
Normal file
65
beatrun/gamemodes/beatrun/gamemode/cl/DiscordPresence.lua
Normal file
|
@ -0,0 +1,65 @@
|
|||
if file.Find("lua/bin/gmcl_gdiscord_*.dll", "GAME")[1] == nil then return end
|
||||
require("gdiscord")
|
||||
|
||||
local image = "default"
|
||||
local discord_id = "1109438051496775682"
|
||||
local refresh_time = 60
|
||||
local discord_start = discord_start or -1
|
||||
|
||||
function DiscordUpdate()
|
||||
local rpc_data = {}
|
||||
|
||||
if game.SinglePlayer() then
|
||||
rpc_data["state"] = "Singleplayer"
|
||||
else
|
||||
local ip = game.GetIPAddress()
|
||||
|
||||
if ip == "loopback" then
|
||||
if GetConVar("p2p_enabled"):GetBool() then
|
||||
rpc_data["state"] = "Peer 2 Peer"
|
||||
else
|
||||
rpc_data["state"] = "Local Server"
|
||||
end
|
||||
else
|
||||
-- rpc_data["state"] = string.Replace(ip, ":27015", "")
|
||||
rpc_data["state"] = "Dedicated Server"
|
||||
end
|
||||
end
|
||||
|
||||
rpc_data["partySize"] = player.GetCount()
|
||||
rpc_data["partyMax"] = game.MaxPlayers()
|
||||
|
||||
if game.SinglePlayer() then
|
||||
rpc_data["partyMax"] = 0
|
||||
end
|
||||
|
||||
local level = LocalPlayer():GetLevel()
|
||||
local customname = hook.Run("BeatrunHUDCourse")
|
||||
local course = customname and customname or Course_Name ~= "" and Course_Name or "Freeplay"
|
||||
|
||||
if course == nil then
|
||||
course = "Freeplay"
|
||||
end
|
||||
|
||||
rpc_data["details"] = "Level: " .. level .. " | Map: " .. game.GetMap()
|
||||
rpc_data["startTimestamp"] = discord_start
|
||||
|
||||
rpc_data["largeImageKey"] = image
|
||||
rpc_data["largeImageText"] = course
|
||||
|
||||
print("UPDATING DISCORD RPC")
|
||||
DiscordUpdateRPC(rpc_data)
|
||||
end
|
||||
|
||||
hook.Add("Initialize", "UpdateDiscordStatus", function()
|
||||
timer.Simple(10, function()
|
||||
discord_start = os.time()
|
||||
|
||||
DiscordRPCInitialize(discord_id)
|
||||
DiscordUpdate()
|
||||
|
||||
if timer.Exists("DiscordRPCTimer") then timer.Remove("DiscordRPCTimer") end
|
||||
|
||||
timer.Create("DiscordRPCTimer", refresh_time, 0, DiscordUpdate)
|
||||
end)
|
||||
end)
|
|
@ -1,9 +1,7 @@
|
|||
local dircache = nil
|
||||
|
||||
hook.Add("PlayerFootstepME", "Balance", function (ply, pos, foot, sound, volume, filter, skipcheck)
|
||||
if IsValid(ply:GetBalanceEntity()) then
|
||||
return
|
||||
end
|
||||
hook.Add("PlayerFootstepME", "Balance", function(ply, pos, foot, sound, volume, filter, skipcheck)
|
||||
if IsValid(ply:GetBalanceEntity()) then return end
|
||||
|
||||
if not ply.BalanceTrace then
|
||||
ply.BalanceTrace = {}
|
||||
|
@ -16,6 +14,7 @@ hook.Add("PlayerFootstepME", "Balance", function (ply, pos, foot, sound, volume,
|
|||
|
||||
local tr = ply.BalanceTrace
|
||||
local trout = ply.BalanceTraceOut
|
||||
|
||||
tr.filter = ply
|
||||
tr.start = pos
|
||||
tr.endpos = pos - Vector(0, 0, 25)
|
||||
|
@ -25,7 +24,8 @@ hook.Add("PlayerFootstepME", "Balance", function (ply, pos, foot, sound, volume,
|
|||
if trout.Entity.Balance then
|
||||
ply:SetBalance(0.1)
|
||||
ply:SetBalanceEntity(trout.Entity)
|
||||
timer.Simple(0, function ()
|
||||
|
||||
timer.Simple(0, function()
|
||||
ParkourEvent("walkbalancefwd", ply)
|
||||
end)
|
||||
|
||||
|
@ -37,18 +37,21 @@ hook.Add("PlayerFootstepME", "Balance", function (ply, pos, foot, sound, volume,
|
|||
end
|
||||
end
|
||||
end)
|
||||
hook.Add("SetupMove", "Balance", function (ply, mv, cmd)
|
||||
|
||||
hook.Add("SetupMove", "Balance", function(ply, mv, cmd)
|
||||
if IsValid(ply:GetBalanceEntity()) then
|
||||
local balance = ply:GetBalanceEntity()
|
||||
|
||||
mv:SetForwardSpeed(math.max(mv:GetForwardSpeed() * 0.01, 0))
|
||||
|
||||
local dist, nearest, distlen = util.DistanceToLine(balance:GetPos(), balance:GetPos() + balance:GetAngles():Up() * balance:GetBalanceLength(), mv:GetOrigin())
|
||||
local _, nearest, distlen = util.DistanceToLine(balance:GetPos(), balance:GetPos() + balance:GetAngles():Up() * balance:GetBalanceLength(), mv:GetOrigin())
|
||||
local distend = balance:GetPos():Distance(balance:GetPos() + balance:GetAngles():Up() * balance:GetBalanceLength())
|
||||
|
||||
nearest.z = mv:GetOrigin().z
|
||||
|
||||
mv:SetOrigin(nearest)
|
||||
mv:SetButtons(bit.band(mv:GetButtons(), bit.bnot(IN_JUMP)))
|
||||
|
||||
cmd:RemoveKey(IN_JUMP)
|
||||
|
||||
local tr = ply.BalanceTrace
|
||||
|
@ -111,6 +114,7 @@ hook.Add("SetupMove", "Balance", function (ply, mv, cmd)
|
|||
|
||||
if ang:Forward():Dot(bang:Up()) > 0.5 then
|
||||
local fallpos = mv:GetOrigin() + ply:GetBalanceEntity():GetAngles():Right() * 0.75 * ply:GetBalance()
|
||||
|
||||
tr.start = fallpos
|
||||
tr.endpos = fallpos
|
||||
|
||||
|
@ -123,6 +127,7 @@ hook.Add("SetupMove", "Balance", function (ply, mv, cmd)
|
|||
end
|
||||
else
|
||||
local fallpos = mv:GetOrigin() + ply:GetBalanceEntity():GetAngles():Right() * -0.75 * ply:GetBalance()
|
||||
|
||||
tr.start = fallpos
|
||||
tr.endpos = fallpos
|
||||
|
||||
|
@ -147,7 +152,7 @@ end)
|
|||
local angy = 0
|
||||
local attack2 = false
|
||||
|
||||
hook.Add("CreateMove", "Balance", function (cmd)
|
||||
hook.Add("CreateMove", "Balance", function(cmd)
|
||||
local ply = LocalPlayer()
|
||||
|
||||
if IsValid(ply:GetBalanceEntity()) and IsValid(BodyAnim) then
|
||||
|
@ -179,6 +184,7 @@ hook.Add("CreateMove", "Balance", function (cmd)
|
|||
ang.y = angy
|
||||
|
||||
cmd:SetViewAngles(ang)
|
||||
|
||||
BodyAnim:SetPoseParameter("lean_roll", math.Clamp(ply:GetBalance(), -60, 60))
|
||||
|
||||
if IsValid(BodyAnimArmCopy) then
|
||||
|
@ -220,4 +226,4 @@ hook.Add("CreateMove", "Balance", function (cmd)
|
|||
lockang2 = false
|
||||
dircache = nil
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -50,7 +50,7 @@ function LoadCheckpoints()
|
|||
end
|
||||
|
||||
if CLIENT then
|
||||
timer.Simple(1, function ()
|
||||
timer.Simple(1, function()
|
||||
for k, v in pairs(ents.FindByClass("tt_cp")) do
|
||||
if IsValid(v) and v.GetCPNum then
|
||||
Checkpoints[v:GetCPNum()] = v
|
||||
|
@ -65,9 +65,9 @@ function LoadCheckpoints()
|
|||
end
|
||||
|
||||
if CLIENT then
|
||||
local FastStart = CreateClientConVar("Beatrun_FastStart", "0", true, true, "Faster start countdown")
|
||||
CreateClientConVar("Beatrun_FastStart", "0", true, true, "Faster start countdown")
|
||||
|
||||
net.Receive("Checkpoint_Hit", function ()
|
||||
net.Receive("Checkpoint_Hit", function()
|
||||
local timetaken = CurTime() - lastcptime
|
||||
local vspb = nil
|
||||
|
||||
|
@ -107,7 +107,8 @@ if CLIENT then
|
|||
|
||||
print(timetaken, vspb)
|
||||
end)
|
||||
net.Receive("Checkpoint_Finish", function ()
|
||||
|
||||
net.Receive("Checkpoint_Finish", function()
|
||||
table.insert(cptimes, CurTime() - lastcptime)
|
||||
|
||||
local totaltime = CurTime() - Course_StartTime
|
||||
|
@ -145,7 +146,7 @@ if CLIENT then
|
|||
end
|
||||
|
||||
if SERVER then
|
||||
net.Receive("Checkpoint_Finish", function (len, ply)
|
||||
net.Receive("Checkpoint_Finish", function(len, ply)
|
||||
local pb = net.ReadFloat() or 0
|
||||
local svtime = CurTime() - ply.Course_StartTime
|
||||
|
||||
|
@ -165,10 +166,13 @@ function FinishCourse(ply)
|
|||
ply:ScreenFade(SCREENFADE.IN, finishcolor, 0, 4)
|
||||
ply:SetLaggedMovementValue(0.1)
|
||||
ply:DrawViewModel(false)
|
||||
|
||||
net.Start("Checkpoint_Finish")
|
||||
net.Send(ply)
|
||||
|
||||
ply:SetNW2Int("CPNum", -1)
|
||||
timer.Simple(4, function ()
|
||||
|
||||
timer.Simple(4, function()
|
||||
ply:SetLaggedMovementValue(1)
|
||||
ply:DrawViewModel(true)
|
||||
end)
|
||||
|
@ -176,11 +180,8 @@ end
|
|||
|
||||
local countdown = 0
|
||||
local countdownalpha = 255
|
||||
local countdowntext = {
|
||||
"Ready",
|
||||
"Set",
|
||||
"Go!!"
|
||||
}
|
||||
|
||||
local countdowntext = {"Ready", "Set", "Go!!"}
|
||||
|
||||
local function StartCountdown()
|
||||
local CT = CurTime()
|
||||
|
@ -206,7 +207,7 @@ local function StartCountdownHUD()
|
|||
surface.SetFont("DermaLarge")
|
||||
surface.SetTextColor(255, 255, 255, countdownalpha)
|
||||
|
||||
local w, h = surface.GetTextSize(text)
|
||||
local w, _ = surface.GetTextSize(text)
|
||||
|
||||
surface.SetTextPos(ScrW() * 0.5 - w * 0.5, ScrH() * 0.3)
|
||||
surface.DrawText(text)
|
||||
|
@ -234,8 +235,7 @@ function CourseHUD()
|
|||
|
||||
if incourse then
|
||||
local text = string.FormattedTime(totaltime, "%02i:%02i:%02i")
|
||||
local w, h = surface.GetTextSize(text)
|
||||
|
||||
local w, _ = surface.GetTextSize(text)
|
||||
surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.075 + vpz)
|
||||
surface.DrawText(text)
|
||||
end
|
||||
|
@ -248,8 +248,7 @@ function CourseHUD()
|
|||
end
|
||||
|
||||
text = speed .. " km/h"
|
||||
w, h = surface.GetTextSize(text)
|
||||
|
||||
w, _ = surface.GetTextSize(text)
|
||||
surface.SetTextPos(ScrW() * 0.85 - w * 0.5 + vpx, ScrH() * 0.85 + vpz)
|
||||
surface.DrawText(text)
|
||||
end
|
||||
|
@ -264,7 +263,8 @@ function CourseHUD()
|
|||
end
|
||||
|
||||
if timealpha > 0 then
|
||||
local w, h = surface.GetTextSize(timetext)
|
||||
local w, _ = surface.GetTextSize(timetext)
|
||||
|
||||
timealpha = math.max(0, timealpha - FrameTime() * 250)
|
||||
timecolor.a = math.min(255, timealpha)
|
||||
|
||||
|
@ -303,9 +303,7 @@ function SaveReplayData()
|
|||
local replay = util.TableToJSON(LocalPlayer().ReplayTicks)
|
||||
local dir = "beatrun/replays/" .. game.GetMap() .. "/"
|
||||
|
||||
if not replay then
|
||||
return
|
||||
end
|
||||
if not replay then return end
|
||||
|
||||
file.CreateDir(dir)
|
||||
file.Write(dir .. Course_ID .. ".txt", util.Compress(replay))
|
||||
|
@ -351,7 +349,7 @@ function StartCourse(spawntime)
|
|||
end
|
||||
end
|
||||
|
||||
net.Receive("BeatrunSpawn", function ()
|
||||
net.Receive("BeatrunSpawn", function()
|
||||
local spawntime = net.ReadFloat()
|
||||
local replay = net.ReadBool()
|
||||
|
||||
|
@ -362,4 +360,4 @@ net.Receive("BeatrunSpawn", function ()
|
|||
if LocalPlayer().GetInfoNum then
|
||||
StartCourse(spawntime)
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -1,17 +1,14 @@
|
|||
local ClimbingTimes = {
|
||||
5,
|
||||
1.25,
|
||||
1,
|
||||
1,
|
||||
nil,
|
||||
2
|
||||
}
|
||||
local ClimbingTimes = {5, 1.25, 1, 1, nil, 2}
|
||||
|
||||
--[[
|
||||
local CLIMB_HANG = 1
|
||||
local CLIMB_HEAVEUP = 2
|
||||
local CLIMB_STRAFELEFT = 3
|
||||
local CLIMB_STRAFERIGHT = 4
|
||||
local CLIMB_FOLDEDSTART = 5
|
||||
local CLIMB_FOLDEDHEAVEUP = 6
|
||||
|
||||
|
||||
local climb1 = {
|
||||
followplayer = false,
|
||||
animmodelstring = "climbanim",
|
||||
|
@ -21,15 +18,14 @@ local climb1 = {
|
|||
smoothend = true,
|
||||
AnimString = "climb1"
|
||||
}
|
||||
local climbstrings = {
|
||||
"climb1",
|
||||
"climb2"
|
||||
}
|
||||
|
||||
local climbstrings = {"climb1", "climb2"}
|
||||
]]
|
||||
|
||||
if game.SinglePlayer() and SERVER then
|
||||
util.AddNetworkString("Climb_SPFix")
|
||||
elseif game.SinglePlayer() and CLIENT then
|
||||
net.Receive("Climb_SPFix", function ()
|
||||
net.Receive("Climb_SPFix", function()
|
||||
local lock = net.ReadBool()
|
||||
local neweyeang = net.ReadBool()
|
||||
local ang = net.ReadAngle()
|
||||
|
@ -54,11 +50,13 @@ local function ClimbingEnd(ply, mv, cmd)
|
|||
local tr = {
|
||||
filter = ply
|
||||
}
|
||||
|
||||
tr.mins, tr.maxs = ply:GetHull()
|
||||
tr.start = mv:GetOrigin()
|
||||
tr.endpos = tr.start
|
||||
tr.mask = MASK_PLAYERSOLID
|
||||
tr.collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT
|
||||
|
||||
local trout = util.TraceHull(tr)
|
||||
|
||||
if trout.Hit then
|
||||
|
@ -90,10 +88,10 @@ local function ClimbingEnd(ply, mv, cmd)
|
|||
|
||||
if game.SinglePlayer() then
|
||||
net.Start("Climb_SPFix")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.WriteAngle(angle_zero)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.WriteAngle(angle_zero)
|
||||
net.WriteBool(false)
|
||||
net.Send(ply)
|
||||
end
|
||||
end
|
||||
|
@ -102,10 +100,12 @@ 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:SetClimbing(6)
|
||||
ply:SetClimbingTime(0)
|
||||
elseif ply:GetClimbingDelay() < CurTime() then
|
||||
ParkourEvent("hangfoldedendhang", ply)
|
||||
|
||||
ply:SetClimbing(1)
|
||||
ply:SetClimbingDelay(CurTime() + 1.35)
|
||||
end
|
||||
|
@ -124,6 +124,7 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
mv:SetForwardSpeed(0)
|
||||
mv:SetSideSpeed(0)
|
||||
mv:SetUpSpeed(0)
|
||||
|
||||
ClimbingEnd(ply, mv, cmd)
|
||||
|
||||
return
|
||||
|
@ -138,20 +139,24 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
|
||||
if game.SinglePlayer() then
|
||||
net.Start("Climb_SPFix")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.WriteAngle(angle_zero)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.WriteAngle(angle_zero)
|
||||
net.WriteBool(false)
|
||||
net.Send(ply)
|
||||
end
|
||||
end
|
||||
|
||||
if mv:KeyDown(IN_DUCK) then
|
||||
mv:SetOrigin(ply:GetClimbingStart() - ply:GetClimbingAngle():Forward() * 5)
|
||||
|
||||
ply:SetMoveType(MOVETYPE_WALK)
|
||||
|
||||
mv:SetButtons(0)
|
||||
|
||||
ply:SetClimbing(0)
|
||||
ply:SetCrouchJumpBlocked(true)
|
||||
|
||||
ParkourEvent("hangend", ply)
|
||||
|
||||
if CLIENT_IFTP() then
|
||||
|
@ -182,10 +187,10 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
lockang = false
|
||||
BodyLimitX = 90
|
||||
BodyLimitY = 180
|
||||
|
||||
local ang = ply:EyeAngles()
|
||||
ang.x = 0
|
||||
ang.z = 0
|
||||
|
||||
BodyAnim:SetAngles(ang)
|
||||
elseif game.SinglePlayer() then
|
||||
ply:SendLua("lockang2=false lockang=false BodyLimitX=90 BodyLimitY=180 local ang=LocalPlayer():EyeAngles() ang.x=0 ang.z=0 BodyAnim:SetAngles(ang)")
|
||||
|
@ -194,9 +199,7 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
local ang = cmd:GetViewAngles()
|
||||
ang.x = math.min(ang.x, 0)
|
||||
ang = ang:Forward()
|
||||
|
||||
ang:Mul(350)
|
||||
|
||||
ang.z = 250
|
||||
|
||||
mv:SetVelocity(ang)
|
||||
|
@ -209,6 +212,7 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
local trout = ply.ClimbingTraceSafetyOut
|
||||
local mins, maxs = ply:GetHull()
|
||||
mins.z = maxs.z * 0.25
|
||||
|
||||
tr.start = ply:GetClimbingEnd()
|
||||
tr.endpos = tr.start
|
||||
tr.maxs = maxs
|
||||
|
@ -241,33 +245,36 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
|
||||
local tr = ply.ClimbingTraceEnd
|
||||
local trout = ply.ClimbingTraceEndOut
|
||||
local oldstart = tr.start
|
||||
local oldend = tr.endpos
|
||||
-- local oldstart = tr.start
|
||||
-- local oldend = tr.endpos
|
||||
local start = mv:GetOrigin() + wallang:Forward() * 20 + Vector(0, 0, 100) + dir
|
||||
|
||||
tr.start = start
|
||||
tr.endpos = start - Vector(0, 0, 80)
|
||||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then
|
||||
return false
|
||||
end
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then return false end
|
||||
|
||||
local fail = trout.Fraction < 0.25 or trout.Fraction > 0.5
|
||||
|
||||
if not fail then
|
||||
local ostart = tr.start
|
||||
local oendpos = tr.endpos
|
||||
|
||||
tr.start = ply:GetClimbingEnd() + dir
|
||||
tr.endpos = tr.start - Vector(0, 0, 100)
|
||||
|
||||
util.TraceLine(tr)
|
||||
|
||||
dir.z = trout.HitPos.z - mv:GetOrigin().z - 77
|
||||
|
||||
tr.endpos = oendpos
|
||||
tr.start = ostart
|
||||
tr = ply.ClimbingTraceSafety
|
||||
|
||||
trout = ply.ClimbingTraceSafetyOut
|
||||
|
||||
tr.start = mv:GetOrigin() + dir - wallang:Forward() * 0.533
|
||||
tr.endpos = tr.start
|
||||
|
||||
|
@ -307,9 +314,7 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then
|
||||
return false
|
||||
end
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then return false end
|
||||
|
||||
local fail = trout.Fraction < 0.25 or trout.Fraction == 1
|
||||
|
||||
|
@ -319,7 +324,9 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
local poslerp = LerpVector(lerp, ply:GetClimbingStart(), ply:GetClimbingEnd())
|
||||
|
||||
ply:SetClimbingEndOld(trout.HitPos)
|
||||
|
||||
mv:SetOrigin(poslerp)
|
||||
|
||||
ply:SetClimbingTime(ply:GetClimbingTime() + FrameTime() * lerprate)
|
||||
end
|
||||
|
||||
|
@ -334,10 +341,10 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
if ply:GetClimbing() == 2 or ply:GetClimbing() == 6 then
|
||||
if game.SinglePlayer() then
|
||||
net.Start("Climb_SPFix")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.WriteAngle(angle_zero)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.WriteAngle(angle_zero)
|
||||
net.WriteBool(false)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -351,6 +358,7 @@ local function ClimbingThink(ply, mv, cmd)
|
|||
local poslerp = LerpVector(lerp, ply:GetClimbingStart(), ply:GetClimbingEnd())
|
||||
|
||||
mv:SetOrigin(poslerp)
|
||||
|
||||
ply:SetClimbingTime(lerp + FrameTime() * lerprate)
|
||||
end
|
||||
|
||||
|
@ -385,10 +393,14 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
|
||||
local eyeang = ply:EyeAngles()
|
||||
local oldpos = mv:GetOrigin()
|
||||
|
||||
eyeang.x = 0
|
||||
|
||||
local tr = ply.ClimbingTrace
|
||||
local trout = ply.ClimbingTraceOut
|
||||
|
||||
mins.z = 45
|
||||
|
||||
tr.start = mv:GetOrigin()
|
||||
|
||||
if ply:GetDive() then
|
||||
|
@ -405,24 +417,14 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
|
||||
mins.z = 0
|
||||
|
||||
if not trout.Hit then
|
||||
return
|
||||
end
|
||||
if not trout.Hit then return end
|
||||
|
||||
local wallang = trout.HitNormal:Angle()
|
||||
wallang.y = wallang.y - 180
|
||||
|
||||
if wallang.x ~= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
if math.abs(math.AngleDifference(wallang.y, eyeang.y)) > 50 then
|
||||
return
|
||||
end
|
||||
|
||||
if IsValid(trout.Entity) and trout.Entity.NoClimbing then
|
||||
return
|
||||
end
|
||||
if wallang.x ~= 0 then return end
|
||||
if math.abs(math.AngleDifference(wallang.y, eyeang.y)) > 50 then return end
|
||||
if IsValid(trout.Entity) and trout.Entity.NoClimbing then return end
|
||||
|
||||
ply:SetClimbingAngle(wallang)
|
||||
|
||||
|
@ -430,6 +432,7 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
local trout = ply.ClimbingTraceEndOut
|
||||
local upvalue = ply:GetWallrun() == 1 and Vector(0, 0, 90) or Vector(0, 0, 65)
|
||||
local plymins, plymaxs = ply:GetHull()
|
||||
|
||||
tr.start = mv:GetOrigin() + wallang:Forward() * 45 + upvalue
|
||||
tr.endpos = tr.start - Vector(0, 0, 90)
|
||||
tr.maxs = plymaxs
|
||||
|
@ -439,11 +442,9 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then
|
||||
return false
|
||||
end
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then return false end
|
||||
|
||||
local fraction = trout.Fraction
|
||||
-- local fraction = trout.Fraction
|
||||
local detectionlen = 60
|
||||
|
||||
if trout.Fraction <= 0 or trout.Fraction >= 0.5 then
|
||||
|
@ -452,18 +453,15 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.Fraction <= 0 or trout.Fraction >= 0.5 then
|
||||
return
|
||||
end
|
||||
if trout.Fraction <= 0 or trout.Fraction >= 0.5 then return end
|
||||
|
||||
detectionlen = 25
|
||||
end
|
||||
|
||||
local endpos = trout.HitPos
|
||||
local height = trout.Fraction
|
||||
-- local height = trout.Fraction
|
||||
local startpos = ply.ClimbingTraceOut.HitPos
|
||||
startpos.z = trout.HitPos.z - 77
|
||||
|
||||
startpos:Add(wallang:Forward() * 0.533)
|
||||
|
||||
if ply:GetDive() then
|
||||
|
@ -495,48 +493,43 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
|
||||
local tr = ply.ClimbingTraceSafety
|
||||
local trout = ply.ClimbingTraceSafetyOut
|
||||
|
||||
tr.filter = ply
|
||||
tr.start = endpos
|
||||
tr.endpos = tr.start - wallang:Forward() * detectionlen
|
||||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.Hit then
|
||||
return
|
||||
end
|
||||
if trout.Hit then return end
|
||||
|
||||
tr.start = startpos + Vector(0, 0, 77)
|
||||
tr.endpos = tr.start + wallang:Forward() * detectionlen * 0.5
|
||||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.Hit then
|
||||
return
|
||||
end
|
||||
if trout.Hit then return end
|
||||
|
||||
local steep = trout.HitNormal:Distance(Vector(0, 0, 1)) > 0.01
|
||||
-- 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)
|
||||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.Hit then
|
||||
return
|
||||
end
|
||||
if trout.Hit then return end
|
||||
|
||||
local origin = mv:GetOrigin()
|
||||
local tr = ply.ClimbingTraceSafety
|
||||
local trout = ply.ClimbingTraceSafetyOut
|
||||
|
||||
tr.start = startpos
|
||||
tr.endpos = startpos
|
||||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.Hit then
|
||||
return
|
||||
end
|
||||
if trout.Hit then return end
|
||||
|
||||
startpos.z = startpos.z
|
||||
ply.ClimbingStartPosCache = startpos
|
||||
|
@ -551,7 +544,6 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
|
||||
if ply:GetWallrun() ~= 1 then
|
||||
startpos.z = startpos.z + 17
|
||||
|
||||
mv:SetOrigin(startpos)
|
||||
end
|
||||
|
||||
|
@ -610,8 +602,8 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
end
|
||||
|
||||
local wr = ply:GetWallrun()
|
||||
local wrtime = ply:GetWallrunTime() - CurTime()
|
||||
local vel = mv:GetVelocity()
|
||||
-- local wrtime = ply:GetWallrunTime() - CurTime()
|
||||
-- local vel = mv:GetVelocity()
|
||||
|
||||
if wr ~= 0 then
|
||||
ply:SetWallrun(0)
|
||||
|
@ -649,6 +641,7 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
local trout = ply.ClimbingTraceSafetyOut
|
||||
local mins, maxs = ply:GetCollisionBounds()
|
||||
mins.z = maxs.z * 0.25
|
||||
|
||||
tr.start = ply:GetClimbingEnd()
|
||||
tr.endpos = tr.start
|
||||
tr.maxs = maxs
|
||||
|
@ -672,6 +665,7 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
if folded then
|
||||
ply:SetClimbing(5)
|
||||
ply:SetClimbingDelay(CurTime() + 0.8)
|
||||
|
||||
ParkourEvent("hangfoldedstart", ply)
|
||||
else
|
||||
local event = "climbhard"
|
||||
|
@ -690,7 +684,7 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
|
||||
if IsFirstTimePredicted() then
|
||||
if CLIENT or game.SinglePlayer() then
|
||||
timer.Simple(0.05, function ()
|
||||
timer.Simple(0.05, function()
|
||||
ply:EmitSound("Bump.Concrete")
|
||||
end)
|
||||
end
|
||||
|
@ -704,7 +698,6 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
|
||||
if folded then
|
||||
DoImpactBlur(8)
|
||||
|
||||
lockang2 = false
|
||||
lockang = true
|
||||
end
|
||||
|
@ -712,9 +705,9 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
|
||||
if game.SinglePlayer() then
|
||||
net.Start("Climb_SPFix")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(true)
|
||||
net.WriteAngle(wallang)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(true)
|
||||
net.WriteAngle(wallang)
|
||||
|
||||
if folded then
|
||||
ply:SendLua("DoImpactBlur(8)")
|
||||
|
@ -726,12 +719,12 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
end
|
||||
|
||||
if CLIENT and IsFirstTimePredicted() then
|
||||
timer.Simple(0, function ()
|
||||
timer.Simple(0, function()
|
||||
BodyLimitX = 80
|
||||
BodyLimitY = 170
|
||||
end)
|
||||
elseif game.SinglePlayer() then
|
||||
timer.Simple(0, function ()
|
||||
timer.Simple(0, function()
|
||||
ply:SendLua("BodyLimitX=80 BodyLimitY=170")
|
||||
end)
|
||||
end
|
||||
|
@ -746,14 +739,13 @@ local function ClimbingCheck(ply, mv, cmd)
|
|||
mv:SetUpSpeed(0)
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "Climbing", function (ply, mv, cmd)
|
||||
|
||||
hook.Add("SetupMove", "Climbing", function(ply, mv, cmd)
|
||||
if ply:GetClimbing() == nil or not ply:Alive() then
|
||||
ply:SetClimbing(0)
|
||||
end
|
||||
|
||||
if IsValid(ply:GetSwingbar()) then
|
||||
return
|
||||
end
|
||||
if IsValid(ply:GetSwingbar()) then return end
|
||||
|
||||
if (not ply:GetCrouchJump() or ply:GetDive()) and not ply:GetJumpTurn() and (mv:KeyDown(IN_FORWARD) or mv:GetVelocity().z < -50 or ply:GetWallrun() == 1) and ply:GetClimbing() == 0 and ply:GetWallrun() ~= 4 and not ply:OnGround() and ply:GetMoveType() ~= MOVETYPE_NOCLIP and ply:GetMoveType() ~= MOVETYPE_LADDER then
|
||||
ClimbingCheck(ply, mv, cmd)
|
||||
|
@ -762,4 +754,4 @@ hook.Add("SetupMove", "Climbing", function (ply, mv, cmd)
|
|||
if ply:GetClimbing() ~= 0 then
|
||||
ClimbingThink(ply, mv, cmd)
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -1,7 +1,5 @@
|
|||
local problematichooks = {
|
||||
SetupMove = {
|
||||
"vmanip_vault"
|
||||
}
|
||||
SetupMove = {"vmanip_vault"}
|
||||
}
|
||||
|
||||
local function RemoveConflicting()
|
||||
|
@ -14,4 +12,4 @@ local function RemoveConflicting()
|
|||
hook.Remove("InitPostEntity", "RemoveConflicting")
|
||||
end
|
||||
|
||||
hook.Add("InitPostEntity", "RemoveConflicting", RemoveConflicting)
|
||||
hook.Add("InitPostEntity", "RemoveConflicting", RemoveConflicting)
|
|
@ -6,15 +6,17 @@ local punchthink = Angle()
|
|||
if SERVER then
|
||||
util.AddNetworkString("CrouchJumpSP")
|
||||
elseif CLIENT and game.SinglePlayer() then
|
||||
net.Receive("CrouchJumpSP", function ()
|
||||
net.Receive("CrouchJumpSP", function()
|
||||
local ply = LocalPlayer()
|
||||
|
||||
if BodyAnimArmCopy then
|
||||
BodyAnimCycle = 0
|
||||
BodyAnimCrouchLerp = 0
|
||||
BodyAnimCrouchLerpZ = ply:GetPos().z - 32
|
||||
|
||||
local ang = ply:EyeAngles()
|
||||
ang.x = 0
|
||||
|
||||
ply.OrigEyeAng = ang
|
||||
BodyLimitX = 40
|
||||
|
||||
|
@ -23,7 +25,7 @@ elseif CLIENT and game.SinglePlayer() then
|
|||
end)
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "CrouchJump", function (ply, mv, cmd)
|
||||
hook.Add("SetupMove", "CrouchJump", function(ply, mv, cmd)
|
||||
if ply:OnGround() and ply:GetCrouchJumpBlocked() then
|
||||
ply:SetCrouchJumpBlocked(false)
|
||||
end
|
||||
|
@ -55,12 +57,14 @@ hook.Add("SetupMove", "CrouchJump", function (ply, mv, cmd)
|
|||
|
||||
if game.SinglePlayer() then
|
||||
net.Start("CrouchJumpSP")
|
||||
net.WriteBool(true)
|
||||
net.WriteBool(true)
|
||||
net.Send(ply)
|
||||
|
||||
ply:SetNW2Float("BodyAnimCrouchLerpZ", ply:GetPos().z - 32)
|
||||
end
|
||||
|
||||
ParkourEvent("coil", ply)
|
||||
|
||||
ply:SetCrouchJump(true)
|
||||
ply:SetCrouchJumpTime(CurTime() + 1)
|
||||
ply:ViewPunch(punch)
|
||||
|
@ -78,7 +82,7 @@ hook.Add("SetupMove", "CrouchJump", function (ply, mv, cmd)
|
|||
|
||||
if game.SinglePlayer() then
|
||||
net.Start("CrouchJumpSP")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -122,7 +126,8 @@ hook.Add("SetupMove", "CrouchJump", function (ply, mv, cmd)
|
|||
end
|
||||
end
|
||||
end)
|
||||
hook.Add("CreateMove", "VManipCrouchJumpDuck", function (cmd)
|
||||
|
||||
hook.Add("CreateMove", "VManipCrouchJumpDuck", function(cmd)
|
||||
local ply = LocalPlayer()
|
||||
|
||||
if ply:GetCrouchJump() and ply:GetMoveType() == MOVETYPE_WALK and not ply:OnGround() and not ply:GetDive() then
|
||||
|
@ -133,4 +138,4 @@ hook.Add("CreateMove", "VManipCrouchJumpDuck", function (cmd)
|
|||
cmd:SetButtons(bit.bor(cmd:GetButtons(), IN_BULLRUSH))
|
||||
cmd:RemoveKey(IN_DUCK)
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -1,38 +1,30 @@
|
|||
if SERVER then
|
||||
util.AddNetworkString("DBNO")
|
||||
else
|
||||
net.Receive("DBNO", function ()
|
||||
net.Receive("DBNO", function()
|
||||
DoJumpTurn()
|
||||
end)
|
||||
end
|
||||
|
||||
hook.Add("ScalePlayerDamage", "MissedMe", function (ply, hitgroup, dmginfo)
|
||||
if IsValid(dmginfo:GetAttacker()) and dmginfo:GetAttacker():IsPlayer() then
|
||||
return
|
||||
end
|
||||
hook.Add("ScalePlayerDamage", "MissedMe", function(ply, hitgroup, dmginfo)
|
||||
if IsValid(dmginfo:GetAttacker()) and dmginfo:GetAttacker():IsPlayer() then return end
|
||||
|
||||
local vel = ply:GetVelocity()
|
||||
local vel_len = vel:Length()
|
||||
|
||||
if vel_len > 310 or ply:GetSliding() and vel_len > 100 or ply:GetWallrun() > 0 and vel_len > 200 or ply:GetJumpTurn() and not ply:OnGround() then
|
||||
return true
|
||||
end
|
||||
if vel_len > 310 or ply:GetSliding() and vel_len > 100 or ply:GetWallrun() > 0 and vel_len > 200 or ply:GetJumpTurn() and not ply:OnGround() then return true end
|
||||
end)
|
||||
hook.Add("EntityTakeDamage", "MissedMe", function (victim, dmginfo)
|
||||
if not victim:IsPlayer() then
|
||||
return
|
||||
end
|
||||
|
||||
hook.Add("EntityTakeDamage", "MissedMe", function(victim, dmginfo)
|
||||
if not victim:IsPlayer() then return end
|
||||
|
||||
local dmgtype = dmginfo:GetDamageType()
|
||||
|
||||
if victim:GetSliding() and (dmgtype == DMG_SLASH or dmgtype == DMG_CLUB) then
|
||||
return true
|
||||
end
|
||||
if victim:GetSliding() and (dmgtype == DMG_SLASH or dmgtype == DMG_CLUB) then return true end
|
||||
end)
|
||||
hook.Add("PlayerShouldTakeDamage", "DBNO", function (ply, attacker)
|
||||
if not IsValid(attacker) then
|
||||
return
|
||||
end
|
||||
|
||||
hook.Add("PlayerShouldTakeDamage", "DBNO", function(ply, attacker)
|
||||
if not IsValid(attacker) then return end
|
||||
|
||||
local class = attacker:GetClass()
|
||||
|
||||
|
@ -48,7 +40,7 @@ hook.Add("PlayerShouldTakeDamage", "DBNO", function (ply, attacker)
|
|||
ply:SetLocalVelocity(atteyeang:Forward() * 100 + Vector(0, 0, 100))
|
||||
|
||||
if game.SinglePlayer() then
|
||||
timer.Simple(0, function ()
|
||||
timer.Simple(0, function()
|
||||
net.Start("DBNO")
|
||||
net.Send(ply)
|
||||
end)
|
||||
|
@ -58,24 +50,21 @@ hook.Add("PlayerShouldTakeDamage", "DBNO", function (ply, attacker)
|
|||
end
|
||||
end
|
||||
|
||||
if ply:GetJumpTurn() and not ply:OnGround() and attacker:IsNPC() then
|
||||
return false
|
||||
end
|
||||
if ply:GetJumpTurn() and not ply:OnGround() and attacker:IsNPC() then return false end
|
||||
end)
|
||||
|
||||
if CLIENT then
|
||||
local radial = Material("radial.png")
|
||||
local dmgalpha = 0
|
||||
|
||||
hook.Add("HUDPaint", "NTScreenEffects", function ()
|
||||
hook.Add("HUDPaint", "NTScreenEffects", function()
|
||||
local ply = LocalPlayer()
|
||||
|
||||
if not ply:Alive() then
|
||||
return
|
||||
end
|
||||
if not ply:Alive() then return end
|
||||
|
||||
local w = ScrW()
|
||||
local h = ScrH()
|
||||
|
||||
dmgalpha = math.min(300 * math.abs(ply:Health() / ply:GetMaxHealth() - 1), 255)
|
||||
|
||||
surface.SetMaterial(radial)
|
||||
|
@ -88,7 +77,7 @@ if CLIENT then
|
|||
end
|
||||
|
||||
if SERVER then
|
||||
hook.Add("PlayerPostThink", "HealthRegen", function (ply)
|
||||
hook.Add("PlayerPostThink", "HealthRegen", function(ply)
|
||||
if not ply.LastHP then
|
||||
ply.LastHP = ply:Health()
|
||||
ply.RegenTime = 0
|
||||
|
@ -102,10 +91,9 @@ if SERVER then
|
|||
|
||||
if ply:Alive() and ply.RegenTime < CurTime() and ply:Health() < ply:GetMaxHealth() then
|
||||
ply:SetHealth(math.Approach(ply:Health(), ply:GetMaxHealth(), 1))
|
||||
|
||||
ply.RegenTime = CurTime() + 0.05
|
||||
end
|
||||
|
||||
ply.LastHP = ply:Health()
|
||||
end)
|
||||
end
|
||||
end
|
|
@ -1,9 +1,7 @@
|
|||
GM_DATATHEFT = 1
|
||||
|
||||
DATATHEFT_LOADOUTS = {
|
||||
{
|
||||
"weapon_ss2_colt",
|
||||
"weapon_ss2_circularsaw"
|
||||
}
|
||||
{"weapon_ss2_colt", "weapon_ss2_circularsaw"}
|
||||
}
|
||||
|
||||
if SERVER then
|
||||
|
@ -12,6 +10,7 @@ if SERVER then
|
|||
|
||||
function Beatrun_StartDataTheft()
|
||||
SetGlobalBool(GM_DATATHEFT, true)
|
||||
|
||||
net.Start("DataTheft_Start")
|
||||
net.Broadcast()
|
||||
|
||||
|
@ -28,7 +27,6 @@ if SERVER then
|
|||
else
|
||||
for l, b in ipairs(DATATHEFT_LOADOUTS[math.random(#DATATHEFT_LOADOUTS)]) do
|
||||
local wep = v:Give(b)
|
||||
|
||||
v:GiveAmmo(300, wep:GetPrimaryAmmoType())
|
||||
end
|
||||
end
|
||||
|
@ -42,8 +40,8 @@ if SERVER then
|
|||
local function DataTheftSync(ply)
|
||||
if GetGlobalBool(GM_DATATHEFT) and not ply.DataTheftSynced then
|
||||
net.Start("Infection_Sync")
|
||||
net.WriteFloat(Infection_StartTime)
|
||||
net.WriteFloat(Infection_EndTime)
|
||||
net.WriteFloat(Infection_StartTime)
|
||||
net.WriteFloat(Infection_EndTime)
|
||||
net.Send(ply)
|
||||
|
||||
ply.DataTheftSynced = true
|
||||
|
@ -91,14 +89,14 @@ if CLIENT then
|
|||
end
|
||||
end
|
||||
|
||||
net.Receive("DataTheft_Sync", function ()
|
||||
net.Receive("DataTheft_Sync", function()
|
||||
hook.Add("BeatrunHUDCourse", "DataTheftHUDName", DataTheftHUDName)
|
||||
end)
|
||||
|
||||
local chatcolor = Color(200, 200, 200)
|
||||
|
||||
net.Receive("DataTheft_Start", function ()
|
||||
net.Receive("DataTheft_Start", function()
|
||||
hook.Add("BeatrunHUDCourse", "DataTheftHUDName", DataTheftHUDName)
|
||||
chat.AddText(chatcolor, "Data Theft! Kill players to collect data, deposit data in banks")
|
||||
end)
|
||||
end
|
||||
end
|
|
@ -1,35 +1,30 @@
|
|||
local totsugeki = CreateConVar("Beatrun_Totsugeki", 1, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
}, "Oh no...", 0, 1)
|
||||
local totsugekispam = CreateConVar("Beatrun_TotsugekiSpam", 0, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
}, "OH NO...", 0, 1)
|
||||
local totsugekiheading = CreateConVar("Beatrun_TotsugekiHeading", 0, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
}, "Can we dive on the x axis?", 0, 1)
|
||||
local totsugekidir = CreateConVar("Beatrun_TotsugekiDir", 0, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
}, "Can we dive into another dir?", 0, 1)
|
||||
local totsugeki = CreateConVar("Beatrun_Totsugeki", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "Oh no...", 0, 1)
|
||||
local totsugekispam = CreateConVar("Beatrun_TotsugekiSpam", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "OH NO...", 0, 1)
|
||||
local totsugekiheading = CreateConVar("Beatrun_TotsugekiHeading", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "Can we dive on the x axis?", 0, 1)
|
||||
local totsugekidir = CreateConVar("Beatrun_TotsugekiDir", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "Can we dive into another dir?", 0, 1)
|
||||
|
||||
local function Dive(ply, mv, cmd)
|
||||
if (not ply:GetDive() or ply:GetDive() and ply.QuakeJumping and totsugeki:GetBool() and totsugekispam:GetBool()) and ply:GetCrouchJump() and mv:KeyPressed(IN_ATTACK2) then
|
||||
local vel = mv:GetVelocity()
|
||||
local vel2 = Vector(vel)
|
||||
vel2.z = 0
|
||||
|
||||
local vel2len = vel2:Length()
|
||||
local ang = cmd:GetViewAngles()
|
||||
ang.x = 0
|
||||
|
||||
local velmul = 15 / (math.max(vel2len - 100, 40) * 0.003)
|
||||
|
||||
vel:Add(ang:Forward() * velmul)
|
||||
vel:Add(Vector(0, 0, 70))
|
||||
|
||||
mv:SetVelocity(vel)
|
||||
|
||||
ply:SetCrouchJumpTime(CurTime() + 1.65)
|
||||
ply:SetDive(true)
|
||||
|
||||
ply:ViewPunch(Angle(-6,0,0))
|
||||
|
||||
ParkourEvent("divestart", ply)
|
||||
|
||||
if ply:UsingRH() and ply:GetActiveWeapon():GetQuakeJumping() and totsugeki:GetBool() then
|
||||
|
@ -40,12 +35,14 @@ local function Dive(ply, mv, cmd)
|
|||
local effectdata = EffectData()
|
||||
|
||||
effectdata:SetOrigin(vPoint)
|
||||
|
||||
util.Effect("WaterSurfaceExplosion", effectdata)
|
||||
elseif CLIENT_IFTP() then
|
||||
local vPoint = mv:GetOrigin()
|
||||
local effectdata = EffectData()
|
||||
|
||||
effectdata:SetOrigin(vPoint)
|
||||
|
||||
util.Effect("WaterSurfaceExplosion", effectdata)
|
||||
end
|
||||
|
||||
|
@ -73,7 +70,6 @@ local function Dive(ply, mv, cmd)
|
|||
if ply:GetMoveType() == MOVETYPE_NOCLIP or ply:WaterLevel() >= 3 or not ply:Alive() then
|
||||
ply:SetDive(false)
|
||||
ply:SetCrouchJump(false)
|
||||
|
||||
ply.DiveSliding = false
|
||||
|
||||
ParkourEvent("diveslideend", ply)
|
||||
|
@ -89,7 +85,6 @@ local function Dive(ply, mv, cmd)
|
|||
|
||||
if ply:OnGround() and ply:GetSafetyRollKeyTime() <= CurTime() then
|
||||
ply.DiveSliding = true
|
||||
|
||||
ply:SetDive(false)
|
||||
elseif ply:OnGround() and mv:KeyDown(IN_BULLRUSH) then
|
||||
mv:SetButtons(0)
|
||||
|
@ -97,4 +92,4 @@ local function Dive(ply, mv, cmd)
|
|||
end
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "Dive", Dive)
|
||||
hook.Add("SetupMove", "Dive", Dive)
|
|
@ -1,21 +1,17 @@
|
|||
print("h")
|
||||
|
||||
--[[
|
||||
local prefabs = {
|
||||
basic_floor = {
|
||||
{
|
||||
Vector(),
|
||||
Vector(300, 300, 50),
|
||||
0,
|
||||
0,
|
||||
0
|
||||
}
|
||||
{Vector(), Vector(300, 300, 50), 0, 0, 0}
|
||||
}
|
||||
}
|
||||
]]
|
||||
|
||||
function SpawnPrefab(pos, data)
|
||||
for k, v in ipairs(data) do
|
||||
local mins = v[1]
|
||||
local maxs = v[2]
|
||||
-- local mins = v[1]
|
||||
-- local maxs = v[2]
|
||||
local offsetx = v[3] or 0
|
||||
local offsety = v[4] or 0
|
||||
local offsetz = v[5] or 0
|
||||
|
@ -23,4 +19,4 @@ function SpawnPrefab(pos, data)
|
|||
|
||||
offsetvec:Add(pos)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,26 +1,16 @@
|
|||
if CLIENT then
|
||||
local circle = Material("circlesmooth.png", "nocull smooth")
|
||||
|
||||
hook.Add("HUDPaint", "grappleicon", function ()
|
||||
hook.Add("HUDPaint", "grappleicon", function()
|
||||
local ply = LocalPlayer()
|
||||
|
||||
if ply:GetMantle() ~= 0 or ply:GetClimbing() ~= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
if not ply:Alive() or Course_Name ~= "" then
|
||||
return
|
||||
end
|
||||
if ply:GetMantle() ~= 0 or ply:GetClimbing() ~= 0 then return end
|
||||
if not ply:Alive() or Course_Name ~= "" then return end
|
||||
|
||||
local activewep = ply:GetActiveWeapon()
|
||||
|
||||
if IsValid(activewep) and activewep:GetClass() ~= "runnerhands" then
|
||||
return
|
||||
end
|
||||
|
||||
if GetGlobalBool(GM_INFECTION) then
|
||||
return
|
||||
end
|
||||
if IsValid(activewep) and activewep:GetClass() ~= "runnerhands" then return end
|
||||
if GetGlobalBool(GM_INFECTION) then return end
|
||||
|
||||
if not ply.GrappleHUD_tr then
|
||||
ply.GrappleHUD_tr = {}
|
||||
|
@ -35,6 +25,7 @@ if CLIENT then
|
|||
local w2s = ply:GetGrapplePos():ToScreen()
|
||||
|
||||
cam.End3D()
|
||||
|
||||
surface.SetDrawColor(255, 255, 255)
|
||||
surface.SetMaterial(circle)
|
||||
surface.DrawTexturedRect(w2s.x - SScaleX(4), w2s.y - SScaleY(4), SScaleX(8), SScaleY(8))
|
||||
|
@ -42,9 +33,7 @@ if CLIENT then
|
|||
return
|
||||
end
|
||||
|
||||
if ply:EyeAngles().x > -15 or ply:GetWallrun() ~= 0 then
|
||||
return
|
||||
end
|
||||
if ply:EyeAngles().x > -15 or ply:GetWallrun() ~= 0 then return end
|
||||
|
||||
local trout = ply:GetEyeTrace()
|
||||
local dist = trout.HitPos:DistToSqr(ply:GetPos())
|
||||
|
@ -55,6 +44,7 @@ if CLIENT then
|
|||
local w2s = trout.HitPos:ToScreen()
|
||||
|
||||
cam.End3D()
|
||||
|
||||
surface.SetDrawColor(255, 255, 255)
|
||||
surface.SetMaterial(circle)
|
||||
surface.DrawTexturedRect(w2s.x - SScaleX(4), w2s.y - SScaleY(4), SScaleX(8), SScaleY(8))
|
||||
|
@ -64,18 +54,10 @@ end
|
|||
|
||||
local zpunchstart = Angle(2, 0, 0)
|
||||
|
||||
hook.Add("SetupMove", "Grapple", function (ply, mv, cmd)
|
||||
if ply:GetMantle() ~= 0 or ply:GetClimbing() ~= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
if not ply:Alive() or Course_Name ~= "" then
|
||||
return
|
||||
end
|
||||
|
||||
if GetGlobalBool(GM_INFECTION) and not ply:GetNW2Entity("Swingrope") then
|
||||
return
|
||||
end
|
||||
hook.Add("SetupMove", "Grapple", function(ply, mv, cmd)
|
||||
if ply:GetMantle() ~= 0 or ply:GetClimbing() ~= 0 then return end
|
||||
if not ply:Alive() or Course_Name ~= "" then return end
|
||||
if GetGlobalBool(GM_INFECTION) and not ply:GetNW2Entity("Swingrope") then return end
|
||||
|
||||
local activewep = ply:GetActiveWeapon()
|
||||
local usingrh = IsValid(activewep) and activewep:GetClass() == "runnerhands"
|
||||
|
@ -98,6 +80,7 @@ hook.Add("SetupMove", "Grapple", function (ply, mv, cmd)
|
|||
vel.z = -math.abs(vel.z)
|
||||
|
||||
mv:SetVelocity(vel)
|
||||
|
||||
ply:SetGrapplePos(trout.HitPos)
|
||||
ply:SetGrappling(true)
|
||||
ply:SetGrappleLength(mv:GetOrigin():Distance(trout.HitPos))
|
||||
|
@ -112,6 +95,7 @@ hook.Add("SetupMove", "Grapple", function (ply, mv, cmd)
|
|||
ply:ViewPunch(zpunchstart)
|
||||
|
||||
grappled = true
|
||||
|
||||
ply.GrappleLengthOld = ply:GetGrappleLength()
|
||||
end
|
||||
end
|
||||
|
@ -119,7 +103,7 @@ hook.Add("SetupMove", "Grapple", function (ply, mv, cmd)
|
|||
if ply:GetGrappling() then
|
||||
local startshrink = (ply.GrappleLengthOld or 0) - ply:GetGrappleLength() < 200
|
||||
local shmovemul = startshrink and 4 or 1
|
||||
local gpos = ply:GetGrapplePos()
|
||||
-- local gpos = ply:GetGrapplePos()
|
||||
local pos = mv:GetOrigin()
|
||||
local eyepos = mv:GetOrigin()
|
||||
eyepos.z = eyepos.z + 64
|
||||
|
@ -135,16 +119,16 @@ hook.Add("SetupMove", "Grapple", function (ply, mv, cmd)
|
|||
local ang = cmd:GetViewAngles()
|
||||
ang.x = 0
|
||||
ang = ang:Forward()
|
||||
|
||||
ang:Mul(200)
|
||||
|
||||
ang.z = 200
|
||||
|
||||
mv:SetVelocity(mv:GetVelocity() * 0.5 + ang)
|
||||
|
||||
ply:SetNW2Entity("Swingrope", nil)
|
||||
end
|
||||
|
||||
ParkourEvent("jump", ply)
|
||||
|
||||
table.Empty(ply.ZiplineTraceOut)
|
||||
|
||||
return
|
||||
|
@ -160,14 +144,16 @@ hook.Add("SetupMove", "Grapple", function (ply, mv, cmd)
|
|||
ply:SetGrappleLength(ply:GetGrappleLength() - FrameTime() * 250)
|
||||
end
|
||||
|
||||
local vel = mv:GetVelocity()
|
||||
-- local vel = mv:GetVelocity()
|
||||
local ang = cmd:GetViewAngles()
|
||||
ang.x = 0
|
||||
|
||||
local fmove = ang:Forward() * mv:GetForwardSpeed() * 6e-05 * shmovemul
|
||||
local smove = ang:Right() * mv:GetSideSpeed() * 2.5e-05 * shmovemul
|
||||
local newvel = fmove + smove
|
||||
local gposd = ply:GetGrapplePos()
|
||||
local posd = mv:GetOrigin()
|
||||
|
||||
gposd.z = 0
|
||||
posd.z = 0
|
||||
newvel.z = gposd:Distance(posd) / ply:GetGrappleLength() * 5
|
||||
|
@ -177,10 +163,12 @@ hook.Add("SetupMove", "Grapple", function (ply, mv, cmd)
|
|||
if ply:GetGrappleLength() < ply:GetGrapplePos():Distance(pos) and not ply:OnGround() then
|
||||
local tr = ply.Grapple_tr
|
||||
local trout = ply.Grapple_trout
|
||||
tr.start = mv:GetOrigin()
|
||||
tr.endpos = mv:GetOrigin()
|
||||
local mins, maxs = ply:GetHull()
|
||||
|
||||
tr.start = mv:GetOrigin()
|
||||
|
||||
tr.endpos = mv:GetOrigin()
|
||||
|
||||
local mins, maxs = ply:GetHull()
|
||||
mins:Mul(1.01)
|
||||
maxs:Mul(1.01)
|
||||
|
||||
|
@ -192,7 +180,6 @@ hook.Add("SetupMove", "Grapple", function (ply, mv, cmd)
|
|||
util.TraceHull(tr)
|
||||
|
||||
local vel = pos - ply:GetGrapplePos()
|
||||
|
||||
vel:Normalize()
|
||||
|
||||
if not trout.Hit then
|
||||
|
@ -219,7 +206,7 @@ local ropetop = Vector()
|
|||
local ropelerp = 0
|
||||
local ropedown = Vector(0, 0, 20)
|
||||
|
||||
hook.Add("PostDrawTranslucentRenderables", "GrappleBeam", function ()
|
||||
hook.Add("PostDrawTranslucentRenderables", "GrappleBeam", function()
|
||||
local ply = LocalPlayer()
|
||||
|
||||
if ply:GetGrappling() then
|
||||
|
@ -229,39 +216,35 @@ hook.Add("PostDrawTranslucentRenderables", "GrappleBeam", function ()
|
|||
BA = BodyAnim
|
||||
end
|
||||
|
||||
if not IsValid(BA) then
|
||||
return
|
||||
end
|
||||
if not IsValid(BA) then return end
|
||||
|
||||
BA:SetupBones()
|
||||
|
||||
local rhand = BA:LookupBone("ValveBiped.Bip01_R_Finger41")
|
||||
local lhand = BA:LookupBone("ValveBiped.Bip01_L_Finger21")
|
||||
|
||||
if BA:GetBoneMatrix(rhand) == nil then
|
||||
return
|
||||
end
|
||||
if BA:GetBoneMatrix(rhand) == nil then return end
|
||||
|
||||
local rhandpos = BA:GetBoneMatrix(rhand):GetTranslation()
|
||||
|
||||
if not rhandpos then
|
||||
return
|
||||
end
|
||||
if not rhandpos then return end
|
||||
|
||||
rhandpos:Sub(BA:GetRight() * 2.5)
|
||||
|
||||
local lhandpos = BA:GetBoneMatrix(lhand):GetTranslation()
|
||||
|
||||
ropetop:Set(lhandpos)
|
||||
|
||||
render.SetMaterial(cablemat)
|
||||
render.StartBeam(2)
|
||||
|
||||
local up = (rhandpos - lhandpos):Angle():Forward()
|
||||
|
||||
up:Mul(20)
|
||||
|
||||
rhandpos:Add(up)
|
||||
|
||||
render.DrawBeam(LerpVector(ropelerp, lhandpos - ropedown, rhandpos), lhandpos, 1.5, 0, 1)
|
||||
render.DrawBeam(ropetop, ply:GetGrapplePos(), 1.5, 0, 1)
|
||||
|
||||
BodyAnim:SetSequence("grapplecenter")
|
||||
|
||||
ropelerp = math.Approach(ropelerp, 1, FrameTime() * 2)
|
||||
|
@ -283,9 +266,7 @@ function CreateSwingrope(startpos, length)
|
|||
end
|
||||
|
||||
local function Swingrope(ply, mv, cmd)
|
||||
if not ply.ZiplineTrace then
|
||||
return
|
||||
end
|
||||
if not ply.ZiplineTrace then return end
|
||||
|
||||
if not IsValid(ply:GetZipline()) and not ply:GetGrappling() and not ply:Crouching() and not ply:OnGround() and ply:GetZiplineDelay() < CurTime() then
|
||||
local trout = ply.ZiplineTraceOut
|
||||
|
@ -296,9 +277,11 @@ local function Swingrope(ply, mv, cmd)
|
|||
local startpos = trentity:GetStartPos()
|
||||
local endpos = trentity:GetEndPos()
|
||||
local bestpos = endpos.z < startpos.z and startpos or endpos
|
||||
|
||||
vel.z = -math.abs(vel.z)
|
||||
|
||||
mv:SetVelocity(vel)
|
||||
|
||||
ply:SetGrapplePos(bestpos)
|
||||
ply:SetGrappling(true)
|
||||
ply:SetGrappleLength(mv:GetOrigin():Distance(bestpos))
|
||||
|
@ -312,6 +295,7 @@ local function Swingrope(ply, mv, cmd)
|
|||
ply:SetNW2Entity("Swingrope", trentity)
|
||||
|
||||
local eyeang = cmd:GetViewAngles()
|
||||
|
||||
vel.z = 0
|
||||
eyeang.x = 0
|
||||
|
||||
|
@ -320,4 +304,4 @@ local function Swingrope(ply, mv, cmd)
|
|||
end
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "Swingrope", Swingrope)
|
||||
hook.Add("SetupMove", "Swingrope", Swingrope)
|
|
@ -48,28 +48,26 @@ if SERVER then
|
|||
for k, v in pairs(player.GetAll()) do
|
||||
if not didgun and not ended and v:Alive() and not v:GetNW2Bool("Infected") then
|
||||
hook.Run("Infection_LastManGun", v)
|
||||
|
||||
didgun = true
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
net.Receive("Infection_Touch", function (len, ply)
|
||||
net.Receive("Infection_Touch", function(len, ply)
|
||||
local victim = net.ReadEntity()
|
||||
|
||||
if ended or not ply:Alive() or not ply:GetNW2Bool("Infected") or victim:GetNW2Bool("Infected") then
|
||||
return
|
||||
end
|
||||
if ended or not ply:Alive() or not ply:GetNW2Bool("Infected") or victim:GetNW2Bool("Infected") then return end
|
||||
|
||||
if IsValid(victim) and victim:IsPlayer() and ply:GetPos():Distance(victim:GetPos()) < 300 then
|
||||
victim:SetNW2Bool("Infected", true)
|
||||
|
||||
net.Start("Infection_Announce")
|
||||
net.WriteEntity(ply)
|
||||
net.WriteEntity(victim)
|
||||
net.WriteEntity(ply)
|
||||
net.WriteEntity(victim)
|
||||
net.Broadcast()
|
||||
|
||||
victim:SetNW2Float("PBTime", CurTime() - Infection_StartTime)
|
||||
|
||||
local humancount = HumanCount()
|
||||
|
@ -79,13 +77,14 @@ if SERVER then
|
|||
|
||||
if humancount < 1 then
|
||||
victim:EmitSound("blackout_hit_0" .. rand(1, 3) .. ".wav")
|
||||
|
||||
net.Start("Infection_End")
|
||||
net.WriteFloat(CurTime())
|
||||
net.WriteFloat(CurTime())
|
||||
net.Broadcast()
|
||||
|
||||
ended = true
|
||||
|
||||
timer.Simple(15, function ()
|
||||
timer.Simple(15, function()
|
||||
if ended and GetGlobalBool(GM_INFECTION) then
|
||||
Beatrun_StartInfection()
|
||||
end
|
||||
|
@ -99,8 +98,8 @@ if SERVER then
|
|||
local function InfectionSync(ply)
|
||||
if GetGlobalBool(GM_INFECTION) and not ply.InfectionSynced then
|
||||
net.Start("Infection_Sync")
|
||||
net.WriteFloat(Infection_StartTime)
|
||||
net.WriteFloat(Infection_EndTime)
|
||||
net.WriteFloat(Infection_StartTime)
|
||||
net.WriteFloat(Infection_EndTime)
|
||||
net.Send(ply)
|
||||
|
||||
ply.InfectionSynced = true
|
||||
|
@ -137,27 +136,26 @@ if SERVER then
|
|||
|
||||
if numinfected == 1 then
|
||||
local infected = players[rand(#players)]
|
||||
|
||||
infected:SetNW2Bool("Infected", true)
|
||||
|
||||
net.Start("Infection_XPReward")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.Send(infected)
|
||||
else
|
||||
table.Shuffle(players)
|
||||
|
||||
for i = 1, numinfected do
|
||||
players[i]:SetNW2Bool("Infected", true)
|
||||
|
||||
net.Start("Infection_XPReward")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.Send(players[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function InfectionTimer()
|
||||
if not GetGlobalBool(GM_INFECTION) then
|
||||
return
|
||||
end
|
||||
if not GetGlobalBool(GM_INFECTION) then return end
|
||||
|
||||
if player.GetCount() <= 1 then
|
||||
Beatrun_StopInfection()
|
||||
|
@ -174,7 +172,7 @@ if SERVER then
|
|||
local timeremaining = Infection_EndTime - CurTime()
|
||||
|
||||
if not didmusic and revealed and timeremaining <= 60 and timeremaining >= 50 and player.GetCount() >= 5 and cachedhumancount == 1 then
|
||||
timer.Simple(0.1, function ()
|
||||
timer.Simple(0.1, function()
|
||||
for k, v in ipairs(player.GetAll()) do
|
||||
if v:Alive() and not v:GetNW2Bool("Infected") then
|
||||
net.Start("Infection_LastMan")
|
||||
|
@ -196,12 +194,12 @@ if SERVER then
|
|||
end
|
||||
|
||||
net.Start("Infection_End")
|
||||
net.WriteFloat(CurTime())
|
||||
net.WriteFloat(CurTime())
|
||||
net.Broadcast()
|
||||
|
||||
ended = true
|
||||
|
||||
timer.Simple(15, function ()
|
||||
timer.Simple(15, function()
|
||||
if ended and GetGlobalBool(GM_INFECTION) then
|
||||
Beatrun_StartInfection()
|
||||
end
|
||||
|
@ -210,21 +208,14 @@ if SERVER then
|
|||
end
|
||||
|
||||
function Beatrun_StartInfection()
|
||||
if GetGlobalBool(GM_INFECTION) and not ended then
|
||||
return
|
||||
end
|
||||
|
||||
if Course_Name ~= "" then
|
||||
return
|
||||
end
|
||||
|
||||
if player.GetCount() < 2 then
|
||||
return
|
||||
end
|
||||
if GetGlobalBool(GM_INFECTION) and not ended then return end
|
||||
if Course_Name ~= "" then return end
|
||||
if player.GetCount() < 2 then return end
|
||||
|
||||
net.Start("Infection_Start")
|
||||
net.WriteFloat(CurTime())
|
||||
net.WriteFloat(CurTime())
|
||||
net.Broadcast()
|
||||
|
||||
SetGlobalBool(GM_INFECTION, true)
|
||||
|
||||
revealed = false
|
||||
|
@ -232,6 +223,7 @@ if SERVER then
|
|||
didmusic = false
|
||||
didgun = false
|
||||
cachedhumancount = 0
|
||||
|
||||
local players = player.GetAll()
|
||||
|
||||
for k, v in ipairs(players) do
|
||||
|
@ -256,9 +248,7 @@ if SERVER then
|
|||
end
|
||||
|
||||
function InfectionDeath(ply)
|
||||
if not GetGlobalBool(GM_INFECTION) then
|
||||
return
|
||||
end
|
||||
if not GetGlobalBool(GM_INFECTION) then return end
|
||||
|
||||
if revealed and Infection_StartTime < CurTime() and not ply:GetNW2Bool("Infected") then
|
||||
if ply.InfectionWuzHere then
|
||||
|
@ -266,9 +256,10 @@ if SERVER then
|
|||
end
|
||||
|
||||
ply:SetNW2Bool("Infected", true)
|
||||
|
||||
net.Start("Infection_Announce")
|
||||
net.WriteEntity(ply)
|
||||
net.WriteEntity(ply)
|
||||
net.WriteEntity(ply)
|
||||
net.WriteEntity(ply)
|
||||
net.Broadcast()
|
||||
|
||||
local humancount = HumanCount()
|
||||
|
@ -278,12 +269,12 @@ if SERVER then
|
|||
|
||||
if humancount < 1 then
|
||||
net.Start("Infection_End")
|
||||
net.WriteFloat(CurTime())
|
||||
net.WriteFloat(CurTime())
|
||||
net.Broadcast()
|
||||
|
||||
ended = true
|
||||
|
||||
timer.Simple(15, function ()
|
||||
timer.Simple(15, function()
|
||||
if ended and GetGlobalBool(GM_INFECTION) then
|
||||
Beatrun_StartInfection()
|
||||
end
|
||||
|
@ -293,7 +284,7 @@ if SERVER then
|
|||
local timeremaining = Infection_EndTime - CurTime()
|
||||
|
||||
if timeremaining <= 70 and timeremaining >= 50 and player.GetCount() > 6 and humancount == 1 then
|
||||
timer.Simple(0.1, function ()
|
||||
timer.Simple(0.1, function()
|
||||
for k, v in ipairs(player.GetAll()) do
|
||||
if v:Alive() and not v:GetNW2Bool("Infected") then
|
||||
net.Start("Infection_LastMan")
|
||||
|
@ -339,8 +330,10 @@ if CLIENT then
|
|||
ang.x = 0
|
||||
ang.z = 0
|
||||
ang.y = ang.y + 180
|
||||
|
||||
view.origin = pos
|
||||
view.angles = ang
|
||||
|
||||
lookingbehind = true
|
||||
|
||||
LocalPlayer():DrawViewModel(false)
|
||||
|
@ -373,26 +366,28 @@ if CLIENT then
|
|||
|
||||
local chatcolor = Color(200, 200, 200)
|
||||
|
||||
net.Receive("Infection_Start", function ()
|
||||
net.Receive("Infection_Start", function()
|
||||
local start = net.ReadFloat()
|
||||
local noclipbind = input.LookupBinding("noclip") or "n"
|
||||
noclipkey = input.GetKeyCode(noclipbind)
|
||||
endtime = 0
|
||||
|
||||
Infection_StartTime = start + 10
|
||||
Infection_EndTime = start + 190
|
||||
|
||||
hook.Add("BeatrunHUDCourse", "InfectionHUDName", InfectionHUDName)
|
||||
hook.Add("CalcView", "InfectionCalcView", InfectionCalcView)
|
||||
|
||||
chat.AddText(chatcolor, "Infection! Touch other players to infect them\n", math.max(math.floor(player.GetCount() / 4), 1) .. " player(s) will become infected in 10s")
|
||||
end)
|
||||
|
||||
local music = nil
|
||||
|
||||
net.Receive("Infection_End", function ()
|
||||
net.Receive("Infection_End", function()
|
||||
local survivors = ""
|
||||
endtime = net.ReadFloat()
|
||||
|
||||
timer.Simple(0.5, function ()
|
||||
timer.Simple(0.5, function()
|
||||
for k, v in ipairs(player.GetAll()) do
|
||||
if not v:GetNW2Bool("Infected") then
|
||||
survivors = survivors .. v:Nick() .. ", "
|
||||
|
@ -418,8 +413,9 @@ if CLIENT then
|
|||
music:Stop()
|
||||
end
|
||||
end)
|
||||
net.Receive("Infection_LastMan", function ()
|
||||
sound.PlayFile("sound/music/infection_countdown.mp3", "", function (station, errCode, errStr)
|
||||
|
||||
net.Receive("Infection_LastMan", function()
|
||||
sound.PlayFile("sound/music/infection_countdown.mp3", "", function(station, errCode, errStr)
|
||||
if IsValid(station) then
|
||||
station:SetVolume(0.5)
|
||||
station:Play()
|
||||
|
@ -432,7 +428,7 @@ if CLIENT then
|
|||
local red = Color(255, 25, 25)
|
||||
local yellow = Color(255, 255, 100)
|
||||
|
||||
net.Receive("Infection_Announce", function ()
|
||||
net.Receive("Infection_Announce", function()
|
||||
local attacker = net.ReadEntity()
|
||||
local victim = net.ReadEntity()
|
||||
|
||||
|
@ -440,7 +436,7 @@ if CLIENT then
|
|||
if attacker == victim then
|
||||
chat.AddText(attacker, red, " died!")
|
||||
else
|
||||
chat.AddText(attacker, red, " has infected ", victim, "!")
|
||||
chat.AddText(attacker, red, " has infected ", yellow, victim, "!")
|
||||
end
|
||||
|
||||
attacker.InfectionTouchDelay = CurTime() + 3
|
||||
|
@ -452,9 +448,7 @@ if CLIENT then
|
|||
end)
|
||||
|
||||
local function InfectionHUD()
|
||||
if not GetGlobalBool(GM_INFECTION) then
|
||||
return
|
||||
end
|
||||
if not GetGlobalBool(GM_INFECTION) then return end
|
||||
|
||||
surface.SetTextColor(color_white)
|
||||
surface.SetFont("BeatrunHUD")
|
||||
|
@ -466,8 +460,9 @@ if CLIENT then
|
|||
end
|
||||
|
||||
remainingtime = math.max(remainingtime, 0)
|
||||
|
||||
local timer = string.FormattedTime(remainingtime, "%02i:%02i:%02i")
|
||||
local tw, th = surface.GetTextSize(timer)
|
||||
local tw, _ = surface.GetTextSize(timer)
|
||||
|
||||
surface.SetTextPos(ScrW() * 0.5 - tw * 0.5, ScrH() * 0.25)
|
||||
surface.DrawText(timer)
|
||||
|
@ -485,36 +480,36 @@ if CLIENT then
|
|||
["$pp_colour_mulr"] = 0
|
||||
}
|
||||
|
||||
hook.Add("BeatrunSpawn", "InfectionSpawnDelay", function ()
|
||||
hook.Add("BeatrunSpawn", "InfectionSpawnDelay", function()
|
||||
LocalPlayer().InfectionTouchDelay = CurTime() + 6
|
||||
end)
|
||||
|
||||
local function BeatrunInfectedVision()
|
||||
if GetGlobalBool(GM_INFECTION) and LocalPlayer():GetNW2Bool("Infected") then
|
||||
tab["$pp_colour_colour"] = CurTime() > (LocalPlayer().InfectionTouchDelay or 0) and 0.91 or 0.1
|
||||
|
||||
DrawColorModify(tab)
|
||||
end
|
||||
end
|
||||
|
||||
hook.Add("HUDPaint", "InfectionHUD", InfectionHUD)
|
||||
hook.Add("RenderScreenspaceEffects", "BeatrunInfectedVision", BeatrunInfectedVision)
|
||||
net.Receive("Infection_XPReward", function ()
|
||||
|
||||
net.Receive("Infection_XPReward", function()
|
||||
local humanwin = net.ReadBool()
|
||||
|
||||
if humanwin then
|
||||
chat.AddText(chatcolor, "You were awarded 200 XP for surviving")
|
||||
LocalPlayer():AddXP(200)
|
||||
chat.AddText(chatcolor, "You were awarded 200 XP for surviving")
|
||||
else
|
||||
chat.AddText(chatcolor, "You were awarded 100 XP for spawning as an infected")
|
||||
LocalPlayer():AddXP(100)
|
||||
chat.AddText(chatcolor, "You were awarded 100 XP for spawning as an infected")
|
||||
end
|
||||
end)
|
||||
net.Receive("Infection_Sync", function ()
|
||||
|
||||
net.Receive("Infection_Sync", function()
|
||||
endtime = 0
|
||||
Infection_StartTime = net.ReadFloat()
|
||||
Infection_EndTime = net.ReadFloat()
|
||||
|
||||
hook.Add("BeatrunHUDCourse", "InfectionHUDName", InfectionHUDName)
|
||||
end)
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
if SERVER and game.SinglePlayer() then
|
||||
util.AddNetworkString("Ladder_SPFix")
|
||||
elseif CLIENT and game.SinglePlayer() then
|
||||
net.Receive("Ladder_SPFix", function ()
|
||||
net.Receive("Ladder_SPFix", function()
|
||||
local ply = LocalPlayer()
|
||||
local ang = ply:EyeAngles()
|
||||
ang.y = ply:GetLadder():GetAngles().y - 180
|
||||
|
@ -17,16 +17,16 @@ end
|
|||
local function LadderCheck(ply, mv, cmd, ladder)
|
||||
local ladderang = ladder:GetAngles()
|
||||
|
||||
if math.abs(math.AngleDifference(cmd:GetViewAngles().y, ladderang.y - 180)) > 30 then
|
||||
return false
|
||||
end
|
||||
if math.abs(math.AngleDifference(cmd:GetViewAngles().y, ladderang.y - 180)) > 30 then return false end
|
||||
|
||||
local zlevel = mv:GetOrigin().z
|
||||
local newpos = ladder:GetPos() + ladderang:Forward() * 19
|
||||
newpos.z = zlevel
|
||||
|
||||
ladderang.z = 0
|
||||
ladderang.x = 0
|
||||
ladderang.y = ladderang.y - 180
|
||||
|
||||
local origin = mv:GetOrigin()
|
||||
|
||||
if CLIENT then
|
||||
|
@ -56,13 +56,15 @@ local function LadderCheck(ply, mv, cmd, ladder)
|
|||
local event = ply:OnGround() and "ladderenter" or "ladderenterhang"
|
||||
|
||||
ParkourEvent(event, ply)
|
||||
|
||||
ply:SetLadderStartPos(mv:GetOrigin())
|
||||
ply:SetLadderEndPos(newpos)
|
||||
|
||||
mv:SetOrigin(newpos)
|
||||
|
||||
ply:SetLadderEntering(true)
|
||||
ply:SetLadderHand(true)
|
||||
ply:SetMoveType(MOVETYPE_NOCLIP)
|
||||
|
||||
ply.LadderEnd = false
|
||||
ply.LadderHardStart = not ply:OnGround()
|
||||
|
||||
|
@ -78,6 +80,7 @@ end
|
|||
local function LadderThink(ply, mv, cmd, ladder)
|
||||
mv:SetForwardSpeed(0)
|
||||
mv:SetSideSpeed(0)
|
||||
|
||||
cmd:ClearMovement()
|
||||
|
||||
if ply:GetLadderEntering() then
|
||||
|
@ -152,6 +155,7 @@ local function LadderThink(ply, mv, cmd, ladder)
|
|||
if ladder:GetLadderHeight() <= ply:GetLadderHeight() and not ply.LadderEnd then
|
||||
if not ply.LadderTrace then
|
||||
ply.LadderTraceOut = {}
|
||||
|
||||
ply.LadderTrace = {
|
||||
mask = MASK_SHOT_HULL,
|
||||
collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT,
|
||||
|
@ -163,6 +167,7 @@ local function LadderThink(ply, mv, cmd, ladder)
|
|||
|
||||
local tr = ply.LadderTrace
|
||||
local trout = ply.LadderTraceOut
|
||||
|
||||
ply.LadderTrace.start = mv:GetOrigin() + Vector(0, 0, 100) + ladder:GetAngles():Forward() * -35
|
||||
ply.LadderTrace.endpos = ply.LadderTrace.start - Vector(0, 0, 150)
|
||||
ply.LadderTrace.filter = ply
|
||||
|
@ -174,8 +179,8 @@ local function LadderThink(ply, mv, cmd, ladder)
|
|||
ply:SetLadderLerp(0)
|
||||
ply:SetLadderStartPos(mv:GetOrigin())
|
||||
ply:SetLadderEndPos(trout.HitPos)
|
||||
|
||||
ply.LadderEnd = true
|
||||
|
||||
local event = ply:GetLadderHand() and "ladderexittoplefthand" or "ladderexittoprighthand"
|
||||
|
||||
ParkourEvent(event, ply)
|
||||
|
@ -261,18 +266,18 @@ function CreateLadder(pos, angy, mul)
|
|||
ladderang[2] = angy
|
||||
|
||||
if not mul then
|
||||
local ledgedetect = nil
|
||||
-- local ledgedetect = nil
|
||||
maxheight = util.QuickTrace(pos, laddertraceup).HitPos
|
||||
|
||||
maxheight:Sub(ladderang:Forward() * 10)
|
||||
|
||||
maxheight = util.QuickTrace(maxheight, laddertracedown).HitPos.z
|
||||
|
||||
mul = (maxheight - pos.z) / 125 + 0.1
|
||||
end
|
||||
|
||||
local ladder = ents.Create("br_ladder")
|
||||
|
||||
pos:Add(ladderang:Forward() * 10)
|
||||
|
||||
ladder:SetPos(pos)
|
||||
ladder:SetAngles(ladderang)
|
||||
ladder:Spawn()
|
||||
|
@ -280,4 +285,4 @@ function CreateLadder(pos, angy, mul)
|
|||
|
||||
return ladder
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,5 +1,5 @@
|
|||
if CLIENT then
|
||||
hook.Add("InitPostEntity", "JoinSync", function ()
|
||||
hook.Add("InitPostEntity", "JoinSync", function()
|
||||
net.Start("JoinSync")
|
||||
net.SendToServer()
|
||||
end)
|
||||
|
@ -7,18 +7,19 @@ end
|
|||
|
||||
if SERVER then
|
||||
util.AddNetworkString("JoinSync")
|
||||
net.Receive("JoinSync", function (len, ply)
|
||||
|
||||
net.Receive("JoinSync", function(len, ply)
|
||||
if not ply.Synced then
|
||||
net.Start("BuildMode_Sync")
|
||||
net.WriteFloat(Course_StartPos.x)
|
||||
net.WriteFloat(Course_StartPos.y)
|
||||
net.WriteFloat(Course_StartPos.z)
|
||||
net.WriteFloat(Course_StartAng)
|
||||
net.WriteString(Course_Name)
|
||||
net.WriteString(Course_ID)
|
||||
net.WriteFloat(Course_StartPos.x)
|
||||
net.WriteFloat(Course_StartPos.y)
|
||||
net.WriteFloat(Course_StartPos.z)
|
||||
net.WriteFloat(Course_StartAng)
|
||||
net.WriteString(Course_Name)
|
||||
net.WriteString(Course_ID)
|
||||
net.Send(ply)
|
||||
|
||||
ply.Synced = true
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
|
@ -1,7 +1,5 @@
|
|||
local kickglitch = CreateConVar("Beatrun_KickGlitch", 1, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
})
|
||||
local kickglitch = CreateConVar("Beatrun_KickGlitch", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE})
|
||||
|
||||
local tr = {}
|
||||
local tr_result = {}
|
||||
MELEE_WRRIGHT = 6
|
||||
|
@ -10,66 +8,48 @@ MELEE_DROPKICK = 4
|
|||
MELEE_AIRKICK = 3
|
||||
MELEE_SLIDEKICK = 2
|
||||
MELEE_PUNCH = 1
|
||||
|
||||
local meleedata = {
|
||||
{
|
||||
"meleeslide",
|
||||
0.15,
|
||||
1,
|
||||
function (ply, mv, cmd)
|
||||
"meleeslide", 0.15, 1, function(ply, mv, cmd)
|
||||
ply:CLViewPunch(Angle(2, 0, 0))
|
||||
end,
|
||||
angle_zero,
|
||||
20
|
||||
angle_zero, 20
|
||||
},
|
||||
{
|
||||
"meleeslide",
|
||||
0.175,
|
||||
0.6,
|
||||
function (ply, mv, cmd)
|
||||
"meleeslide", 0.175, 0.6, function(ply, mv, cmd)
|
||||
if CLIENT_IFTP() then
|
||||
ply:CLViewPunch(Angle(0.05, 0, -1))
|
||||
elseif game.SinglePlayer() then
|
||||
ply:ViewPunch(Angle(0.1, 0, -1.5))
|
||||
end
|
||||
end,
|
||||
Angle(-4, 0, 0),
|
||||
50,
|
||||
true
|
||||
Angle(-4, 0, 0), 50, true
|
||||
},
|
||||
{
|
||||
"meleeairstill",
|
||||
0.1,
|
||||
1,
|
||||
function (ply, mv, cmd)
|
||||
"meleeairstill", 0.1, 1, function(ply, mv, cmd)
|
||||
if CLIENT_IFTP() then
|
||||
ply:CLViewPunch(Angle(0.5, 0, -0.1))
|
||||
elseif game.SinglePlayer() then
|
||||
ply:ViewPunch(Angle(1, 0, -0.25))
|
||||
end
|
||||
end,
|
||||
Angle(-15, 0, -5),
|
||||
50
|
||||
Angle(-15, 0, -5), 50
|
||||
},
|
||||
{
|
||||
"meleeair",
|
||||
0.15,
|
||||
1,
|
||||
function (ply, mv, cmd)
|
||||
"meleeair", 0.15, 1, function(ply, mv, cmd)
|
||||
if CLIENT_IFTP() then
|
||||
ply:CLViewPunch(Angle(0.05, 0, -1))
|
||||
elseif game.SinglePlayer() then
|
||||
ply:ViewPunch(Angle(0.1, 0, -1.5))
|
||||
end
|
||||
end,
|
||||
Angle(-5, 0, -2.5),
|
||||
50
|
||||
Angle(-5, 0, -2.5), 50
|
||||
}
|
||||
}
|
||||
|
||||
meleedata[5] = {
|
||||
"meleewrleft",
|
||||
0.2,
|
||||
0.75,
|
||||
function (ply, mv, cmd)
|
||||
"meleewrleft", 0.2, 0.75, function(ply, mv, cmd)
|
||||
if CLIENT_IFTP() then
|
||||
ply:CLViewPunch(Angle(0.075, 0, 1))
|
||||
elseif game.SinglePlayer() then
|
||||
|
@ -90,14 +70,11 @@ meleedata[5] = {
|
|||
ply:SetEyeAngles(ang)
|
||||
end
|
||||
end,
|
||||
Angle(-5, 0, 2.5),
|
||||
80
|
||||
Angle(-5, 0, 2.5), 80
|
||||
}
|
||||
|
||||
meleedata[6] = {
|
||||
"meleewrright",
|
||||
0.2,
|
||||
0.75,
|
||||
function (ply, mv, cmd)
|
||||
"meleewrright", 0.2, 0.75, function(ply, mv, cmd)
|
||||
if CLIENT_IFTP() then
|
||||
ply:CLViewPunch(Angle(0.075, 0, -1))
|
||||
elseif game.SinglePlayer() then
|
||||
|
@ -118,9 +95,9 @@ meleedata[6] = {
|
|||
ply:SetEyeAngles(ang)
|
||||
end
|
||||
end,
|
||||
Angle(-5, 0, -2.5),
|
||||
80
|
||||
Angle(-5, 0, -2.5), 80
|
||||
}
|
||||
|
||||
local doors = {
|
||||
prop_door_rotating = true,
|
||||
func_door_rotating = true
|
||||
|
@ -131,14 +108,10 @@ local function KeyMelee(ply, mv)
|
|||
end
|
||||
|
||||
local function MeleeType(ply, mv, cmd)
|
||||
if IsValid(ply:GetZipline()) or ply:GetGrappling() or IsValid(ply:GetLadder()) then
|
||||
return 0
|
||||
end
|
||||
if IsValid(ply:GetZipline()) or ply:GetGrappling() or IsValid(ply:GetLadder()) then return 0 end
|
||||
|
||||
if ply:GetWallrun() ~= 0 then
|
||||
if ply:GetWallrun() == 1 then
|
||||
return ply:GetMelee()
|
||||
end
|
||||
if ply:GetWallrun() == 1 then return ply:GetMelee() end
|
||||
|
||||
ply:SetMelee(ply:GetWallrun() == 3 and MELEE_WRLEFT or MELEE_WRRIGHT)
|
||||
elseif not ply:OnGround() then
|
||||
|
@ -156,17 +129,15 @@ end
|
|||
local function MeleeCheck(ply, mv, cmd)
|
||||
local melee = MeleeType(ply, mv, cmd)
|
||||
|
||||
if melee == 0 then
|
||||
return
|
||||
end
|
||||
if melee == 0 then return end
|
||||
|
||||
ParkourEvent(meleedata[melee][1], ply)
|
||||
|
||||
ply:SetMeleeTime(CurTime() + meleedata[melee][2])
|
||||
ply:SetMeleeDelay(CurTime() + meleedata[melee][3])
|
||||
|
||||
ply.MeleeDir = mv:GetVelocity()
|
||||
ply.MeleeDir.z = 0
|
||||
|
||||
ply.MeleeDir:Normalize()
|
||||
|
||||
if ply.MeleeDir:Length() < 1 then
|
||||
|
@ -193,13 +164,15 @@ local function MeleeThink(ply, mv, cmd)
|
|||
|
||||
ply:LagCompensation(true)
|
||||
ply:AnimRestartGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, ACT_HL2MP_GESTURE_RANGE_ATTACK_FIST, true)
|
||||
|
||||
util.TraceHull(tr)
|
||||
|
||||
ply:LagCompensation(false)
|
||||
|
||||
if ply:GetMelee() >= 5 then
|
||||
local vel = mv:GetVelocity()
|
||||
|
||||
vel:Add(ply:GetWallrunDir() * 0.5 * vel:Length())
|
||||
|
||||
mv:SetVelocity(vel)
|
||||
end
|
||||
|
||||
|
@ -216,20 +189,20 @@ local function MeleeThink(ply, mv, cmd)
|
|||
|
||||
if SERVER and IsValid(ent) and (not ent:IsPlayer() or Course_Name == "" and not GetGlobalBool(GM_INFECTION) and GetConVar("sbox_playershurtplayers"):GetBool()) then
|
||||
local d = DamageInfo()
|
||||
|
||||
d:SetDamage(meleedata[ply:GetMelee()][6])
|
||||
d:SetAttacker(ply)
|
||||
d:SetInflictor(ply)
|
||||
d:SetDamageType(DMG_CLUB)
|
||||
d:SetDamagePosition(tr.start)
|
||||
d:SetDamageForce(ply:EyeAngles():Forward() * 7000)
|
||||
|
||||
ent:TakeDamageInfo(d)
|
||||
|
||||
if SERVER and ent:GetClass() == "func_breakable_surf" then
|
||||
ent:Input("Shatter", nil, nil, Vector(0, 0, 250))
|
||||
timer.Simple(0, function ()
|
||||
local BLEH = ents.Create("prop_physics")
|
||||
|
||||
timer.Simple(0, function()
|
||||
local BLEH = ents.Create("prop_physics")
|
||||
BLEH:SetPos(tr_result.HitPos)
|
||||
BLEH:SetAngles(Angle(0, 0, 0))
|
||||
BLEH:SetModel("models/props_junk/wood_crate001a.mdl")
|
||||
|
@ -237,7 +210,8 @@ local function MeleeThink(ply, mv, cmd)
|
|||
BLEH:SetCollisionGroup(COLLISION_GROUP_WORLD)
|
||||
BLEH:Spawn()
|
||||
BLEH:Activate()
|
||||
timer.Simple(0.01, function ()
|
||||
|
||||
timer.Simple(0.01, function()
|
||||
if BLEH and IsValid(BLEH) then
|
||||
BLEH:Remove()
|
||||
end
|
||||
|
@ -250,9 +224,7 @@ local function MeleeThink(ply, mv, cmd)
|
|||
end
|
||||
|
||||
if doors[ent:GetClass()] then
|
||||
if ent:GetInternalVariable("m_bLocked") then
|
||||
return
|
||||
end
|
||||
if ent:GetInternalVariable("m_bLocked") then return end
|
||||
|
||||
local speed = ent:GetInternalVariable("speed")
|
||||
|
||||
|
@ -263,17 +235,17 @@ local function MeleeThink(ply, mv, cmd)
|
|||
|
||||
ent:SetSaveValue("speed", ent.oldspeed * 4)
|
||||
ent:Use(ply)
|
||||
|
||||
ent.bashdelay = CurTime() + 1
|
||||
|
||||
ent:SetCycle(1)
|
||||
ent:Fire("Lock")
|
||||
timer.Simple(1, function ()
|
||||
|
||||
timer.Simple(1, function()
|
||||
if IsValid(ent) then
|
||||
ent:SetSaveValue("speed", ent.oldspeed)
|
||||
ent:Fire("Unlock")
|
||||
end
|
||||
end)
|
||||
|
||||
ent:EmitSound("Door.Barge")
|
||||
|
||||
return false
|
||||
|
@ -289,7 +261,7 @@ local function MeleeThink(ply, mv, cmd)
|
|||
end
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "Melee", function (ply, mv, cmd)
|
||||
hook.Add("SetupMove", "Melee", function(ply, mv, cmd)
|
||||
if not ply:Alive() then
|
||||
ply:SetMeleeTime(0)
|
||||
ply:SetMelee(0)
|
||||
|
@ -300,12 +272,10 @@ hook.Add("SetupMove", "Melee", function (ply, mv, cmd)
|
|||
if ply:GetMeleeDelay() < CurTime() and ply:GetMelee() ~= 0 then
|
||||
if kickglitch:GetBool() and ply:GetMelee() >= 5 and mv:KeyDown(IN_JUMP) and not ply:OnGround() then
|
||||
local vel = mv:GetVelocity()
|
||||
|
||||
vel:Mul(1.25)
|
||||
|
||||
vel.z = 300
|
||||
|
||||
mv:SetVelocity(vel)
|
||||
|
||||
ParkourEvent("jumpslow", ply)
|
||||
end
|
||||
|
||||
|
@ -320,4 +290,4 @@ hook.Add("SetupMove", "Melee", function (ply, mv, cmd)
|
|||
if ply:GetMeleeTime() ~= 0 then
|
||||
MeleeThink(ply, mv, cmd)
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -1,5 +1,5 @@
|
|||
hook.Add("PlayerButtonDown", "PlayerButtonDownWikiExample", function (ply, button)
|
||||
hook.Add("PlayerButtonDown", "PlayerButtonDownWikiExample", function(ply, button)
|
||||
if (game.SinglePlayer() or CLIENT and IsFirstTimePredicted()) and button == KEY_F4 then
|
||||
ply:ConCommand("Beatrun_CourseMenu")
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -3,37 +3,20 @@ if SERVER then
|
|||
|
||||
util.AddNetworkString("SPParkourEvent")
|
||||
|
||||
local spawn = {
|
||||
"PlayerGiveSWEP",
|
||||
"PlayerSpawnEffect",
|
||||
"PlayerSpawnNPC",
|
||||
"PlayerSpawnObject",
|
||||
"PlayerSpawnProp",
|
||||
"PlayerSpawnRagdoll",
|
||||
"PlayerSpawnSENT",
|
||||
"PlayerSpawnSWEP",
|
||||
"PlayerSpawnVehicle"
|
||||
}
|
||||
local spawn = {"PlayerGiveSWEP", "PlayerSpawnEffect", "PlayerSpawnNPC", "PlayerSpawnObject", "PlayerSpawnProp", "PlayerSpawnRagdoll", "PlayerSpawnSENT", "PlayerSpawnSWEP", "PlayerSpawnVehicle"}
|
||||
|
||||
local function BlockSpawn(ply)
|
||||
if not ply:IsSuperAdmin() then
|
||||
return false
|
||||
end
|
||||
if not ply:IsSuperAdmin() then return false end
|
||||
end
|
||||
|
||||
for k, v in ipairs(spawn) do
|
||||
hook.Add(v, "BlockSpawn", BlockSpawn)
|
||||
end
|
||||
|
||||
hook.Add("IsSpawnpointSuitable", "NoSpawnFrag", function (ply)
|
||||
return true
|
||||
end)
|
||||
hook.Add("AllowPlayerPickup", "AllowAdminsPickUp", function (ply, ent)
|
||||
local sa = ply:IsSuperAdmin()
|
||||
hook.Add("IsSpawnpointSuitable", "NoSpawnFrag", function(ply) return true end)
|
||||
|
||||
if not sa then
|
||||
return false
|
||||
end
|
||||
hook.Add("AllowPlayerPickup", "AllowAdminsPickUp", function(ply, ent)
|
||||
if not ply:IsSuperAdmin() then return false end
|
||||
end)
|
||||
|
||||
function meta:GTAB(minutes)
|
||||
|
@ -43,7 +26,7 @@ if SERVER then
|
|||
v:EmitSound("gtab.mp3", 0, 100, 1)
|
||||
end
|
||||
|
||||
timer.Simple(7.5, function ()
|
||||
timer.Simple(7.5, function()
|
||||
if IsValid(self) and self:SteamID64() == ID then
|
||||
self:Ban(minutes, "GTAB")
|
||||
|
||||
|
@ -60,20 +43,18 @@ if CLIENT then
|
|||
CreateClientConVar("Beatrun_CPSave", 1, true, true, "Respawning during a course will go back to the last hit checkpoint", 0, 1)
|
||||
end
|
||||
|
||||
hook.Add("PlayerNoClip", "BlockNoClip", function (ply, enabled)
|
||||
hook.Add("PlayerNoClip", "BlockNoClip", function(ply, enabled)
|
||||
if enabled and Course_Name ~= "" and ply:GetNW2Int("CPNum", 1) ~= -1 then
|
||||
ply:SetNW2Int("CPNum", -1)
|
||||
|
||||
if CLIENT_IFTP() then
|
||||
notification.AddLegacy("Noclip Enabled: Respawn to run the course", NOTIFY_ERROR, 2)
|
||||
elseif SERVER and game.SinglePlayer() then
|
||||
ply:SendLua("notification.AddLegacy( \"Noclip Enabled: Respawn to run the course\", NOTIFY_ERROR, 2 )")
|
||||
ply:SendLua("notification.AddLegacy(\"Noclip Enabled: Respawn to run the course\", NOTIFY_ERROR, 2)")
|
||||
end
|
||||
end
|
||||
|
||||
if enabled and (GetGlobalBool(GM_INFECTION) or GetGlobalBool(GM_DATATHEFT)) then
|
||||
return false
|
||||
end
|
||||
if enabled and (GetGlobalBool(GM_INFECTION) or GetGlobalBool(GM_DATATHEFT)) then return false end
|
||||
end)
|
||||
|
||||
function ParkourEvent(event, ply, ignorepred)
|
||||
|
@ -82,13 +63,13 @@ function ParkourEvent(event, ply, ignorepred)
|
|||
|
||||
if game.SinglePlayer() and SERVER then
|
||||
net.Start("SPParkourEvent")
|
||||
net.WriteString(event)
|
||||
net.WriteString(event)
|
||||
net.Broadcast()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "JumpDetect", function (ply, mv, cmd)
|
||||
hook.Add("SetupMove", "JumpDetect", function(ply, mv, cmd)
|
||||
if ply:OnGround() and not ply:GetWasOnGround() and mv:GetVelocity():Length() > 50 and ply:GetMEMoveLimit() < 375 then
|
||||
local vel = mv:GetVelocity()
|
||||
vel.z = 0
|
||||
|
@ -141,19 +122,17 @@ hook.Add("SetupMove", "JumpDetect", function (ply, mv, cmd)
|
|||
|
||||
ply:SetWasOnGround(ply:OnGround())
|
||||
end)
|
||||
hook.Add("CanProperty", "BlockProperty", function (ply)
|
||||
if not ply:IsSuperAdmin() then
|
||||
return false
|
||||
end
|
||||
|
||||
hook.Add("CanProperty", "BlockProperty", function(ply)
|
||||
if not ply:IsSuperAdmin() then return false end
|
||||
end)
|
||||
hook.Add("CanDrive", "BlockDrive", function (ply)
|
||||
if not ply:IsSuperAdmin() then
|
||||
return false
|
||||
end
|
||||
|
||||
hook.Add("CanDrive", "BlockDrive", function(ply)
|
||||
if not ply:IsSuperAdmin() then return false end
|
||||
end)
|
||||
|
||||
if CLIENT and game.SinglePlayer() then
|
||||
net.Receive("SPParkourEvent", function ()
|
||||
net.Receive("SPParkourEvent", function()
|
||||
local event = net.ReadString()
|
||||
|
||||
hook.Run("OnParkour", event, LocalPlayer())
|
||||
|
@ -161,7 +140,7 @@ if CLIENT and game.SinglePlayer() then
|
|||
end
|
||||
|
||||
if SERVER then
|
||||
hook.Add("OnEntityCreated", "RemoveMirrors", function (ent)
|
||||
hook.Add("OnEntityCreated", "RemoveMirrors", function(ent)
|
||||
if IsValid(ent) and ent:GetClass() == "func_reflective_glass" then
|
||||
SafeRemoveEntityDelayed(ent, 0.1)
|
||||
end
|
||||
|
@ -172,9 +151,7 @@ if CLIENT then
|
|||
local blur = Material("pp/blurscreen")
|
||||
|
||||
function draw_blur(a, d)
|
||||
if render.GetDXLevel() < 90 then
|
||||
return
|
||||
end
|
||||
if render.GetDXLevel() < 90 then return end
|
||||
|
||||
surface.SetDrawColor(255, 255, 255)
|
||||
surface.SetMaterial(blur)
|
||||
|
@ -189,12 +166,11 @@ if CLIENT then
|
|||
|
||||
local draw_blur = draw_blur
|
||||
local impactblurlerp = 0
|
||||
local lastintensity = 0
|
||||
-- local lastintensity = 0
|
||||
|
||||
hook.Add("HUDPaint", "DrawImpactBlur", function ()
|
||||
hook.Add("HUDPaint", "DrawImpactBlur", function()
|
||||
if impactblurlerp > 0 then
|
||||
impactblurlerp = math.Approach(impactblurlerp, 0, 25 * FrameTime())
|
||||
|
||||
draw_blur(math.min(impactblurlerp, 10), 4)
|
||||
end
|
||||
end)
|
||||
|
@ -203,4 +179,4 @@ if CLIENT then
|
|||
impactblurlerp = intensity
|
||||
lastintensity = intensity
|
||||
end
|
||||
end
|
||||
end
|
|
@ -6,8 +6,10 @@ local function SwingbarCheck(ply, mv, cmd)
|
|||
mins.x = mins.x * 1.5
|
||||
maxs.y = maxs.y * 1.5
|
||||
mins.y = mins.y * 1.5
|
||||
|
||||
local tr = ply.Monkey_tr
|
||||
local trout = ply.Monkey_trout
|
||||
|
||||
tr.start = mv:GetOrigin()
|
||||
tr.endpos = tr.start
|
||||
tr.maxs = maxs
|
||||
|
@ -22,9 +24,7 @@ local function SwingbarCheck(ply, mv, cmd)
|
|||
local dot = cmd:GetViewAngles():Forward():Dot(swingbar:GetAngles():Forward())
|
||||
local dir = dot > 0 and true or false
|
||||
|
||||
if math.abs(dot) < 0.7 then
|
||||
return
|
||||
end
|
||||
if math.abs(dot) < 0.7 then return end
|
||||
|
||||
if CLIENT then
|
||||
swingbar:SetPredictable(true)
|
||||
|
@ -39,7 +39,9 @@ local function SwingbarCheck(ply, mv, cmd)
|
|||
ply:SetSBPeak(0)
|
||||
ply:SetDive(false)
|
||||
ply:SetCrouchJump(false)
|
||||
|
||||
ParkourEvent("swingbar", ply)
|
||||
|
||||
mv:SetVelocity(vector_origin)
|
||||
|
||||
if mv:KeyDown(IN_FORWARD) or mv:GetVelocity():Length() > 150 then
|
||||
|
@ -55,7 +57,7 @@ local function SwingbarCheck(ply, mv, cmd)
|
|||
end
|
||||
|
||||
local radius = 30
|
||||
local red = Color(255, 0, 0, 200)
|
||||
-- local red = Color(255, 0, 0, 200)
|
||||
local circlepos = Vector()
|
||||
local axis = Vector(0, 0, 1)
|
||||
local dummyvec = Vector(1000, 1000, 1000)
|
||||
|
@ -95,6 +97,7 @@ local function SwingbarThink(ply, mv, cmd)
|
|||
circlepos:Rotate(ang)
|
||||
|
||||
pos = pos + circlepos
|
||||
|
||||
local origin = startlerp < 1 and LerpVector(startlerp, mv:GetOrigin(), pos) or pos
|
||||
|
||||
ply:SetSBStartLerp(math.min(startlerp + 10 * FrameTime(), 1))
|
||||
|
@ -122,7 +125,6 @@ local function SwingbarThink(ply, mv, cmd)
|
|||
ply:SetSBOffsetSpeed(math.Approach(math.min(ply:GetSBOffsetSpeed(), 0), -1, math.abs(ply:GetSBOffset() / 100 - 1) * 5 * FrameTime()))
|
||||
else
|
||||
local a = (ply:GetSBOffset() - 50) / 50
|
||||
|
||||
ply:SetSBOffsetSpeed(math.Approach(ply:GetSBOffsetSpeed(), 0, a * 5 * FrameTime()))
|
||||
end
|
||||
|
||||
|
@ -143,6 +145,7 @@ local function SwingbarThink(ply, mv, cmd)
|
|||
|
||||
local ang = cmd:GetViewAngles()
|
||||
ang.x = 0
|
||||
|
||||
local vel = ang:Forward() * 125 * ply:GetSBOffsetSpeed()
|
||||
vel.z = ply:GetSBOffset() * 2
|
||||
|
||||
|
@ -150,7 +153,9 @@ local function SwingbarThink(ply, mv, cmd)
|
|||
ply:SetSwingbarLast(ply:GetSwingbar())
|
||||
ply:SetSwingbar(nil)
|
||||
ply:SetWallrunDir(dummyvec)
|
||||
|
||||
mv:SetVelocity(vel)
|
||||
|
||||
ply:SetSBDelay(CurTime() + 1)
|
||||
|
||||
if CLIENT_IFTP() or game.SinglePlayer() then
|
||||
|
@ -184,4 +189,4 @@ local function Swingbar(ply, mv, cmd)
|
|||
end
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "Swingbar", Swingbar)
|
||||
hook.Add("SetupMove", "Swingbar", Swingbar)
|
|
@ -2,10 +2,7 @@ if CLIENT then
|
|||
PuristMode = CreateClientConVar("Beatrun_PuristMode", "1", true, true, "Purist mode is a clientside preference that severely weakens the ability to strafe while in the air, which is how Mirror's Edge games handle this.\n0 = No restrictions\n1 = Reduced move speed in the air")
|
||||
end
|
||||
|
||||
local PuristModeForce = CreateConVar("Beatrun_PuristModeForce", 0, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
}, "Force players to adhere to purist rules", 0, 1)
|
||||
local PuristModeForce = CreateConVar("Beatrun_PuristModeForce", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}, "Force players to adhere to purist rules", 0, 1)
|
||||
|
||||
local function PuristMove(ply, mv, cmd)
|
||||
if not ply:OnGround() and not ply:GetGrappling() then
|
||||
|
@ -14,10 +11,11 @@ local function PuristMove(ply, mv, cmd)
|
|||
if (purist > 0 or PuristModeForce:GetBool()) and ply:WaterLevel() == 0 then
|
||||
mv:SetForwardSpeed(mv:GetForwardSpeed() * 0.001)
|
||||
mv:SetSideSpeed(mv:GetSideSpeed() * 0.001)
|
||||
|
||||
cmd:SetForwardMove(cmd:GetForwardMove() * 0.001)
|
||||
cmd:SetSideMove(cmd:GetSideMove() * 0.001)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "PuristMove", PuristMove)
|
||||
hook.Add("SetupMove", "PuristMove", PuristMove)
|
|
@ -3,13 +3,11 @@ if CLIENT then
|
|||
end
|
||||
|
||||
function DoJumpTurn(lookbehind)
|
||||
if not LocalPlayer():Alive() then
|
||||
return
|
||||
end
|
||||
if not LocalPlayer():Alive() then return end
|
||||
|
||||
VMLegs:Remove()
|
||||
BodyAnim:SetSequence("jumpturnfly")
|
||||
|
||||
BodyAnim:SetSequence("jumpturnfly")
|
||||
BodyAnimCycle = 0
|
||||
BodyAnimSpeed = 1
|
||||
BodyLimitX = 40
|
||||
|
@ -17,13 +15,12 @@ function DoJumpTurn(lookbehind)
|
|||
|
||||
if lookbehind then
|
||||
local vel = LocalPlayer():GetVelocity()
|
||||
|
||||
vel:Normalize()
|
||||
|
||||
vel.z = 0
|
||||
local ang = vel:Angle()
|
||||
|
||||
local ang = vel:Angle()
|
||||
ang:RotateAroundAxis(Vector(0, 0, 1), 180)
|
||||
|
||||
BodyAnim:SetAngles(ang)
|
||||
|
||||
LocalPlayer().OrigEyeAng = ang
|
||||
|
@ -31,9 +28,7 @@ function DoJumpTurn(lookbehind)
|
|||
end
|
||||
|
||||
function DoJumpTurnStand()
|
||||
if not LocalPlayer():Alive() then
|
||||
return
|
||||
end
|
||||
if not LocalPlayer():Alive() then return end
|
||||
|
||||
VMLegs:Remove()
|
||||
|
||||
|
@ -43,6 +38,7 @@ function DoJumpTurnStand()
|
|||
BodyAnim:SetSequence("jumpturnlandstandgun")
|
||||
else
|
||||
BodyAnim:SetSequence("jumpturnlandstand")
|
||||
|
||||
ParkourEvent("jumpturnlandstand", LocalPlayer(), game.SinglePlayer())
|
||||
end
|
||||
|
||||
|
@ -67,11 +63,13 @@ local function Quickturn(ply, mv, cmd)
|
|||
|
||||
if mv:KeyPressed(IN_JUMP) and (mv:KeyDown(IN_MOVELEFT) or mv:KeyDown(IN_MOVERIGHT)) then
|
||||
keypressed = true
|
||||
|
||||
ply.vwrturn = mv:KeyDown(IN_MOVERIGHT) and 1 or -1
|
||||
|
||||
local eyeang = cmd:GetViewAngles()
|
||||
eyeang.x = 0
|
||||
ply.vwrdot = -ply:GetWallrunDir():Dot(eyeang:Forward())
|
||||
|
||||
ply.vwrdot = -ply:GetWallrunDir():Dot(eyeang:Forward())
|
||||
ply:SetWallrunTime(CurTime())
|
||||
ply:SetQuickturn(true)
|
||||
ply:SetQuickturnTime(CurTime())
|
||||
|
@ -84,8 +82,10 @@ local function Quickturn(ply, mv, cmd)
|
|||
local eyedir = cmd:GetViewAngles()
|
||||
eyedir.x = 0
|
||||
eyedir = eyedir:Forward()
|
||||
|
||||
local vel = mv:GetVelocity()
|
||||
vel.z = 0
|
||||
|
||||
local lookahead = vel:GetNormalized():Dot(eyedir) >= 0.85
|
||||
local lookbehind = vel:GetNormalized():Dot(eyedir) < -0.5
|
||||
|
||||
|
@ -100,9 +100,7 @@ local function Quickturn(ply, mv, cmd)
|
|||
|
||||
ply:SetJumpTurn(true)
|
||||
|
||||
if lookbehind then
|
||||
return
|
||||
end
|
||||
if lookbehind then return end
|
||||
|
||||
ply:ViewPunch(Angle(2.5, 0, 5))
|
||||
end
|
||||
|
@ -121,9 +119,7 @@ local function Quickturn(ply, mv, cmd)
|
|||
usingrh = activewep:GetClass() == "runnerhands"
|
||||
end
|
||||
|
||||
if not usingrh and ply:GetWallrun() >= 2 then
|
||||
return
|
||||
end
|
||||
if not usingrh and ply:GetWallrun() >= 2 then return end
|
||||
|
||||
ply:SetQuickturn(true)
|
||||
ply:SetQuickturnTime(CurTime())
|
||||
|
@ -138,7 +134,6 @@ local function Quickturn(ply, mv, cmd)
|
|||
BodyLimitY = 180
|
||||
BodyAnimCycle = 0
|
||||
BodyAnimSpeed = 2
|
||||
|
||||
BodyAnim:SetSequence("wallrunverticalturn")
|
||||
elseif game.SinglePlayer() then
|
||||
ply:SendLua("BodyLimitX=90 BodyLimitY=180 BodyAnimCycle=0 BodyAnim:SetSequence(\"wallrunverticalturn\")")
|
||||
|
@ -195,6 +190,7 @@ local function Quickturn(ply, mv, cmd)
|
|||
mv:SetSideSpeed(0)
|
||||
mv:SetUpSpeed(0)
|
||||
mv:SetButtons(0)
|
||||
|
||||
cmd:ClearMovement()
|
||||
|
||||
if not ply:OnGround() and ply:GetMoveType() ~= MOVETYPE_NOCLIP and ply:WaterLevel() < 3 then
|
||||
|
@ -233,6 +229,7 @@ local function Quickturn(ply, mv, cmd)
|
|||
local diff = CurTime() - ply:GetQuickturnTime()
|
||||
local lerptime = diff * 6.5
|
||||
local lerp = Lerp(math.min(lerptime, 1), ply:GetQuickturnAng().y, target.y)
|
||||
|
||||
target.y = lerp
|
||||
|
||||
if CLIENT_IFTP() or game.SinglePlayer() then
|
||||
|
@ -247,4 +244,4 @@ local function Quickturn(ply, mv, cmd)
|
|||
end
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "Quickturn", Quickturn)
|
||||
hook.Add("SetupMove", "Quickturn", Quickturn)
|
|
@ -3,13 +3,8 @@ if SERVER then
|
|||
end
|
||||
|
||||
function ReplayCmd(ply, cmd)
|
||||
if not ply.ReplayRecording then
|
||||
return
|
||||
end
|
||||
|
||||
if cmd:TickCount() == 0 then
|
||||
return
|
||||
end
|
||||
if not ply.ReplayRecording then return end
|
||||
if cmd:TickCount() == 0 then return end
|
||||
|
||||
if not ply.ReplayFirstTick and cmd:TickCount() ~= 0 then
|
||||
ply.ReplayFirstTick = cmd:TickCount()
|
||||
|
@ -26,19 +21,9 @@ function ReplayCmd(ply, cmd)
|
|||
local curtick = cmd:TickCount() - ply.ReplayFirstTick + 1
|
||||
|
||||
if ang == 0 then
|
||||
ply.ReplayTicks[curtick] = {
|
||||
cmd:GetButtons(),
|
||||
cmd:GetForwardMove(),
|
||||
cmd:GetSideMove()
|
||||
}
|
||||
ply.ReplayTicks[curtick] = {cmd:GetButtons(), cmd:GetForwardMove(), cmd:GetSideMove()}
|
||||
else
|
||||
ply.ReplayTicks[curtick] = {
|
||||
cmd:GetButtons(),
|
||||
ang.x,
|
||||
ang.y,
|
||||
cmd:GetForwardMove(),
|
||||
cmd:GetSideMove()
|
||||
}
|
||||
ply.ReplayTicks[curtick] = {cmd:GetButtons(), ang.x, ang.y, cmd:GetForwardMove(), cmd:GetSideMove()}
|
||||
end
|
||||
|
||||
if curtick > 23760 then
|
||||
|
@ -51,13 +36,8 @@ end
|
|||
hook.Add("StartCommand", "ReplayStart", ReplayCmd)
|
||||
|
||||
function ReplayStart(ply)
|
||||
if not game.SinglePlayer() then
|
||||
return
|
||||
end
|
||||
|
||||
if ply.InReplay then
|
||||
return
|
||||
end
|
||||
if not game.SinglePlayer() then return end
|
||||
if ply.InReplay then return end
|
||||
|
||||
print("Starting Replay")
|
||||
|
||||
|
@ -69,26 +49,17 @@ function ReplayStart(ply)
|
|||
end
|
||||
|
||||
function ReplayStop(ply, debugdump)
|
||||
if not game.SinglePlayer() then
|
||||
return
|
||||
end
|
||||
|
||||
if not ply.ReplayTicks then
|
||||
return
|
||||
end
|
||||
|
||||
if ply.InReplay then
|
||||
return
|
||||
end
|
||||
if not game.SinglePlayer() then return end
|
||||
if not ply.ReplayTicks then return end
|
||||
if ply.InReplay then return end
|
||||
|
||||
print("Ending Replay (" .. #ply.ReplayTicks .. "ticks)")
|
||||
|
||||
ply.InReplay = false
|
||||
ply.ReplayRecording = false
|
||||
local debugdata = {
|
||||
ply.ReplayStartPos,
|
||||
ply.ReplayTicks
|
||||
}
|
||||
|
||||
local debugdata = {ply.ReplayStartPos, ply.ReplayTicks}
|
||||
|
||||
local replay = util.Compress(util.TableToJSON(debugdata))
|
||||
local dir = "beatrun/replays/" .. game.GetMap() .. "/"
|
||||
|
||||
|
@ -99,15 +70,11 @@ end
|
|||
local RFF = true
|
||||
|
||||
function ReplayPlayback(ply, cmd)
|
||||
if not ply.InReplay or not ply.ReplayTicks then
|
||||
return
|
||||
end
|
||||
if not ply.InReplay or not ply.ReplayTicks then return end
|
||||
|
||||
local cmdtc = cmd:TickCount()
|
||||
|
||||
if cmdtc == 0 then
|
||||
return
|
||||
end
|
||||
if cmdtc == 0 then return end
|
||||
|
||||
if not ply.ReplayFirstTick then
|
||||
ply.ReplayFirstTick = cmdtc
|
||||
|
@ -164,31 +131,31 @@ function ReplayPlayback(ply, cmd)
|
|||
|
||||
if TUTORIALMODE then
|
||||
net.Start("ReplayTutorialPos")
|
||||
net.WriteVector(ply.ReplayStartPos)
|
||||
net.WriteVector(ply.ReplayStartPos)
|
||||
net.SendToServer()
|
||||
|
||||
TutorialClearEvents()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ReplaySendToClient(ply)
|
||||
if not game.SinglePlayer() then
|
||||
return
|
||||
end
|
||||
if not game.SinglePlayer() then return end
|
||||
|
||||
local replaydata = util.JSONToTable(util.Decompress(file.Read("beatrun/replays/" .. game.GetMap() .. "/replaydump.txt", "DATA")))
|
||||
|
||||
ply.ReplayFirstTick = false
|
||||
ply.ReplayStartPos = replaydata[1]
|
||||
ply.ReplayTicks = replaydata[2]
|
||||
|
||||
ply:SetNWBool("InReplay", true)
|
||||
|
||||
net.Start("ReplaySendToClient")
|
||||
net.Send(ply)
|
||||
|
||||
ply.InReplay = true
|
||||
|
||||
ply:SetPos(ply.ReplayStartPos)
|
||||
ply:SetVelocity(vector_origin)
|
||||
|
||||
hook.Add("StartCommand", "ReplayPlay", ReplayPlayback)
|
||||
end
|
||||
|
||||
|
@ -220,23 +187,25 @@ if CLIENT then
|
|||
surface.SetTextPos(5, ScrH() * 0.975)
|
||||
|
||||
local text = TUTORIALMODE and "" or "*Clientside replay: may not be accurate "
|
||||
|
||||
surface.DrawText(text .. tickcount .. "/" .. #LocalPlayer().ReplayTicks)
|
||||
end
|
||||
end
|
||||
|
||||
function ReplayBegin()
|
||||
LocalPlayer().InReplay = true
|
||||
|
||||
RFF = CurTime() + 1
|
||||
|
||||
hook.Add("StartCommand", "ReplayPlay", ReplayPlayback)
|
||||
hook.Add("RenderScreenspaceEffects", "BeatrunReplayVision", BeatrunReplayVision)
|
||||
hook.Add("HUDPaint", "BeatrunReplayHUD", BeatrunReplayHUD)
|
||||
|
||||
surface.PlaySound("friends/friend_join.wav")
|
||||
end
|
||||
|
||||
net.Receive("ReplayRequest", ReplayBegin)
|
||||
net.Receive("ReplaySendToClient", function (length)
|
||||
|
||||
net.Receive("ReplaySendToClient", function(length)
|
||||
if length < 100 then
|
||||
LocalPlayer().ReplayTicks = util.JSONToTable(util.Decompress(file.Read("beatrun/replays/" .. game.GetMap() .. "/replaydump.txt", "DATA")))[2]
|
||||
else
|
||||
|
@ -244,7 +213,6 @@ if CLIENT then
|
|||
end
|
||||
|
||||
LocalPlayer().ReplayFirstTick = false
|
||||
|
||||
ReplayBegin()
|
||||
end)
|
||||
end
|
||||
|
@ -258,6 +226,6 @@ function ReplayCancel(ply)
|
|||
ply.ReplayFirstTick = false
|
||||
|
||||
net.Start("ReplayRequest")
|
||||
net.WriteBool(true)
|
||||
net.WriteBool(true)
|
||||
net.SendToServer()
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
local yaw = 0
|
||||
local pitch = 0
|
||||
|
||||
hook.Add("CreateMove", "Rope", function (cmd)
|
||||
hook.Add("CreateMove", "Rope", function(cmd)
|
||||
local ply = LocalPlayer()
|
||||
local vtl = viewtiltlerp
|
||||
|
||||
|
@ -15,16 +15,22 @@ hook.Add("CreateMove", "Rope", function (cmd)
|
|||
|
||||
local ang = LocalPlayer():EyeAngles()
|
||||
ang.x = 0
|
||||
|
||||
local grapplepos = LocalPlayer():GetGrapplePos()
|
||||
local vel = LocalPlayer():GetVelocity()
|
||||
vel.z = 0
|
||||
|
||||
velf = vel:Dot(ang:Forward()) * 80
|
||||
velr = vel:Dot(ang:Right()) * 80
|
||||
|
||||
grapplepos.z = 0
|
||||
|
||||
local mul = (grapplepos - LocalPlayer():EyePos()):Dot(ang:Forward()) > 0 and 1 or -1
|
||||
grapplepos = vel * mul
|
||||
|
||||
local y = math.Clamp(-grapplepos:Dot(ang:Forward()), -90, 90)
|
||||
local p = math.Clamp(-grapplepos:Dot(ang:Right()), -90, 90)
|
||||
|
||||
pitch = Lerp(FrameTime() * 1.5, pitch, p)
|
||||
yaw = Lerp(FrameTime() * 1.5, yaw, y)
|
||||
|
||||
|
@ -34,4 +40,4 @@ hook.Add("CreateMove", "Rope", function (cmd)
|
|||
BodyAnimArmCopy:SetPoseParameter("rope_pitch", pitch)
|
||||
|
||||
viewtiltlerp.z = -pitch * 0.1
|
||||
end)
|
||||
end)
|
|
@ -9,11 +9,13 @@ local function SafetyRollThink(ply, mv, cmd)
|
|||
|
||||
if speed <= -350 and not ply:OnGround() and not ply:GetWasOnGround() and (mv:KeyPressed(IN_SPEED) or mv:KeyPressed(IN_DUCK) or mv:KeyPressed(IN_BULLRUSH)) then
|
||||
ply:SetSafetyRollKeyTime(CurTime() + 0.5)
|
||||
|
||||
mv:SetButtons(bit.band(mv:GetButtons(), bit.bnot(IN_DUCK)))
|
||||
end
|
||||
|
||||
if CurTime() < ply:GetSafetyRollTime() then
|
||||
ply.FootstepLand = false
|
||||
|
||||
local ang = ply:GetSafetyRollAng()
|
||||
|
||||
mv:SetSideSpeed(0)
|
||||
|
@ -25,6 +27,7 @@ local function SafetyRollThink(ply, mv, cmd)
|
|||
vel.y = 0
|
||||
|
||||
mv:SetVelocity(ply:GetSafetyRollAng():Forward() * 200 + vel)
|
||||
|
||||
ply:SetMEMoveLimit(400)
|
||||
else
|
||||
mv:SetVelocity(vector_origin)
|
||||
|
@ -45,7 +48,7 @@ local roll = {
|
|||
AnimString = "rollanim"
|
||||
}
|
||||
|
||||
net.Receive("RollAnimSP", function ()
|
||||
net.Receive("RollAnimSP", function()
|
||||
if net.ReadBool() then
|
||||
roll.AnimString = "land"
|
||||
roll.animmodelstring = "mirroranim"
|
||||
|
@ -64,7 +67,8 @@ net.Receive("RollAnimSP", function ()
|
|||
RemoveBodyAnim()
|
||||
StartBodyAnim(roll)
|
||||
end)
|
||||
hook.Add("SetupMove", "EvadeRoll", function (ply, mv, cmd)
|
||||
|
||||
hook.Add("SetupMove", "EvadeRoll", function(ply, mv, cmd)
|
||||
if ply:GetJumpTurn() and ply:OnGround() and mv:KeyPressed(IN_BACK) then
|
||||
local ang = cmd:GetViewAngles()
|
||||
|
||||
|
@ -96,18 +100,20 @@ hook.Add("SetupMove", "EvadeRoll", function (ply, mv, cmd)
|
|||
StartBodyAnim(roll)
|
||||
elseif game.SinglePlayer() then
|
||||
net.Start("RollAnimSP")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(true)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(true)
|
||||
net.Send(ply)
|
||||
end
|
||||
end
|
||||
end)
|
||||
hook.Add("OnPlayerHitGround", "SafetyRoll", function (ply, water, floater, speed)
|
||||
|
||||
hook.Add("OnPlayerHitGround", "SafetyRoll", function(ply, water, floater, speed)
|
||||
local tr = {
|
||||
filter = ply,
|
||||
start = ply:GetPos()
|
||||
}
|
||||
tr.endpos = tr.start - Vector(0, 0, 150)
|
||||
|
||||
local out = util.TraceLine(tr)
|
||||
local normal = out.HitNormal
|
||||
local sang = normal:Angle()
|
||||
|
@ -115,6 +121,7 @@ hook.Add("OnPlayerHitGround", "SafetyRoll", function (ply, water, floater, speed
|
|||
if sang.x <= 314 and not ply:InOverdrive() and (speed >= 350 or ply:GetDive()) and speed < 800 and (CurTime() < ply:GetSafetyRollKeyTime() and not ply:GetDive() or ply:GetDive() and not ply:KeyDown(IN_DUCK)) and not ply:GetJumpTurn() and (not ply:Crouching() or ply:GetDive()) then
|
||||
ply:SetCrouchJump(false)
|
||||
ply:SetDive(false)
|
||||
|
||||
ParkourEvent("roll", ply)
|
||||
|
||||
local ang = ply:EyeAngles()
|
||||
|
@ -157,8 +164,8 @@ hook.Add("OnPlayerHitGround", "SafetyRoll", function (ply, water, floater, speed
|
|||
StartBodyAnim(roll)
|
||||
elseif game.SinglePlayer() then
|
||||
net.Start("RollAnimSP")
|
||||
net.WriteBool(land)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(land)
|
||||
net.WriteBool(false)
|
||||
net.Send(ply)
|
||||
end
|
||||
end
|
||||
|
@ -169,7 +176,7 @@ if SERVER then
|
|||
br_mat = true
|
||||
}
|
||||
|
||||
hook.Add("GetFallDamage", "SafetyRoll", function (ply, speed)
|
||||
hook.Add("GetFallDamage", "SafetyRoll", function(ply, speed)
|
||||
local groundent = ply:GetGroundEntity()
|
||||
|
||||
if IsValid(groundent) and safelandents[groundent:GetClass()] then
|
||||
|
@ -188,4 +195,4 @@ if SERVER then
|
|||
|
||||
return 0
|
||||
end)
|
||||
end
|
||||
end
|
|
@ -1,51 +1,27 @@
|
|||
local qslide_duration = 3
|
||||
local qslide_speedmult = 1
|
||||
|
||||
local slide_sounds = {
|
||||
[MAT_DIRT] = {
|
||||
"datae/fol_slide_dirt_01.wav",
|
||||
"datae/fol_slide_dirt_02.wav",
|
||||
"datae/fol_slide_dirt_03.wav",
|
||||
"datae/fol_slide_dirt_04.wav"
|
||||
},
|
||||
[MAT_SAND] = {
|
||||
"datae/fol_slide_sand_01.wav",
|
||||
"datae/fol_slide_sand_02.wav",
|
||||
"datae/fol_slide_sand_03.wav",
|
||||
"datae/fol_slide_sand_04.wav"
|
||||
},
|
||||
[MAT_METAL] = {
|
||||
"datae/fol_slide_metal_01.wav",
|
||||
"datae/fol_slide_metal_02.wav",
|
||||
"datae/fol_slide_metal_03.wav"
|
||||
},
|
||||
[MAT_GLASS] = {
|
||||
"datae/fol_slide_glass_01.wav",
|
||||
"datae/fol_slide_glass_02.wav",
|
||||
"datae/fol_slide_glass_03.wav",
|
||||
"datae/fol_slide_glass_04.wav"
|
||||
},
|
||||
[MAT_GRATE] = {
|
||||
"datae/fol_slide_grate_01.wav"
|
||||
},
|
||||
[MAT_SLOSH] = {
|
||||
"ambient/water/water_splash1.wav",
|
||||
"ambient/water/water_splash2.wav",
|
||||
"ambient/water/water_splash3.wav"
|
||||
},
|
||||
[MAT_WOOD] = {
|
||||
"datae/fol_slide_generic_01.wav",
|
||||
"datae/fol_slide_generic_02.wav",
|
||||
"datae/fol_slide_generic_03.wav"
|
||||
}
|
||||
[MAT_DIRT] = {"datae/fol_slide_dirt_01.wav", "datae/fol_slide_dirt_02.wav", "datae/fol_slide_dirt_03.wav", "datae/fol_slide_dirt_04.wav"},
|
||||
[MAT_SAND] = {"datae/fol_slide_sand_01.wav", "datae/fol_slide_sand_02.wav", "datae/fol_slide_sand_03.wav", "datae/fol_slide_sand_04.wav"},
|
||||
[MAT_METAL] = {"datae/fol_slide_metal_01.wav", "datae/fol_slide_metal_02.wav", "datae/fol_slide_metal_03.wav"},
|
||||
[MAT_GLASS] = {"datae/fol_slide_glass_01.wav", "datae/fol_slide_glass_02.wav", "datae/fol_slide_glass_03.wav", "datae/fol_slide_glass_04.wav"},
|
||||
[MAT_GRATE] = {"datae/fol_slide_grate_01.wav"},
|
||||
[MAT_SLOSH] = {"ambient/water/water_splash1.wav", "ambient/water/water_splash2.wav", "ambient/water/water_splash3.wav"},
|
||||
[MAT_WOOD] = {"datae/fol_slide_generic_01.wav", "datae/fol_slide_generic_02.wav", "datae/fol_slide_generic_03.wav"}
|
||||
}
|
||||
|
||||
local slideloop_sounds = {
|
||||
[0] = "MirrorsEdge/Slide/ME_FootStep_ConcreteSlideLoop.wav",
|
||||
[MAT_GLASS] = "MirrorsEdge/Slide/ME_FootStep_GlassSlideLoop.wav"
|
||||
}
|
||||
|
||||
slide_sounds[MAT_GRASS] = slide_sounds[MAT_DIRT]
|
||||
slide_sounds[MAT_SNOW] = slide_sounds[MAT_DIRT]
|
||||
slide_sounds[MAT_VENT] = slide_sounds[MAT_METAL]
|
||||
slide_sounds[0] = slide_sounds[MAT_DIRT]
|
||||
|
||||
--[[
|
||||
local animtable = {
|
||||
lockang = false,
|
||||
allowmove = true,
|
||||
|
@ -59,6 +35,8 @@ local animtable = {
|
|||
camjoint = "camerajoint",
|
||||
usefullbody = 2
|
||||
}
|
||||
]]
|
||||
|
||||
local blocked = false
|
||||
|
||||
local function SlidingAnimThink()
|
||||
|
@ -79,18 +57,19 @@ local function SlidingAnimThink()
|
|||
|
||||
if IsValid(ba) then
|
||||
ply.OrigEyeAng:Set(ply:GetSlidingAngle())
|
||||
|
||||
ply.OrigEyeAng.x = 0
|
||||
|
||||
local tr = util.QuickTrace(ply:GetPos(), Vector(0, 0, -64), ply)
|
||||
local normal = tr.HitNormal
|
||||
local oldang = ba:GetAngles()
|
||||
local ang = ba:GetAngles()
|
||||
local slidey = ply:GetSlidingAngle().y
|
||||
|
||||
oldang[2] = slidey
|
||||
ang[2] = slidey
|
||||
ang.x = math.max(normal:Angle().x + 90, 360)
|
||||
local newang = LerpAngle(20 * FrameTime(), oldang, ang)
|
||||
|
||||
local newang = LerpAngle(20 * FrameTime(), oldang, ang)
|
||||
ba:SetAngles(newang)
|
||||
|
||||
BodyLimitX = math.min(40 + ang[1] - 360, 60)
|
||||
|
@ -99,15 +78,11 @@ local function SlidingAnimThink()
|
|||
end
|
||||
|
||||
local function SlidingAnimStart()
|
||||
if not IsFirstTimePredicted() and not game.SinglePlayer() then
|
||||
return
|
||||
end
|
||||
if not IsFirstTimePredicted() and not game.SinglePlayer() then return end
|
||||
|
||||
local ply = LocalPlayer()
|
||||
|
||||
if not ply:Alive() then
|
||||
return
|
||||
end
|
||||
if not ply:Alive() then return end
|
||||
|
||||
deleteonend = false
|
||||
BodyLimitY = 80
|
||||
|
@ -131,24 +106,19 @@ local function SlidingAnimStart()
|
|||
end
|
||||
|
||||
BodyAnim:SetAngles(ply:GetSlidingAngle())
|
||||
|
||||
ply.OrigEyeAng = ply:GetSlidingAngle()
|
||||
|
||||
if ply:Crouching() or CurTime() < ply:GetCrouchJumpTime() then
|
||||
BodyAnimCycle = 0.1
|
||||
|
||||
BodyAnim:SetCycle(0.1)
|
||||
end
|
||||
|
||||
CamShake = ply:GetSlidingSlippery()
|
||||
|
||||
hook.Add("Think", "SlidingAnimThink", SlidingAnimThink)
|
||||
end
|
||||
|
||||
local function SlidingAnimEnd(slippery, diving)
|
||||
if not IsValid(BodyAnim) then
|
||||
return
|
||||
end
|
||||
if not IsValid(BodyAnim) then return end
|
||||
|
||||
local ply = LocalPlayer()
|
||||
|
||||
|
@ -162,21 +132,17 @@ local function SlidingAnimEnd(slippery, diving)
|
|||
if not slippery then
|
||||
if not ply.DiveSliding and not diving then
|
||||
BodyAnimString = "meslideend"
|
||||
|
||||
BodyAnim:ResetSequence("meslideend")
|
||||
else
|
||||
ply.DiveSliding = false
|
||||
|
||||
ParkourEvent("diveslideend", ply, true)
|
||||
end
|
||||
|
||||
BodyAnimCycle = 0
|
||||
|
||||
BodyAnim:SetCycle(0)
|
||||
|
||||
BodyAnimSpeed = 1.3
|
||||
|
||||
timer.Simple(0.2, function ()
|
||||
timer.Simple(0.2, function()
|
||||
if ply:Alive() and BodyAnimString == "meslideend" and BodyAnimArmCopy and not ply:GetSliding() and not ply:OnGround() then
|
||||
BodyAnimCycle = 0
|
||||
camjoint = "eyes"
|
||||
|
@ -189,17 +155,19 @@ local function SlidingAnimEnd(slippery, diving)
|
|||
camjoint = "eyes"
|
||||
end
|
||||
|
||||
timer.Simple(0.5, function ()
|
||||
timer.Simple(0.5, function()
|
||||
if ply:Alive() and BodyAnimArmCopy and not ply:GetSliding() then
|
||||
camjoint = "eyes"
|
||||
|
||||
BodyLimitY = 180
|
||||
BodyLimitX = 90
|
||||
|
||||
CamIgnoreAng = true
|
||||
end
|
||||
end)
|
||||
|
||||
if blocked then
|
||||
timer.Simple(0.35, function ()
|
||||
timer.Simple(0.35, function()
|
||||
if IsValid(BodyAnim) then
|
||||
BodyAnim:SetSequence("crouchstill")
|
||||
end
|
||||
|
@ -216,11 +184,13 @@ if game.SinglePlayer() then
|
|||
util.AddNetworkString("sliding_spfix")
|
||||
util.AddNetworkString("sliding_spend")
|
||||
else
|
||||
net.Receive("sliding_spfix", function ()
|
||||
net.Receive("sliding_spfix", function()
|
||||
SlidingAnimStart()
|
||||
end)
|
||||
net.Receive("sliding_spend", function ()
|
||||
|
||||
net.Receive("sliding_spend", function()
|
||||
blocked = net.ReadBool()
|
||||
|
||||
local slippery = net.ReadBool()
|
||||
local diving = net.ReadBool()
|
||||
|
||||
|
@ -230,15 +200,16 @@ if game.SinglePlayer() then
|
|||
end
|
||||
|
||||
local slidepunch = Angle(2.5, 0, -0.5)
|
||||
local slidepunchend = Angle(3, 0, -3.5)
|
||||
-- local slidepunchend = Angle(3, 0, -3.5)
|
||||
local trace_down = Vector(0, 0, 32)
|
||||
local trace_up = Vector(0, 0, 32)
|
||||
-- local trace_up = Vector(0, 0, 32)
|
||||
local trace_tbl = {}
|
||||
|
||||
local function SlideSurfaceSound(ply, pos)
|
||||
trace_tbl.start = pos
|
||||
trace_tbl.endpos = pos - trace_down
|
||||
trace_tbl.filter = ply
|
||||
|
||||
local tr = util.TraceLine(trace_tbl)
|
||||
local sndtable = slide_sounds[tr.MatType] or slide_sounds[0]
|
||||
|
||||
|
@ -255,14 +226,15 @@ end
|
|||
|
||||
local function SlideLoopSound(ply, pos, mat)
|
||||
local sndtable = slideloop_sounds[mat] or slideloop_sounds[0]
|
||||
ply.SlideLoopSound = CreateSound(ply, sndtable)
|
||||
|
||||
ply.SlideLoopSound = CreateSound(ply, sndtable)
|
||||
ply.SlideLoopSound:PlayEx(0.05, 100)
|
||||
end
|
||||
|
||||
local COORD_FRACTIONAL_BITS = 5
|
||||
local COORD_DENOMINATOR = bit.lshift(1, COORD_FRACTIONAL_BITS)
|
||||
local COORD_RESOLUTION = 1 / COORD_FRACTIONAL_BITS
|
||||
-- local COORD_FRACTIONAL_BITS = 5
|
||||
-- local COORD_DENOMINATOR = bit.lshift(1, COORD_FRACTIONAL_BITS)
|
||||
-- local COORD_RESOLUTION = 1 / COORD_FRACTIONAL_BITS
|
||||
|
||||
local metaent = FindMetaTable("Entity")
|
||||
metaent.oldOnGround = metaent.oldOnGround or metaent.OnGround
|
||||
|
||||
|
@ -270,10 +242,8 @@ function metaent:OnGround()
|
|||
return self:IsPlayer() and self:GetSlidingSlippery() or self:oldOnGround()
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
||||
if not ply:Alive() then
|
||||
return
|
||||
end
|
||||
hook.Add("SetupMove", "qslide", function(ply, mv, cmd)
|
||||
if not ply:Alive() then return end
|
||||
|
||||
if not ply.OldDuckSpeed then
|
||||
ply.OldDuckSpeed = ply:GetDuckSpeed()
|
||||
|
@ -284,6 +254,7 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
local speed = mv:GetVelocity()
|
||||
speed.z = 0
|
||||
speed = speed:Length()
|
||||
|
||||
local runspeed = ply:GetRunSpeed()
|
||||
local slidetime = math.max(0.1, qslide_duration)
|
||||
local ducking = mv:KeyDown(IN_DUCK)
|
||||
|
@ -295,6 +266,7 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
if not ply.SlideSlipperyTrace then
|
||||
local mins, maxs = ply:GetHull()
|
||||
ply.SlideSlipperyTraceOut = {}
|
||||
|
||||
ply.SlideSlipperyTrace = {
|
||||
mask = MASK_SHOT_HULL,
|
||||
collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT,
|
||||
|
@ -324,8 +296,9 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
if slipperytraceout.Fraction > 0 and slipperytraceout.Fraction < 1 and not slipperytraceout.StartSolid then
|
||||
local slipnormal = slipperytraceout.HitNormal
|
||||
local hitpos = slipperytraceout.HitPos
|
||||
local delta = math.abs(mv:GetOrigin().z - hitpos.z)
|
||||
local ent = slipperytraceout.Entity
|
||||
-- local delta = math.abs(mv:GetOrigin().z - hitpos.z)
|
||||
|
||||
slipperytrace.start = safestart
|
||||
slipperytrace.endpos = safestart - Vector(0, 0, 120)
|
||||
|
||||
|
@ -337,6 +310,7 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
|
||||
if sang.x > 315 and sang.x < 330 then
|
||||
mv:SetOrigin(hitpos)
|
||||
|
||||
ply:SetGroundEntity(ent)
|
||||
ply:SetCrouchJumpBlocked(false)
|
||||
|
||||
|
@ -350,6 +324,7 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
|
||||
dmg:SetDamageType(DMG_FALL)
|
||||
dmg:SetDamage(1000)
|
||||
|
||||
ply:TakeDamageInfo(dmg)
|
||||
end
|
||||
end
|
||||
|
@ -363,6 +338,7 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
slipperytrace.endpos = slipperytrace.start - Vector(0, 0, 32)
|
||||
|
||||
util.TraceHull(slipperytrace)
|
||||
|
||||
ply:SetSlidingSlipperyUpdate(CT + 0.25)
|
||||
end
|
||||
|
||||
|
@ -398,7 +374,6 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
vel = 230
|
||||
|
||||
ply:SetDive(false)
|
||||
|
||||
ply.DiveSliding = false
|
||||
end
|
||||
|
||||
|
@ -410,7 +385,6 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
ply:SetSliding(true)
|
||||
|
||||
local slidecalctime = slidetime * math.min(vel / 300, 1)
|
||||
|
||||
ply:SetSlidingTime(CT + slidecalctime)
|
||||
|
||||
if not ply:Crouching() then
|
||||
|
@ -426,14 +400,12 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
else
|
||||
local ang = cmd:GetViewAngles()
|
||||
ang.x = 0
|
||||
|
||||
ply:SetSlidingAngle(ang)
|
||||
end
|
||||
end
|
||||
|
||||
ply:SetSlidingVel(vel)
|
||||
ply:SetSlidingStrafe(0)
|
||||
|
||||
ply.SlidingInitTime = CT
|
||||
|
||||
if game.SinglePlayer() then
|
||||
|
@ -452,12 +424,13 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
|
||||
if game.SinglePlayer() then
|
||||
net.Start("sliding_spfix")
|
||||
net.WriteBool(ply:GetDive())
|
||||
net.WriteBool(ply:GetDive())
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
if CLIENT_IFTP() then
|
||||
SlidingAnimStart()
|
||||
|
||||
hook.Add("Think", "SlidingAnimThink", SlidingAnimThink)
|
||||
end
|
||||
elseif (not ducking and ply:GetMelee() == 0 and not slippery or not onground) and sliding then
|
||||
|
@ -466,10 +439,12 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
if not ducking then
|
||||
ply.SlideHull = ply.SlideHull or {}
|
||||
ply.SlideHullOut = ply.SlideHullOut or {}
|
||||
|
||||
local hulltr = ply.SlideHull
|
||||
local hulltrout = ply.SlideHullOut
|
||||
local mins, maxs = ply:GetHull()
|
||||
local origin = mv:GetOrigin()
|
||||
|
||||
hulltr.start = origin
|
||||
hulltr.endpos = origin
|
||||
hulltr.maxs = maxs
|
||||
|
@ -497,9 +472,9 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
|
||||
if game.SinglePlayer() then
|
||||
net.Start("sliding_spend")
|
||||
net.WriteBool(blocked)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(ply.DiveSliding)
|
||||
net.WriteBool(blocked)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(ply.DiveSliding)
|
||||
net.Send(ply)
|
||||
|
||||
ply.DiveSliding = false
|
||||
|
@ -516,6 +491,7 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
end
|
||||
|
||||
ply:ConCommand("-duck")
|
||||
|
||||
ply:SetViewOffsetDucked(Vector(0, 0, 32))
|
||||
end
|
||||
|
||||
|
@ -528,7 +504,6 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
eyeang = eyeang:Forward()
|
||||
|
||||
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
|
||||
|
||||
|
@ -562,9 +537,7 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
|
||||
if mv:KeyPressed(IN_JUMP) then
|
||||
local vel = mv:GetVelocity()
|
||||
|
||||
vel:Mul(math.min(math.max(speed, 300) / 300, 1))
|
||||
|
||||
vel.z = 175
|
||||
|
||||
ply:SetSliding(false)
|
||||
|
@ -578,9 +551,12 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
end
|
||||
|
||||
mv:SetOrigin(mv:GetOrigin() + Vector(0, 0, 33))
|
||||
|
||||
ply:SetGroundEntity(nil)
|
||||
ply:SetSlidingSlippery(false)
|
||||
|
||||
mv:SetVelocity(vel)
|
||||
|
||||
ParkourEvent("jumpslide", ply)
|
||||
end
|
||||
end
|
||||
|
@ -605,7 +581,6 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
end
|
||||
|
||||
ply.DiveSliding = false
|
||||
|
||||
ply:SetSlidingTime(0)
|
||||
ply:SetSliding(false)
|
||||
ply:SetQuickturn(true)
|
||||
|
@ -622,6 +597,7 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
ply:ViewPunch(Angle(2.5, 0, 5))
|
||||
ply:SetViewOffsetDucked(Vector(0, 0, 17))
|
||||
ply:SetViewOffset(Vector(0, 0, 64))
|
||||
|
||||
mv:SetOrigin(mv:GetOrigin() + Vector(0, 0, 48))
|
||||
mv:SetVelocity(mv:GetVelocity() * 0.75 + Vector(0, 0, 251))
|
||||
end
|
||||
|
@ -641,9 +617,9 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
|
||||
if SERVER and game.SinglePlayer() then
|
||||
net.Start("sliding_spend")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(slippery)
|
||||
net.WriteBool(ply.DiveSliding)
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(slippery)
|
||||
net.WriteBool(ply.DiveSliding)
|
||||
net.Send(ply)
|
||||
elseif CLIENT_IFTP() then
|
||||
SlidingAnimEnd(slippery, ply.DiveSliding)
|
||||
|
@ -667,6 +643,7 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
|
||||
if CLIENT then
|
||||
DoJumpTurn(false)
|
||||
|
||||
BodyAnim:SetSequence("meslideendprone")
|
||||
elseif game.SinglePlayer() then
|
||||
ply:SendLua("DoJumpTurn(false) BodyAnim:SetSequence('meslideendprone')")
|
||||
|
@ -682,12 +659,12 @@ hook.Add("SetupMove", "qslide", function (ply, mv, cmd)
|
|||
ply:SetUnDuckSpeed(ply.OldUnDuckSpeed)
|
||||
end
|
||||
end)
|
||||
hook.Add("PlayerFootstep", "qslidestep", function (ply)
|
||||
if ply:GetSliding() then
|
||||
return true
|
||||
end
|
||||
|
||||
hook.Add("PlayerFootstep", "qslidestep", function(ply)
|
||||
if ply:GetSliding() then return true end
|
||||
end)
|
||||
hook.Add("StartCommand", "qslidespeed", function (ply, cmd)
|
||||
|
||||
hook.Add("StartCommand", "qslidespeed", function(ply, cmd)
|
||||
if ply:GetSliding() then
|
||||
cmd:RemoveKey(IN_SPEED)
|
||||
|
||||
|
@ -696,11 +673,10 @@ hook.Add("StartCommand", "qslidespeed", function (ply, cmd)
|
|||
end
|
||||
|
||||
cmd:ClearMovement()
|
||||
|
||||
local slidetime = math.max(0.1, qslide_duration)
|
||||
|
||||
if (ply:GetSlidingTime() - CurTime()) / slidetime > 0.8 and (ply.SlidingInitTime > CurTime() - 0.25 or ply:GetSlidingSlippery()) then
|
||||
cmd:SetButtons(bit.bor(cmd:GetButtons(), IN_DUCK))
|
||||
end
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -1,10 +1,12 @@
|
|||
soundAdd_old = sound.Add
|
||||
|
||||
local function soundAdd_detour(tbl)
|
||||
if !tbl.name then return end
|
||||
if not tbl.name then return end
|
||||
soundAdd_old(tbl)
|
||||
|
||||
timer.Simple(2, function()
|
||||
util.PrecacheSound(tbl.name)
|
||||
end)
|
||||
end
|
||||
|
||||
sound.Add = soundAdd_detour
|
|
@ -3,95 +3,42 @@ sound.Add({
|
|||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish1.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish10.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish11.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish12.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish2.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish3.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish4.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish5.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish6.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish7.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish8.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish1.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish10.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish11.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish12.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish2.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish3.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish4.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish5.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish6.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish7.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish8.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Vault_Swish9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Cloth.MovementRun",
|
||||
volume = 0.75,
|
||||
level = 30,
|
||||
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"
|
||||
}
|
||||
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"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Cloth.RollLand",
|
||||
volume = 1,
|
||||
level = 35,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land1.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land2.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land3.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land4.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land5.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land6.wav",
|
||||
"MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land7.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land1.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land2.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land3.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land4.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land5.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land6.wav", "MirrorsEdge/Cloth/ME_Faith_Cloth_Roll_Land7.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Cloth.Roll",
|
||||
volume = 1,
|
||||
level = 75,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Body_Roll_01.wav",
|
||||
"MirrorsEdge/Body_Roll_02.wav",
|
||||
"MirrorsEdge/Body_Roll_03.wav",
|
||||
"MirrorsEdge/Body_Roll_04.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Body_Roll_01.wav", "MirrorsEdge/Body_Roll_02.wav", "MirrorsEdge/Body_Roll_03.wav", "MirrorsEdge/Body_Roll_04.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Cloth.FallShortHard",
|
||||
volume = 1,
|
||||
level = 75,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Cloth/BF_Short_Hard_1a.wav",
|
||||
"MirrorsEdge/Cloth/BF_Short_Hard_1b.wav",
|
||||
"MirrorsEdge/Cloth/BF_Short_Hard_1c.wav",
|
||||
"MirrorsEdge/Cloth/BF_Short_Hard_1d.wav",
|
||||
"MirrorsEdge/Cloth/BF_Short_Hard_1e.wav",
|
||||
"MirrorsEdge/Cloth/BF_Short_Hard_1f.wav"
|
||||
}
|
||||
})
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Cloth/BF_Short_Hard_1a.wav", "MirrorsEdge/Cloth/BF_Short_Hard_1b.wav", "MirrorsEdge/Cloth/BF_Short_Hard_1c.wav", "MirrorsEdge/Cloth/BF_Short_Hard_1d.wav", "MirrorsEdge/Cloth/BF_Short_Hard_1e.wav", "MirrorsEdge/Cloth/BF_Short_Hard_1f.wav"}
|
||||
})
|
|
@ -3,631 +3,251 @@ sound.Add({
|
|||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun1.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun10.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun11.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun12.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun13.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun14.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun2.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun3.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun4.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun5.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun6.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun7.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun8.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun1.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun10.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun11.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun12.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun13.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun14.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun2.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun3.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun4.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun5.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun6.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun7.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun8.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRun9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Release.Concrete",
|
||||
volume = 1,
|
||||
level = 30,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease1.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease2.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease3.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease4.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease5.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease6.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease7.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease8.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease9.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease10.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease11.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease12.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease13.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease14.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease1.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease2.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease3.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease4.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease5.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease6.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease7.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease8.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease9.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease10.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease11.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease12.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease13.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_ConcreteRunRelease14.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Land.Concrete",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land1.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land2.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land3.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land4.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land5.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land6.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land7.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land1.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land2.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land3.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land4.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land5.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land6.wav", "MirrorsEdge/Footsteps/Concrete/ME_FootStep_Concrete_Land7.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Footsteps.Glass",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
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"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
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 = "Release.Glass",
|
||||
volume = 1,
|
||||
level = 30,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease1.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease2.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease3.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease4.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease5.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease6.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease7.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease8.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease1.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease2.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease3.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease4.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease5.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease6.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease7.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease8.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPaneRunRelease9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Land.Glass",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand1.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand2.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand3.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand4.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand5.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand6.wav",
|
||||
"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand7.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand1.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand2.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand3.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand4.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand5.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand6.wav", "MirrorsEdge/Footsteps/Glass/ME_FootStep_GlassPanelLand7.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Footsteps.Metal",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint1.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint10.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint11.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint12.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint13.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint14.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint15.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint16.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint17.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint18.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint19.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint2.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint20.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint3.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint4.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint5.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint6.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint7.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint8.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint1.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint10.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint11.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint12.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint13.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint14.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint15.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint16.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint17.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint18.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint19.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint2.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint20.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint3.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint4.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint5.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint6.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint7.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint8.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Release.Metal",
|
||||
volume = 0.3,
|
||||
level = 30,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release1.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release10.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release11.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release12.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release13.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release14.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release15.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release2.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release3.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release4.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release5.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release6.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release7.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release8.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release1.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release10.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release11.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release12.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release13.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release14.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release15.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release2.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release3.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release4.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release5.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release6.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release7.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release8.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Polished_Sprint_Release9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Footsteps.Duct",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"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"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"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 = "Footsteps.Gantry",
|
||||
volume = 0.5,
|
||||
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"
|
||||
}
|
||||
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 = 0.5,
|
||||
level = 30,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release1.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release2.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release3.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release4.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release5.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release6.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release7.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release8.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release1.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release2.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release3.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release4.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release5.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release6.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release7.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release8.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Metal_Gantry_Release9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Metal.Ringout",
|
||||
volume = 0.5,
|
||||
level = 50,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Master_Metal_Vault_Ringouts1.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Master_Metal_Vault_Ringouts2.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Master_Metal_Vault_Ringouts3.wav",
|
||||
"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Master_Metal_Vault_Ringouts4.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Metal/ME_Footsteps_Master_Metal_Vault_Ringouts1.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Master_Metal_Vault_Ringouts2.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Master_Metal_Vault_Ringouts3.wav", "MirrorsEdge/Footsteps/Metal/ME_Footsteps_Master_Metal_Vault_Ringouts4.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Footsteps.Wood",
|
||||
volume = 1,
|
||||
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"
|
||||
}
|
||||
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 = "Release.Wood",
|
||||
volume = 1,
|
||||
level = 30,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease1.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease10.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease11.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease12.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease13.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease14.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease15.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease2.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease3.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease4.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease5.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease6.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease7.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease8.wav",
|
||||
"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease1.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease10.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease11.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease12.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease13.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease14.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease15.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease2.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease3.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease4.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease5.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease6.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease7.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease8.wav", "MirrorsEdge/Footsteps/Wood/ME_FootStep_WoodGeneric_RunRelease9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Footsteps.Water",
|
||||
volume = 0.25,
|
||||
level = 40,
|
||||
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"
|
||||
}
|
||||
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 = "Release.Water",
|
||||
volume = 1,
|
||||
level = 30,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release1.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release10.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release11.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release12.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release13.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release14.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release2.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release3.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release4.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release5.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release6.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release7.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release8.wav",
|
||||
"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release1.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release10.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release11.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release12.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release13.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release14.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release2.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release3.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release4.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release5.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release6.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release7.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release8.wav", "MirrorsEdge/Footsteps/Water/ME_Faith_Water_Shallow_Sprint_Release9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Footsteps.Gravel",
|
||||
volume = 0.25,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint1.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint10.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint11.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint12.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint13.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint2.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint3.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint4.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint5.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint6.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint7.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint8.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint1.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint10.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint11.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint12.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint13.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint2.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint3.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint4.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint5.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint6.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint7.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint8.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Release.Gravel",
|
||||
volume = 1,
|
||||
level = 30,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith1.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith10.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith11.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith12.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith13.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith14.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith2.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith3.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith4.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith5.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith6.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith7.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith8.wav",
|
||||
"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith1.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith10.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith11.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith12.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith13.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith14.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith2.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith3.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith4.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith5.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith6.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith7.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith8.wav", "MirrorsEdge/Footsteps/Gravel/ME_Footsteps_Gravel_Sprint_Release_Faith9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Land.Gravel",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
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"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
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 = "Footsteps.LadderHeavy",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Ladder/LadderFootstepHvy_01.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepHvy_02.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepHvy_03.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepHvy_04.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepHvy_05.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepHvy_06.ogg"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Ladder/LadderFootstepHvy_01.ogg", "MirrorsEdge/Ladder/LadderFootstepHvy_02.ogg", "MirrorsEdge/Ladder/LadderFootstepHvy_03.ogg", "MirrorsEdge/Ladder/LadderFootstepHvy_04.ogg", "MirrorsEdge/Ladder/LadderFootstepHvy_05.ogg", "MirrorsEdge/Ladder/LadderFootstepHvy_06.ogg"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Footsteps.LadderMedium",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Ladder/LadderFootstepMed_01.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepMed_02.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepMed_03.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepMed_04.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepMed_05.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepMed_06.ogg"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Ladder/LadderFootstepMed_01.ogg", "MirrorsEdge/Ladder/LadderFootstepMed_02.ogg", "MirrorsEdge/Ladder/LadderFootstepMed_03.ogg", "MirrorsEdge/Ladder/LadderFootstepMed_04.ogg", "MirrorsEdge/Ladder/LadderFootstepMed_05.ogg", "MirrorsEdge/Ladder/LadderFootstepMed_06.ogg"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Release.Ladder",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Ladder/LadderFootstepRelease_01.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepRelease_02.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepRelease_03.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepRelease_04.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepRelease_05.ogg",
|
||||
"MirrorsEdge/Ladder/LadderFootstepRelease_06.ogg"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Ladder/LadderFootstepRelease_01.ogg", "MirrorsEdge/Ladder/LadderFootstepRelease_02.ogg", "MirrorsEdge/Ladder/LadderFootstepRelease_03.ogg", "MirrorsEdge/Ladder/LadderFootstepRelease_04.ogg", "MirrorsEdge/Ladder/LadderFootstepRelease_05.ogg", "MirrorsEdge/Ladder/LadderFootstepRelease_06.ogg"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "OWallrun.Concrete",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith1.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith10.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith11.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith12.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith13.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith14.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith2.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith3.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith4.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith5.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith6.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith7.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith8.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith9.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith1.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith10.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith11.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith12.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith13.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith14.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith2.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith3.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith4.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith5.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith6.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith7.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith8.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Slow_Faith9.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "OWallrunFast.Concrete",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith1.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith2.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith3.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith4.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith5.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith6.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith7.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith8.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith9.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith10.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith11.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith12.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith13.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith14.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith15.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith16.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith17.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith18.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith19.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith20.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith21.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith22.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith1.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith2.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith3.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith4.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith5.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith6.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith7.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith8.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith9.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith10.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith11.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith12.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith13.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith14.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith15.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith16.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith17.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith18.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith19.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith20.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith21.wav", "MirrorsEdge/Footsteps/Concrete/ME_Footsteps_Congrete_Clean_WallRun_Fast_Faith22.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Wallrun.Concrete",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_01.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_02.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_03.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_04.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_05.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_06.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_01.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_02.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_03.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_04.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_05.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRun_06.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "WallrunRelease.Concrete",
|
||||
volume = 1,
|
||||
level = 35,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_01.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_02.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_03.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_04.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_05.wav",
|
||||
"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_06.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_01.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_02.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_03.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_04.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_05.wav", "MirrorsEdge/Footsteps/Concrete/ConcreteFootStepWallRunRelease_06.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Footsteps.Spark",
|
||||
volume = 0.2,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
85,
|
||||
115
|
||||
},
|
||||
sound = {
|
||||
"bigspark1.wav",
|
||||
"bigspark2.wav"
|
||||
}
|
||||
pitch = {85, 115},
|
||||
sound = {"bigspark1.wav", "bigspark2.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "CyborgRun",
|
||||
volume = 0.75,
|
||||
sound = "cyborgrun.wav",
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
}
|
||||
pitch = {90, 110}
|
||||
})
|
||||
|
||||
FOOTSTEPS_LUT = {
|
||||
|
@ -643,6 +263,7 @@ FOOTSTEPS_LUT = {
|
|||
["player/footsteps/wood"] = "Wood",
|
||||
["player/footsteps/chainlink"] = "Gantry"
|
||||
}
|
||||
|
||||
FOOTSTEPS_RELEASE_LUT = {
|
||||
["player/footsteps/woodpanel"] = "Wood",
|
||||
["player/footsteps/gravel"] = "Gravel",
|
||||
|
@ -656,9 +277,10 @@ FOOTSTEPS_RELEASE_LUT = {
|
|||
["player/footsteps/wood"] = "Wood",
|
||||
["player/footsteps/chainlink"] = "Gantry"
|
||||
}
|
||||
|
||||
FOOTSTEPS_LAND_LUT = {
|
||||
["physics/glass/glass_sheet_step"] = "Glass",
|
||||
["player/footsteps/concrete"] = "Concrete",
|
||||
["player/footsteps/sand"] = "Gravel",
|
||||
["player/footsteps/gravel"] = "Gravel"
|
||||
}
|
||||
}
|
|
@ -3,86 +3,33 @@ sound.Add({
|
|||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepSoft_01.wav",
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepSoft_02.wav",
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepSoft_03.wav",
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepSoft_04.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepSoft_01.wav", "MirrorsEdge/Handsteps/Concrete/ConcreteHandStepSoft_02.wav", "MirrorsEdge/Handsteps/Concrete/ConcreteHandStepSoft_03.wav", "MirrorsEdge/Handsteps/Concrete/ConcreteHandStepSoft_04.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Handsteps.ConcreteHard",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepHard_01.wav",
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepHard_02.wav",
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepHard_03.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepHard_01.wav", "MirrorsEdge/Handsteps/Concrete/ConcreteHandStepHard_02.wav", "MirrorsEdge/Handsteps/Concrete/ConcreteHandStepHard_03.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Handsteps.Ladder",
|
||||
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 = {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"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Handsteps.ConcreteRelease",
|
||||
volume = 0.5,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
75,
|
||||
90
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepFastRelease_01.wav",
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepFastRelease_02.wav",
|
||||
"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepFastRelease_03.wav"
|
||||
}
|
||||
})
|
||||
pitch = {75, 90},
|
||||
sound = {"MirrorsEdge/Handsteps/Concrete/ConcreteHandStepFastRelease_01.wav", "MirrorsEdge/Handsteps/Concrete/ConcreteHandStepFastRelease_02.wav", "MirrorsEdge/Handsteps/Concrete/ConcreteHandStepFastRelease_03.wav"}
|
||||
})
|
|
@ -3,66 +3,33 @@ sound.Add({
|
|||
volume = 1,
|
||||
level = 50,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"melee/foot1.wav",
|
||||
"melee/foot2.wav",
|
||||
"melee/foot3.wav",
|
||||
"melee/foot4.wav",
|
||||
"melee/foot5.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"melee/foot1.wav", "melee/foot2.wav", "melee/foot3.wav", "melee/foot4.wav", "melee/foot5.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Melee.Fist",
|
||||
volume = 1,
|
||||
level = 45,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"melee/fist1.wav",
|
||||
"melee/fist2.wav",
|
||||
"melee/fist3.wav",
|
||||
"melee/fist4.wav",
|
||||
"melee/fist5.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"melee/fist1.wav", "melee/fist2.wav", "melee/fist3.wav", "melee/fist4.wav", "melee/fist5.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Melee.LegSwoosh",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"melee/legswoosh1.wav",
|
||||
"melee/legswoosh2.wav",
|
||||
"melee/legswoosh3.wav",
|
||||
"melee/legswoosh4.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"melee/legswoosh1.wav", "melee/legswoosh2.wav", "melee/legswoosh3.wav", "melee/legswoosh4.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Melee.ArmSwoosh",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"melee/armswoosh1.wav",
|
||||
"melee/armswoosh2.wav",
|
||||
"melee/armswoosh3.wav",
|
||||
"melee/armswoosh4.wav",
|
||||
"melee/armswoosh5.wav",
|
||||
"melee/armswoosh6.wav"
|
||||
}
|
||||
})
|
||||
pitch = {90, 110},
|
||||
sound = {"melee/armswoosh1.wav", "melee/armswoosh2.wav", "melee/armswoosh3.wav", "melee/armswoosh4.wav", "melee/armswoosh5.wav", "melee/armswoosh6.wav"}
|
||||
})
|
|
@ -3,80 +3,46 @@ sound.Add({
|
|||
volume = 1,
|
||||
level = 50,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/ME_BodyConcreteBump1.wav",
|
||||
"MirrorsEdge/ME_BodyConcreteBump2.wav",
|
||||
"MirrorsEdge/ME_BodyConcreteBump3.wav",
|
||||
"MirrorsEdge/ME_BodyConcreteBump4.wav",
|
||||
"MirrorsEdge/ME_BodyConcreteBump5.wav",
|
||||
"MirrorsEdge/ME_BodyConcreteBump6.wav",
|
||||
"MirrorsEdge/ME_BodyConcreteBump7.wav",
|
||||
"MirrorsEdge/ME_BodyConcreteBump8.wav",
|
||||
"MirrorsEdge/ME_BodyConcreteBump9.wav",
|
||||
"MirrorsEdge/ME_BodyConcreteBump10.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/ME_BodyConcreteBump1.wav", "MirrorsEdge/ME_BodyConcreteBump2.wav", "MirrorsEdge/ME_BodyConcreteBump3.wav", "MirrorsEdge/ME_BodyConcreteBump4.wav", "MirrorsEdge/ME_BodyConcreteBump5.wav", "MirrorsEdge/ME_BodyConcreteBump6.wav", "MirrorsEdge/ME_BodyConcreteBump7.wav", "MirrorsEdge/ME_BodyConcreteBump8.wav", "MirrorsEdge/ME_BodyConcreteBump9.wav", "MirrorsEdge/ME_BodyConcreteBump10.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Door.Barge",
|
||||
volume = 1,
|
||||
level = 60,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/GameplayObjects/ME_Door_Generic_Barge1.wav",
|
||||
"MirrorsEdge/GameplayObjects/ME_Door_Generic_Barge2.wav",
|
||||
"MirrorsEdge/GameplayObjects/ME_Door_Generic_Barge3.wav",
|
||||
"MirrorsEdge/GameplayObjects/ME_Door_Generic_Barge4.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/GameplayObjects/ME_Door_Generic_Barge1.wav", "MirrorsEdge/GameplayObjects/ME_Door_Generic_Barge2.wav", "MirrorsEdge/GameplayObjects/ME_Door_Generic_Barge3.wav", "MirrorsEdge/GameplayObjects/ME_Door_Generic_Barge4.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "FenceClimb",
|
||||
volume = 1,
|
||||
level = 60,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
95,
|
||||
105
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/GameplayObjects/Fence_01.wav",
|
||||
"MirrorsEdge/GameplayObjects/Fence_02.wav"
|
||||
}
|
||||
pitch = {95, 105},
|
||||
sound = {"MirrorsEdge/GameplayObjects/Fence_01.wav", "MirrorsEdge/GameplayObjects/Fence_02.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "FenceClimbEnd",
|
||||
volume = 0.5,
|
||||
sound = "MirrorsEdge/GameplayObjects/Fence.wav",
|
||||
level = 60,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
95,
|
||||
105
|
||||
}
|
||||
pitch = {95, 105}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Vault",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
channel = CHAN_STATIC,
|
||||
pitch = {
|
||||
90,
|
||||
110
|
||||
},
|
||||
sound = {
|
||||
"MirrorsEdge/Vault_01.wav",
|
||||
"MirrorsEdge/Vault_02.wav",
|
||||
"MirrorsEdge/Vault_03.wav",
|
||||
"MirrorsEdge/Vault_04.wav"
|
||||
}
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Vault_01.wav", "MirrorsEdge/Vault_02.wav", "MirrorsEdge/Vault_03.wav", "MirrorsEdge/Vault_04.wav"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ZiplineStart",
|
||||
volume = 1,
|
||||
|
@ -85,6 +51,7 @@ sound.Add({
|
|||
level = 40,
|
||||
channel = CHAN_STATIC
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ZiplineEnd",
|
||||
volume = 1,
|
||||
|
@ -93,6 +60,7 @@ sound.Add({
|
|||
level = 40,
|
||||
channel = CHAN_STATIC
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "ZiplineLoop",
|
||||
volume = 1,
|
||||
|
@ -101,18 +69,12 @@ sound.Add({
|
|||
level = 40,
|
||||
channel = CHAN_STATIC
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Land.Ladder",
|
||||
volume = 1,
|
||||
level = 40,
|
||||
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"
|
||||
}
|
||||
})
|
||||
pitch = {90, 110},
|
||||
sound = {"MirrorsEdge/Ladder/Ladder_Land_01.ogg", "MirrorsEdge/Ladder/Ladder_Land_02.ogg", "MirrorsEdge/Ladder/Ladder_Land_03.ogg"}
|
||||
})
|
|
@ -1,7 +1,5 @@
|
|||
local FaithVO = CreateConVar("Beatrun_FaithVO", 0, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
})
|
||||
local FaithVO = CreateConVar("Beatrun_FaithVO", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE})
|
||||
|
||||
local meta = FindMetaTable("Player")
|
||||
|
||||
sound.Add({
|
||||
|
@ -10,205 +8,106 @@ sound.Add({
|
|||
pitch = 100,
|
||||
level = 40,
|
||||
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 = {"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,
|
||||
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 = {"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,
|
||||
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 = {"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.Impact",
|
||||
volume = 0.75,
|
||||
pitch = 100,
|
||||
level = 40,
|
||||
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 = {"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.Breath.SoftShortIn",
|
||||
volume = 0.75,
|
||||
pitch = 100,
|
||||
level = 35,
|
||||
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"
|
||||
}
|
||||
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"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Faith.Breath.SoftShortOut",
|
||||
volume = 0.75,
|
||||
pitch = 100,
|
||||
level = 35,
|
||||
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"
|
||||
}
|
||||
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"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Faith.Breath.SoftLongIn",
|
||||
volume = 0.75,
|
||||
pitch = 100,
|
||||
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"
|
||||
}
|
||||
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"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Faith.Breath.SoftLongOut",
|
||||
volume = 0.75,
|
||||
pitch = 100,
|
||||
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"
|
||||
}
|
||||
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"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Faith.Breath.MediumShortIn",
|
||||
volume = 0.75,
|
||||
pitch = 100,
|
||||
level = 35,
|
||||
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"
|
||||
}
|
||||
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"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Faith.Breath.MediumShortOut",
|
||||
volume = 0.75,
|
||||
pitch = 100,
|
||||
level = 35,
|
||||
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"
|
||||
}
|
||||
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"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Faith.Breath.MediumLongIn",
|
||||
volume = 0.75,
|
||||
pitch = 100,
|
||||
level = 35,
|
||||
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"
|
||||
}
|
||||
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"}
|
||||
})
|
||||
|
||||
sound.Add({
|
||||
name = "Faith.Breath.MediumLongOut",
|
||||
volume = 0.75,
|
||||
pitch = 100,
|
||||
level = 35,
|
||||
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"
|
||||
}
|
||||
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"}
|
||||
})
|
||||
|
||||
function meta:FaithVO(vo)
|
||||
|
@ -221,4 +120,4 @@ function meta:FaithVO(vo)
|
|||
|
||||
self:EmitSound(vo)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,2 +1,2 @@
|
|||
sound.Add = soundAdd_old
|
||||
soundAdd_old = nil
|
||||
soundAdd_old = nil
|
|
@ -4,8 +4,10 @@ local function SwingpipeCheck(ply, mv, cmd)
|
|||
mins.x = mins.x * 2
|
||||
maxs.y = maxs.y * 2
|
||||
mins.y = mins.y * 2
|
||||
|
||||
local tr = ply.Monkey_tr
|
||||
local trout = ply.Monkey_trout
|
||||
|
||||
tr.start = mv:GetOrigin()
|
||||
tr.endpos = tr.start
|
||||
tr.maxs = maxs
|
||||
|
@ -19,7 +21,7 @@ local function SwingpipeCheck(ply, mv, cmd)
|
|||
|
||||
if IsValid(trout.Entity) and trout.Entity:GetClass() == "br_swingpipe" and (ply:GetSwingbarLast() ~= trout.Entity or ply:GetSBDelay() < CurTime()) then
|
||||
local swingpipe = trout.Entity
|
||||
local dot = cmd:GetViewAngles():Forward():Dot(swingpipe:GetAngles():Forward())
|
||||
-- local dot = cmd:GetViewAngles():Forward():Dot(swingpipe:GetAngles():Forward())
|
||||
|
||||
if CLIENT then
|
||||
swingpipe:SetPredictable(true)
|
||||
|
@ -27,8 +29,10 @@ local function SwingpipeCheck(ply, mv, cmd)
|
|||
|
||||
local pos = swingpipe:GetPos()
|
||||
pos.z = mv:GetOrigin().z
|
||||
|
||||
local entvector = pos - ply:GetShootPos()
|
||||
entvector.z = pos.z
|
||||
|
||||
local entdot = entvector:Dot(mv:GetAngles():Right())
|
||||
local dir = entdot < 0
|
||||
local trwall = util.QuickTrace(mv:GetOrigin(), mv:GetAngles():Right() * 100 * (dir and -1 or 1), ply)
|
||||
|
@ -40,7 +44,6 @@ local function SwingpipeCheck(ply, mv, cmd)
|
|||
end
|
||||
|
||||
ply.SwingHullCheck = false
|
||||
|
||||
ply:SetSwingpipe(swingpipe)
|
||||
ply:SetWallrunTime(0)
|
||||
ply:SetSBDir(dir)
|
||||
|
@ -57,8 +60,8 @@ local function SwingpipeCheck(ply, mv, cmd)
|
|||
end
|
||||
end
|
||||
|
||||
-- local red = Color(255, 0, 0, 200)
|
||||
local radius = 40
|
||||
local red = Color(255, 0, 0, 200)
|
||||
local circlepos = Vector()
|
||||
local axis = Vector(0, 1, 0)
|
||||
|
||||
|
@ -88,7 +91,6 @@ local function SwingpipeThink(ply, mv, cmd)
|
|||
ang:RotateAroundAxis(axis, 90)
|
||||
|
||||
local angle = math.NormalizeAngle(ply:GetSBOffset() - ply.swingbarang) * math.pi * 2 / 360
|
||||
|
||||
circlepos:SetUnpacked(0, math.cos(angle) * radius * -1, -math.sin(angle) * radius)
|
||||
circlepos:Rotate(ang)
|
||||
|
||||
|
@ -110,10 +112,7 @@ local function SwingpipeThink(ply, mv, cmd)
|
|||
if util.TraceHull({
|
||||
start = spendpos,
|
||||
endpos = spendpos,
|
||||
filter = {
|
||||
ply:GetSwingpipe(),
|
||||
ply
|
||||
},
|
||||
filter = {ply:GetSwingpipe(), ply},
|
||||
mins = minhull,
|
||||
maxs = maxhull
|
||||
}).Hit then
|
||||
|
@ -149,9 +148,11 @@ local function SwingpipeThink(ply, mv, cmd)
|
|||
|
||||
if ply:GetSBDir() then
|
||||
ply:SetSBOffset(math.max(ply:GetSBOffset() - 250 * FrameTime() * math.min(startlerp + 0.5 - math.min(math.max(math.abs(ply:GetSBOffset()) - 65, 0) / 30, 0.6), 1.15), -90))
|
||||
|
||||
origin:Add(mv:GetAngles():Right() * 17 * startlerp)
|
||||
else
|
||||
ply:SetSBOffset(math.min(ply:GetSBOffset() + 250 * FrameTime() * math.min(startlerp + 0.5 - math.min(math.max(math.abs(ply:GetSBOffset()) - 65, 0) / 30, 0.6), 1.15), 90))
|
||||
|
||||
origin:Sub(mv:GetAngles():Right() * 17 * startlerp)
|
||||
end
|
||||
|
||||
|
@ -176,7 +177,9 @@ local function SwingpipeThink(ply, mv, cmd)
|
|||
ply:SetSwingbarLast(ply:GetSwingpipe())
|
||||
ply:SetSwingpipe(nil)
|
||||
ply:SetSBDelay(CurTime() + 0.5)
|
||||
|
||||
mv:SetVelocity(cmd:GetViewAngles():Forward() * 260 + Vector(0, 0, 150))
|
||||
|
||||
ParkourEvent("jumpfar", ply)
|
||||
end
|
||||
end
|
||||
|
@ -197,4 +200,4 @@ local function Swingpipe(ply, mv, cmd)
|
|||
end
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "Swingpipe", Swingpipe)
|
||||
hook.Add("SetupMove", "Swingpipe", Swingpipe)
|
|
@ -1,6 +1,4 @@
|
|||
if not game.SinglePlayer() then
|
||||
return
|
||||
end
|
||||
if not game.SinglePlayer() then return end
|
||||
|
||||
local slow = false
|
||||
local slowlerp = 1
|
||||
|
@ -9,7 +7,8 @@ local slowspeed = 2
|
|||
|
||||
if SERVER then
|
||||
util.AddNetworkString("SlowSounds")
|
||||
hook.Add("Think", "TimeSlow", function ()
|
||||
|
||||
hook.Add("Think", "TimeSlow", function()
|
||||
if slow and slowlerp ~= slowtarget then
|
||||
slowlerp = math.Approach(slowlerp, slowtarget, slowspeed * FrameTime())
|
||||
|
||||
|
@ -36,7 +35,7 @@ local function TimeSlowSounds(t)
|
|||
end
|
||||
end
|
||||
|
||||
net.Receive("SlowSounds", function ()
|
||||
net.Receive("SlowSounds", function()
|
||||
local slowed = net.ReadBool()
|
||||
|
||||
if slowed then
|
||||
|
@ -45,11 +44,12 @@ net.Receive("SlowSounds", function ()
|
|||
hook.Remove("EntityEmitSound", "TimeSlow")
|
||||
end
|
||||
end)
|
||||
concommand.Add("ToggleTimeSlow", function (ply)
|
||||
|
||||
concommand.Add("ToggleTimeSlow", function(ply)
|
||||
slow = not slow
|
||||
|
||||
net.Start("SlowSounds")
|
||||
net.WriteBool(slow)
|
||||
net.WriteBool(slow)
|
||||
net.Send(ply)
|
||||
|
||||
if slow then
|
||||
|
@ -57,4 +57,4 @@ concommand.Add("ToggleTimeSlow", function (ply)
|
|||
else
|
||||
hook.Remove("EntityEmitSound", "TimeSlow")
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -73,6 +73,7 @@ end
|
|||
|
||||
local function Vault1(ply, mv, ang, t, h)
|
||||
local mins, maxs = ply:GetHull()
|
||||
|
||||
t.start = mv:GetOrigin() + eyevec + ang:Forward() * 25
|
||||
t.endpos = t.start - neckvec
|
||||
t.filter = ply
|
||||
|
@ -81,17 +82,9 @@ local function Vault1(ply, mv, ang, t, h)
|
|||
|
||||
t = util.TraceLine(t)
|
||||
|
||||
if t.Entity and t.Entity.NoPlayerCollisions then
|
||||
return false
|
||||
end
|
||||
|
||||
if t.Entity and t.Entity.IsNPC and t.Entity:IsPlayer() then
|
||||
return false
|
||||
end
|
||||
|
||||
if IsValid(t.Entity) and t.Entity:GetClass() == "br_swingbar" then
|
||||
return false
|
||||
end
|
||||
if t.Entity and t.Entity.NoPlayerCollisions then return false end
|
||||
if t.Entity and t.Entity.IsNPC and t.Entity:IsPlayer() then return false end
|
||||
if IsValid(t.Entity) and t.Entity:GetClass() == "br_swingbar" then return false end
|
||||
|
||||
if t.Hit and t.Fraction > 0.3 then
|
||||
local stepup = t.Fraction > 0.65
|
||||
|
@ -105,17 +98,12 @@ local function Vault1(ply, mv, ang, t, h)
|
|||
|
||||
tsafetyout = util.TraceLine(tsafety)
|
||||
|
||||
if tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if tsafetyout.Hit then return false end
|
||||
|
||||
TraceSetData(tsafety, t.HitPos, t.HitPos, mins, maxs, ply)
|
||||
|
||||
tsafetyout = util.TraceHull(tsafety)
|
||||
|
||||
if tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if tsafetyout.Hit then return false end
|
||||
|
||||
TraceParkourMask(h)
|
||||
TraceSetData(h, vaultend, vaultend, mins, maxs, ply)
|
||||
|
@ -144,29 +132,25 @@ local function Vault1(ply, mv, ang, t, h)
|
|||
TraceSetData(t, start, vaultendcheck, ply)
|
||||
|
||||
t = util.TraceLine(t)
|
||||
|
||||
if t.Hit then
|
||||
return
|
||||
end
|
||||
if t.Hit then return end
|
||||
|
||||
ply:SetMantleStartPos(mv:GetOrigin())
|
||||
ply:SetMantleEndPos(vaultend)
|
||||
ply:SetMantleLerp(0)
|
||||
ply:SetMantle(1)
|
||||
ply:SetWallrunTime(0)
|
||||
PlayVaultAnim(ply)
|
||||
ply:ViewPunch(vpunch1)
|
||||
|
||||
PlayVaultAnim(ply)
|
||||
|
||||
ply:ViewPunch(vpunch1)
|
||||
ply.MantleInitVel = mv:GetVelocity()
|
||||
ply.MantleMatType = mat
|
||||
|
||||
if stepup then
|
||||
ParkourEvent("stepup", ply)
|
||||
|
||||
ply.VaultStepUp = true
|
||||
else
|
||||
ParkourEvent("vaultonto", ply)
|
||||
|
||||
ply.VaultStepUp = false
|
||||
end
|
||||
|
||||
|
@ -199,25 +183,19 @@ local function Vault2(ply, mv, ang, t, h)
|
|||
|
||||
local mins, maxs = ply:GetHull()
|
||||
maxs.z = maxs.z * 0.5
|
||||
|
||||
local start = mv:GetOrigin() + chestvec + ang:Forward() * 35
|
||||
|
||||
TraceSetData(t, start, start, mins, maxs, ply)
|
||||
TraceParkourMask(t)
|
||||
|
||||
local vaultpos = t.endpos + ang:Forward() * 35
|
||||
|
||||
t = util.TraceHull(t)
|
||||
|
||||
if t.Entity and t.Entity.NoPlayerCollisions then
|
||||
return false
|
||||
end
|
||||
|
||||
if t.Entity and t.Entity.IsNPC and t.Entity:IsPlayer() then
|
||||
return false
|
||||
end
|
||||
|
||||
if IsValid(t.Entity) and t.Entity:GetClass() == "br_swingbar" then
|
||||
return false
|
||||
end
|
||||
if t.Entity and t.Entity.NoPlayerCollisions then return false end
|
||||
if t.Entity and t.Entity.IsNPC and t.Entity:IsPlayer() then return false end
|
||||
if IsValid(t.Entity) and t.Entity:GetClass() == "br_swingbar" then return false end
|
||||
|
||||
if t.Hit then
|
||||
local tsafety = {}
|
||||
|
@ -225,32 +203,27 @@ local function Vault2(ply, mv, ang, t, h)
|
|||
local start = nil
|
||||
|
||||
TraceParkourMask(tsafety)
|
||||
|
||||
tsafety.output = tsafetyout
|
||||
start = mv:GetOrigin() + eyevec
|
||||
|
||||
TraceSetData(tsafety, start, start + ang:Forward() * 100, mins, maxs, ply)
|
||||
|
||||
util.TraceLine(tsafety)
|
||||
|
||||
if tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
|
||||
if tsafetyout.Hit then return false end
|
||||
start = start + ang:Forward() * 100
|
||||
|
||||
TraceSetData(tsafety, start, start - thoraxvec)
|
||||
|
||||
util.TraceLine(tsafety)
|
||||
|
||||
if tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if tsafetyout.Hit then return false end
|
||||
|
||||
start = t.StartPos + chestvec
|
||||
|
||||
TraceSetData(h, start, start, mins, maxs, ply)
|
||||
|
||||
TraceParkourMask(h)
|
||||
|
||||
local hulltr = util.TraceHull(h)
|
||||
|
||||
mins, maxs = ply:GetHull()
|
||||
|
||||
TraceSetData(h, vaultpos, vaultpos, mins, maxs, ply)
|
||||
|
@ -264,9 +237,10 @@ local function Vault2(ply, mv, ang, t, h)
|
|||
|
||||
ply:SetMantleData(mv:GetOrigin(), vaultpos, 0, 2)
|
||||
ply:SetWallrunTime(0)
|
||||
PlayVaultAnim(ply, 1)
|
||||
ply:ViewPunch(vpunch2)
|
||||
|
||||
PlayVaultAnim(ply, 1)
|
||||
|
||||
ply:ViewPunch(vpunch2)
|
||||
ply.MantleInitVel = mv:GetVelocity()
|
||||
ply.MantleInitVel.z = 0
|
||||
ply.MantleMatType = t.MatType
|
||||
|
@ -274,10 +248,11 @@ local function Vault2(ply, mv, ang, t, h)
|
|||
ParkourEvent("vault", ply)
|
||||
|
||||
if game.SinglePlayer() or CLIENT and IsFirstTimePredicted() then
|
||||
timer.Simple(0.1, function ()
|
||||
timer.Simple(0.1, function()
|
||||
ply:EmitSound("Cloth.VaultSwish")
|
||||
ply:FaithVO("Faith.StrainSoft")
|
||||
end)
|
||||
|
||||
ply:EmitSound("Handsteps.ConcreteHard")
|
||||
end
|
||||
|
||||
|
@ -291,28 +266,22 @@ end
|
|||
local function Vault3(ply, mv, ang, t, h)
|
||||
local mins, maxs = ply:GetHull()
|
||||
maxs.z = maxs.z * 0.5
|
||||
|
||||
t.start = mv:GetOrigin() + chestvec + ang:Forward() * 35
|
||||
t.endpos = t.start
|
||||
t.filter = ply
|
||||
|
||||
TraceParkourMask(t)
|
||||
|
||||
t.maxs = maxs
|
||||
t.mins = mins
|
||||
|
||||
local vaultpos = t.endpos + ang:Forward() * 60
|
||||
|
||||
t = util.TraceHull(t)
|
||||
|
||||
if t.Entity and t.Entity.NoPlayerCollisions then
|
||||
return false
|
||||
end
|
||||
|
||||
if t.Entity and t.Entity.IsNPC and (t.Entity:IsNPC() or t.Entity:IsPlayer()) then
|
||||
return false
|
||||
end
|
||||
|
||||
if IsValid(t.Entity) and t.Entity:GetClass() == "br_swingbar" then
|
||||
return false
|
||||
end
|
||||
if t.Entity and t.Entity.NoPlayerCollisions then return false end
|
||||
if t.Entity and t.Entity.IsNPC and (t.Entity:IsNPC() or t.Entity:IsPlayer()) then return false end
|
||||
if IsValid(t.Entity) and t.Entity:GetClass() == "br_swingbar" then return false end
|
||||
|
||||
if t.Hit then
|
||||
local tsafety = {}
|
||||
|
@ -320,34 +289,27 @@ local function Vault3(ply, mv, ang, t, h)
|
|||
local start = nil
|
||||
|
||||
TraceParkourMask(tsafety)
|
||||
|
||||
tsafety.output = tsafetyout
|
||||
start = mv:GetOrigin() + eyevec
|
||||
|
||||
TraceSetData(tsafety, start, start + ang:Forward() * 150, ply)
|
||||
|
||||
util.TraceLine(tsafety)
|
||||
|
||||
if tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if tsafetyout.Hit then return false end
|
||||
|
||||
start = mv:GetOrigin() + eyevec + ang:Forward() * 150
|
||||
|
||||
TraceSetData(tsafety, start, start - thoraxvec)
|
||||
|
||||
util.TraceLine(tsafety)
|
||||
|
||||
if tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if tsafetyout.Hit then return false end
|
||||
|
||||
start = mv:GetOrigin() + eyevec + ang:Forward() * 150
|
||||
|
||||
TraceSetData(tsafety, start, start - aircheck)
|
||||
|
||||
util.TraceLine(tsafety)
|
||||
|
||||
if not tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if not tsafetyout.Hit then return false end
|
||||
|
||||
mins.z = mins.z * 1
|
||||
h.start = t.StartPos + chestvec
|
||||
|
@ -357,14 +319,15 @@ local function Vault3(ply, mv, ang, t, h)
|
|||
h.mins = mins
|
||||
|
||||
TraceParkourMask(h)
|
||||
|
||||
local hulltr = util.TraceHull(h)
|
||||
local mins, maxs = ply:GetHull()
|
||||
|
||||
h.start = vaultpos
|
||||
h.endpos = h.start
|
||||
h.filter = ply
|
||||
h.maxs = maxs
|
||||
h.mins = mins
|
||||
|
||||
local hulltr2 = util.TraceHull(h)
|
||||
|
||||
if not hulltr.Hit and not hulltr2.Hit then
|
||||
|
@ -374,9 +337,10 @@ local function Vault3(ply, mv, ang, t, h)
|
|||
|
||||
ply:SetMantleData(mv:GetOrigin(), vaultpos, 0, 3)
|
||||
ply:SetWallrunTime(0)
|
||||
PlayVaultAnim(ply, 2)
|
||||
ply:ViewPunch(vpunch3)
|
||||
|
||||
PlayVaultAnim(ply, 2)
|
||||
|
||||
ply:ViewPunch(vpunch3)
|
||||
ply.MantleInitVel = mv:GetVelocity()
|
||||
ply.MantleInitVel.z = 0
|
||||
ply.MantleMatType = t.MatType
|
||||
|
@ -384,10 +348,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 ()
|
||||
timer.Simple(0.1, function()
|
||||
ply:EmitSound("Cloth.VaultSwish")
|
||||
ply:FaithVO("Faith.StrainSoft")
|
||||
end)
|
||||
|
||||
ply:EmitSound("Handsteps.ConcreteHard")
|
||||
end
|
||||
|
||||
|
@ -400,36 +365,36 @@ end
|
|||
|
||||
function Vault4(ply, mv, ang, t, h)
|
||||
local mins, maxs = ply:GetHull()
|
||||
|
||||
t.StartPos = mv:GetOrigin() + eyevec + ang:Forward() * 50
|
||||
|
||||
local vaultpos = mv:GetOrigin() + ang:Forward() * 65 + vault1vec
|
||||
|
||||
local tsafety = {
|
||||
start = mv:GetOrigin() + hairvec
|
||||
}
|
||||
|
||||
tsafety.endpos = tsafety.start + ang:Forward() * 75
|
||||
tsafety.filter = ply
|
||||
tsafety.mask = MASK_PLAYERSOLID
|
||||
tsafety.collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT
|
||||
|
||||
local tsafetyout = util.TraceLine(tsafety)
|
||||
|
||||
if tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if tsafetyout.Hit then return false end
|
||||
|
||||
tsafety.start = mv:GetOrigin() + aircheck + ang:Forward() * 40
|
||||
tsafety.endpos = tsafety.start - hairvec
|
||||
|
||||
local tsafetyout = util.TraceLine(tsafety)
|
||||
|
||||
if tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
|
||||
if tsafetyout.Hit then return false end
|
||||
tsafety.start = mv:GetOrigin() + chestvec
|
||||
tsafety.endpos = tsafety.start + ang:Forward() * 150
|
||||
|
||||
local tsafetyout = util.TraceLine(tsafety)
|
||||
|
||||
if not tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if not tsafetyout.Hit then return false end
|
||||
|
||||
mins.z = mins.z * 1
|
||||
h.start = vaultpos
|
||||
|
@ -439,19 +404,19 @@ function Vault4(ply, mv, ang, t, h)
|
|||
h.collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT
|
||||
h.maxs = maxs
|
||||
h.mins = mins
|
||||
|
||||
local hsafetyout = util.TraceHull(h)
|
||||
|
||||
if hsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if hsafetyout.Hit then return false end
|
||||
|
||||
local startpos = ply:GetWallrun() ~= 1 and mv:GetOrigin() or mv:GetOrigin() + Vector(0, 0, 20) - ang:Forward() * 5
|
||||
|
||||
ply:SetMantleData(startpos, vaultpos, 0, 4)
|
||||
ply:SetWallrunTime(0)
|
||||
PlayVaultAnim(ply, 1)
|
||||
ply:ViewPunch(Angle(2.5, 0, 0))
|
||||
|
||||
PlayVaultAnim(ply, 1)
|
||||
|
||||
ply:ViewPunch(Angle(2.5, 0, 0))
|
||||
ply.MantleInitVel = mv:GetVelocity()
|
||||
ply.MantleInitVel.z = 0
|
||||
ply.MantleMatType = t.MatType
|
||||
|
@ -465,21 +430,24 @@ function Vault4(ply, mv, ang, t, h)
|
|||
end
|
||||
|
||||
if game.SinglePlayer() or CLIENT and IsFirstTimePredicted() then
|
||||
timer.Simple(0.1, function ()
|
||||
timer.Simple(0.1, function()
|
||||
ply:EmitSound("Cloth.VaultSwish")
|
||||
ply:FaithVO("Faith.StrainSoft")
|
||||
end)
|
||||
|
||||
ply:EmitSound("Handsteps.ConcreteHard")
|
||||
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)
|
||||
|
||||
if tsafetyout.MatType == MAT_GRATE then
|
||||
ply:EmitSound("FenceClimb")
|
||||
timer.Simple(0.45, function ()
|
||||
|
||||
timer.Simple(0.45, function()
|
||||
ply:EmitSound("FenceClimbEnd")
|
||||
end)
|
||||
end
|
||||
|
@ -489,16 +457,12 @@ function Vault4(ply, mv, ang, t, h)
|
|||
end
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
t.start = mv:GetOrigin() + eyevec + ang:Forward() * 70
|
||||
t.endpos = t.start - neckvec
|
||||
t.filter = ply
|
||||
|
@ -506,15 +470,11 @@ function Vault5(ply, mv, ang, t, h)
|
|||
t.collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT
|
||||
t = util.TraceLine(t)
|
||||
|
||||
if not t.Hit then
|
||||
return false
|
||||
end
|
||||
|
||||
if t.Entity and t.Entity.NoPlayerCollisions then
|
||||
return false
|
||||
end
|
||||
if not t.Hit then return false end
|
||||
if t.Entity and t.Entity.NoPlayerCollisions then return false end
|
||||
|
||||
local vaultend = t.HitPos + mantlevec
|
||||
|
||||
local tsafety = {
|
||||
start = t.StartPos - ang:Forward() * 70,
|
||||
endpos = t.StartPos,
|
||||
|
@ -522,19 +482,17 @@ function Vault5(ply, mv, ang, t, h)
|
|||
mask = MASK_PLAYERSOLID,
|
||||
collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT
|
||||
}
|
||||
|
||||
tsafety = util.TraceLine(tsafety)
|
||||
|
||||
if tsafety.Hit then
|
||||
return false
|
||||
end
|
||||
if tsafety.Hit then return false end
|
||||
|
||||
tsafety.start = mv:GetOrigin() + hairvec
|
||||
tsafety.endpos = tsafety.start + ang:Forward() * 60
|
||||
|
||||
local tsafetyout = util.TraceLine(tsafety)
|
||||
|
||||
if tsafetyout.Hit then
|
||||
return false
|
||||
end
|
||||
if tsafetyout.Hit then return false end
|
||||
|
||||
h.start = vaultend
|
||||
h.endpos = h.start
|
||||
|
@ -542,6 +500,7 @@ function Vault5(ply, mv, ang, t, h)
|
|||
h.mask = MASK_PLAYERSOLID
|
||||
h.collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT
|
||||
h.mins, h.maxs = ply:GetHull()
|
||||
|
||||
local hulltr = util.TraceHull(h)
|
||||
|
||||
if not hulltr.Hit then
|
||||
|
@ -554,9 +513,10 @@ function Vault5(ply, mv, ang, t, h)
|
|||
ply:SetMantleLerp(0)
|
||||
ply:SetMantle(5)
|
||||
ply:SetWallrunTime(0)
|
||||
PlayVaultAnim(ply, false, ang)
|
||||
ply:ViewPunch(vpunch1)
|
||||
|
||||
PlayVaultAnim(ply, false, ang)
|
||||
|
||||
ply:ViewPunch(vpunch1)
|
||||
ply.MantleInitVel = mv:GetVelocity()
|
||||
ply.MantleMatType = t.MatType
|
||||
|
||||
|
@ -572,10 +532,8 @@ function Vault5(ply, mv, ang, t, h)
|
|||
return false
|
||||
end
|
||||
|
||||
hook.Add("SetupMove", "BeatrunVaulting", function (ply, mv, cmd)
|
||||
if ply.MantleDisabled or IsValid(ply:GetSwingbar()) or ply:GetClimbing() ~= 0 or ply:GetMelee() ~= 0 then
|
||||
return
|
||||
end
|
||||
hook.Add("SetupMove", "BeatrunVaulting", function(ply, mv, cmd)
|
||||
if ply.MantleDisabled or IsValid(ply:GetSwingbar()) or ply:GetClimbing() ~= 0 or ply:GetMelee() ~= 0 then return end
|
||||
|
||||
if not ply:Alive() then
|
||||
if ply:GetMantle() ~= 0 then
|
||||
|
@ -588,13 +546,12 @@ hook.Add("SetupMove", "BeatrunVaulting", function (ply, mv, cmd)
|
|||
if ply:GetMantle() == 0 then
|
||||
local mvtype = ply:GetMoveType()
|
||||
|
||||
if ply:OnGround() or mv:GetVelocity().z < -350 or mvtype == MOVETYPE_NOCLIP or mvtype == MOVETYPE_LADDER then
|
||||
return
|
||||
end
|
||||
if ply:OnGround() or mv:GetVelocity().z < -350 or mvtype == MOVETYPE_NOCLIP or mvtype == MOVETYPE_LADDER then return end
|
||||
end
|
||||
|
||||
ply.mantletr = ply.mantletr or {}
|
||||
ply.mantlehull = ply.mantlehull or {}
|
||||
|
||||
local t = ply.mantletr
|
||||
local h = ply.mantlehull
|
||||
|
||||
|
@ -618,8 +575,11 @@ hook.Add("SetupMove", "BeatrunVaulting", function (ply, mv, cmd)
|
|||
mv:SetSideSpeed(0)
|
||||
mv:SetUpSpeed(0)
|
||||
mv:SetForwardSpeed(0)
|
||||
|
||||
cmd:ClearMovement()
|
||||
|
||||
mv:SetVelocity(vector_origin)
|
||||
|
||||
ply:SetMoveType(MOVETYPE_NOCLIP)
|
||||
|
||||
local mantletype = ply:GetMantle()
|
||||
|
@ -653,6 +613,7 @@ hook.Add("SetupMove", "BeatrunVaulting", function (ply, mv, cmd)
|
|||
if mlerp < 0.25 then
|
||||
if mlerp > 0.1 then
|
||||
local mult = math.max(0.5, 0.5 + ply.MantleInitVel:Length() / 375 * 0.3 - 0.2)
|
||||
|
||||
mlerprate = mlerprate * mult
|
||||
end
|
||||
|
||||
|
@ -686,6 +647,7 @@ hook.Add("SetupMove", "BeatrunVaulting", function (ply, mv, cmd)
|
|||
end
|
||||
|
||||
local mult = math.max(0.75, 0.75 + ply.MantleInitVel:Length() / 350 * 0.3 - 0.2)
|
||||
|
||||
mlerprate = mlerprate * mult
|
||||
|
||||
ply:SetMantleLerp(math.Approach(mlerp, 1, mlerprate))
|
||||
|
@ -740,11 +702,13 @@ hook.Add("SetupMove", "BeatrunVaulting", function (ply, mv, cmd)
|
|||
end
|
||||
|
||||
mlerp = ply:GetMantleLerp()
|
||||
|
||||
h.start = mvec
|
||||
h.endpos = h.start
|
||||
h.filter = ply
|
||||
h.mask = MASK_PLAYERSOLID
|
||||
h.mins, h.maxs = ply:GetHull()
|
||||
|
||||
local hulltr = util.TraceHull(h)
|
||||
|
||||
if mlerpend <= mlerp or not hulltr.Hit and (mantletype == 1 and mlerp > 0.4 or mantletype == 2 and mlerp > 0.5 or mantletype == 5 and mlerp > 0.75) then
|
||||
|
@ -793,9 +757,7 @@ hook.Add("SetupMove", "BeatrunVaulting", function (ply, mv, cmd)
|
|||
end
|
||||
|
||||
local springboardvel = ang:Forward() * math.Clamp((ply.MantleInitVel or vector_origin):Length() * 0.75, 200, 300) + Vector(0, 0, 350)
|
||||
|
||||
springboardvel:Mul(ply:GetOverdriveMult())
|
||||
|
||||
springboardvel[3] = springboardvel[3] / ply:GetOverdriveMult()
|
||||
|
||||
mv:SetVelocity(springboardvel)
|
||||
|
@ -810,4 +772,4 @@ hook.Add("SetupMove", "BeatrunVaulting", function (ply, mv, cmd)
|
|||
mv:SetButtons(0)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -2,10 +2,8 @@ local vwrtime = 1.5
|
|||
local hwrtime = 1.5
|
||||
tiltdir = 1
|
||||
local tilt = 0
|
||||
PuristWallrun = CreateConVar("Beatrun_PuristWallrun", 1, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
}, "'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()
|
||||
|
@ -17,7 +15,9 @@ function WallrunningTilt(ply, pos, ang, fov)
|
|||
end
|
||||
|
||||
ang.z = ang.z + tilt
|
||||
|
||||
local tiltspeed = wr >= 2 and math.max(math.abs(tilt / 15 * tiltdir - 1) * 1.75, 0.1) or 1
|
||||
|
||||
tilt = math.Approach(tilt, wr >= 2 and 15 * tiltdir or 0, RealFrameTime() * (wr >= 2 and 30 or 70) * tiltspeed)
|
||||
end
|
||||
|
||||
|
@ -27,28 +27,30 @@ if SERVER then
|
|||
end
|
||||
|
||||
if CLIENT and game.SinglePlayer() then
|
||||
net.Receive("BodyAnimWallrun", function ()
|
||||
net.Receive("BodyAnimWallrun", function()
|
||||
local a = net.ReadBool()
|
||||
|
||||
if a then
|
||||
local ply = LocalPlayer()
|
||||
local eyeang = ply:EyeAngles()
|
||||
|
||||
eyeang.x = 0
|
||||
|
||||
ply.WallrunOrigAng = net.ReadAngle()
|
||||
|
||||
BodyLimitX = 25
|
||||
BodyLimitY = 70
|
||||
BodyAnimCycle = 0
|
||||
|
||||
BodyAnim:SetSequence("wallrunverticalstart")
|
||||
else
|
||||
BodyLimitX = 90
|
||||
BodyLimitY = 180
|
||||
BodyAnimCycle = 0
|
||||
|
||||
BodyAnim:SetSequence("jumpair")
|
||||
end
|
||||
end)
|
||||
net.Receive("WallrunTilt", function ()
|
||||
|
||||
net.Receive("WallrunTilt", function()
|
||||
if net.ReadBool() then
|
||||
tiltdir = -1
|
||||
else
|
||||
|
@ -72,6 +74,7 @@ local function WallrunningThink(ply, mv, cmd)
|
|||
if mv:KeyPressed(IN_DUCK) then
|
||||
ply:SetCrouchJumpBlocked(true)
|
||||
ply:SetWallrunTime(0)
|
||||
|
||||
mv:SetButtons(mv:GetButtons() - IN_DUCK)
|
||||
end
|
||||
|
||||
|
@ -86,6 +89,7 @@ local function WallrunningThink(ply, mv, cmd)
|
|||
if wr == 4 then
|
||||
local ang = cmd:GetViewAngles()
|
||||
ang.x = 0
|
||||
|
||||
local vel = ang:Forward() * 30
|
||||
vel.z = 25
|
||||
|
||||
|
@ -96,6 +100,7 @@ local function WallrunningThink(ply, mv, cmd)
|
|||
if ply:GetWallrunTime() < CurTime() or mv:GetVelocity():Length() < 10 then
|
||||
ply:SetWallrun(0)
|
||||
ply:SetQuickturn(false)
|
||||
|
||||
mv:SetVelocity(vel * 4)
|
||||
|
||||
local activewep = ply:GetActiveWeapon()
|
||||
|
@ -114,12 +119,13 @@ local function WallrunningThink(ply, mv, cmd)
|
|||
|
||||
if mv:KeyPressed(IN_JUMP) then
|
||||
ParkourEvent("jumpwallrun", ply)
|
||||
|
||||
ply:SetSafetyRollKeyTime(CurTime() + 0.001)
|
||||
|
||||
vel.z = 30
|
||||
|
||||
vel:Mul(ply:GetOverdriveMult())
|
||||
|
||||
mv:SetVelocity(vel * 8)
|
||||
|
||||
ply:SetWallrun(0)
|
||||
ply:SetQuickturn(false)
|
||||
|
||||
|
@ -142,17 +148,18 @@ local function WallrunningThink(ply, mv, cmd)
|
|||
local velz = math.Clamp((ply:GetWallrunTime() - CurTime()) / vwrtime, 0.1, 1)
|
||||
local vecvel = Vector()
|
||||
vecvel.z = 200 * velz
|
||||
|
||||
vecvel:Add(ply:GetWallrunDir():Angle():Forward() * -50)
|
||||
vecvel:Mul(ply:GetOverdriveMult())
|
||||
|
||||
mv:SetVelocity(vecvel)
|
||||
mv:SetForwardSpeed(0)
|
||||
mv:SetSideSpeed(0)
|
||||
|
||||
mv:SetSideSpeed(0)
|
||||
local tr = ply.WallrunTrace
|
||||
local trout = ply.WallrunTraceOut
|
||||
local eyeang = ply.WallrunOrigAng or Angle()
|
||||
eyeang.x = 0
|
||||
|
||||
tr.start = ply:EyePos() - Vector(0, 0, 5)
|
||||
tr.endpos = tr.start + eyeang:Forward() * 40
|
||||
tr.filter = ply
|
||||
|
@ -281,6 +288,7 @@ local function WallrunningThink(ply, mv, cmd)
|
|||
ply:SetQuickturn(false)
|
||||
ply:SetWallrunTime(0)
|
||||
ply:SetSafetyRollKeyTime(CurTime() + 0.001)
|
||||
|
||||
mv:SetVelocity(eyeang:Forward() * math.max(150, vecvel:Length() - 50) + Vector(0, 0, 250))
|
||||
|
||||
local event = ply:GetWallrun() == 3 and "jumpwallrunright" or "jumpwallrunleft"
|
||||
|
@ -305,7 +313,8 @@ local function WallrunningThink(ply, mv, cmd)
|
|||
|
||||
if SERVER then
|
||||
ply:EmitSound("Wallrun.Concrete")
|
||||
timer.Simple(0.025, function ()
|
||||
|
||||
timer.Simple(0.025, function()
|
||||
ply:EmitSound("WallrunRelease.Concrete")
|
||||
end)
|
||||
end
|
||||
|
@ -327,7 +336,7 @@ local function WallrunningThink(ply, mv, cmd)
|
|||
BodyAnim:SetSequence("jumpair")
|
||||
elseif game.SinglePlayer() and wr == 1 then
|
||||
net.Start("BodyAnimWallrun")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -337,7 +346,7 @@ local function WallrunningThink(ply, mv, cmd)
|
|||
end
|
||||
end
|
||||
|
||||
local upcheck = Vector(0, 0, 75)
|
||||
-- local upcheck = Vector(0, 0, 75)
|
||||
|
||||
local function WallrunningCheck(ply, mv, cmd)
|
||||
if not ply.WallrunTrace then
|
||||
|
@ -347,18 +356,15 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
|
||||
local eyeang = ply:EyeAngles()
|
||||
eyeang.x = 0
|
||||
|
||||
local vel = mv:GetVelocity()
|
||||
vel.z = 0
|
||||
|
||||
local timemult = math.max(1 - math.max(ply:GetWallrunCount() - 1, 0) * 0.2, 0.5)
|
||||
local speedmult = math.max(0.9, math.min(vel:Length(), 260) / 250)
|
||||
|
||||
if ply:GetGrappling() then
|
||||
return
|
||||
end
|
||||
|
||||
if ply:GetJumpTurn() then
|
||||
return
|
||||
end
|
||||
if ply:GetGrappling() then return end
|
||||
if ply:GetJumpTurn() then return end
|
||||
|
||||
if PuristWallrun:GetBool() then
|
||||
PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
||||
|
@ -369,6 +375,7 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
if not ply:OnGround() and mv:KeyDown(IN_JUMP) and mv:GetVelocity().z > -200 then
|
||||
local tr = ply.WallrunTrace
|
||||
local trout = ply.WallrunTraceOut
|
||||
|
||||
tr.start = ply:EyePos() - Vector(0, 0, 15)
|
||||
tr.endpos = tr.start + eyeang:Forward() * 25
|
||||
tr.filter = ply
|
||||
|
@ -377,13 +384,8 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then
|
||||
return
|
||||
end
|
||||
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity.NoWallrun or trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then
|
||||
return false
|
||||
end
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then return end
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity.NoWallrun or trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then return false end
|
||||
|
||||
if trout.Hit and timemult > 0.5 then
|
||||
tr.start = tr.start + Vector(0, 0, 10)
|
||||
|
@ -394,9 +396,11 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
if trout.Hit then
|
||||
local angdir = trout.HitNormal:Angle()
|
||||
angdir.y = angdir.y - 180
|
||||
|
||||
local wallnormal = trout.HitNormal
|
||||
local eyeang = Angle(angdir)
|
||||
eyeang.x = 0
|
||||
|
||||
tr.start = ply:EyePos() - Vector(0, 0, 5)
|
||||
tr.endpos = tr.start + eyeang:Forward() * 40
|
||||
tr.filter = ply
|
||||
|
@ -405,18 +409,16 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if not trout.Hit then
|
||||
return
|
||||
end
|
||||
if not trout.Hit then return end
|
||||
|
||||
if SERVER then
|
||||
ply:EmitSound("Bump.Concrete")
|
||||
end
|
||||
|
||||
ply.WallrunOrigAng = angdir
|
||||
|
||||
ply:SetWallrunData(1, CurTime() + vwrtime * timemult * speedmult, wallnormal)
|
||||
ply:ViewPunch(Angle(-5, 0, 0))
|
||||
|
||||
ParkourEvent("wallrunv", ply)
|
||||
|
||||
if CLIENT_IFTP() then
|
||||
|
@ -429,8 +431,8 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
ply.OrigEyeAng = angdir
|
||||
elseif game.SinglePlayer() then
|
||||
net.Start("BodyAnimWallrun")
|
||||
net.WriteBool(true)
|
||||
net.WriteAngle(angdir)
|
||||
net.WriteBool(true)
|
||||
net.WriteAngle(angdir)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -442,6 +444,7 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
if mv:KeyDown(IN_JUMP) and not ply:OnGround() or mv:KeyPressed(IN_JUMP) then
|
||||
local tr = ply.WallrunTrace
|
||||
local trout = ply.WallrunTraceOut
|
||||
|
||||
tr.start = ply:EyePos()
|
||||
tr.endpos = tr.start + eyeang:Right() * 25
|
||||
tr.filter = ply
|
||||
|
@ -450,9 +453,7 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then
|
||||
return
|
||||
end
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then return end
|
||||
|
||||
if trout.Hit and trout.HitNormal:IsEqualTol(ply:GetEyeTrace().HitNormal, 0.1) then
|
||||
local ovel = mv:GetVelocity()
|
||||
|
@ -460,8 +461,11 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
|
||||
ply:SetWallrunOrigVel(ovel)
|
||||
ply:SetWallrunElevated(false)
|
||||
|
||||
mv:SetVelocity(vector_origin)
|
||||
|
||||
ply:SetWallrunData(2, CurTime() + hwrtime * timemult, trout.HitNormal)
|
||||
|
||||
ParkourEvent("wallrunh", ply)
|
||||
|
||||
if CLIENT and IsFirstTimePredicted() then
|
||||
|
@ -470,7 +474,7 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
hook.Add("CalcViewBA", "WallrunningTilt", WallrunningTilt)
|
||||
elseif SERVER and game.SinglePlayer() then
|
||||
net.Start("WallrunTilt")
|
||||
net.WriteBool(true)
|
||||
net.WriteBool(true)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -481,6 +485,7 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
if mv:KeyDown(IN_JUMP) and not ply:OnGround() or mv:KeyPressed(IN_JUMP) then
|
||||
local tr = ply.WallrunTrace
|
||||
local trout = ply.WallrunTraceOut
|
||||
|
||||
tr.start = ply:EyePos()
|
||||
tr.endpos = tr.start + eyeang:Right() * -25
|
||||
tr.filter = ply
|
||||
|
@ -489,9 +494,7 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then
|
||||
return
|
||||
end
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then return end
|
||||
|
||||
if trout.Hit and trout.HitNormal:IsEqualTol(ply:GetEyeTrace().HitNormal, 0.1) then
|
||||
local ovel = mv:GetVelocity()
|
||||
|
@ -499,9 +502,12 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
|
||||
ply:SetWallrunOrigVel(ovel)
|
||||
ply:SetWallrunDir(trout.HitNormal)
|
||||
|
||||
mv:SetVelocity(vector_origin)
|
||||
|
||||
ply:SetWallrunElevated(false)
|
||||
ply:SetWallrunData(3, CurTime() + hwrtime * timemult, trout.HitNormal)
|
||||
|
||||
ParkourEvent("wallrunh", ply)
|
||||
|
||||
if CLIENT and IsFirstTimePredicted() then
|
||||
|
@ -510,7 +516,7 @@ local function WallrunningCheck(ply, mv, cmd)
|
|||
hook.Add("CalcViewBA", "WallrunningTilt", WallrunningTilt)
|
||||
elseif game.SinglePlayer() then
|
||||
net.Start("WallrunTilt")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -521,7 +527,7 @@ end
|
|||
|
||||
local vecdir = Vector(1000, 1000, 1000)
|
||||
|
||||
hook.Add("SetupMove", "Wallrunning", function (ply, mv, cmd)
|
||||
hook.Add("SetupMove", "Wallrunning", function(ply, mv, cmd)
|
||||
if ply:GetWallrun() == nil or not ply:Alive() then
|
||||
ply:SetWallrun(0)
|
||||
end
|
||||
|
@ -538,4 +544,4 @@ hook.Add("SetupMove", "Wallrunning", function (ply, mv, cmd)
|
|||
ply:SetWallrunDir(vecdir)
|
||||
ply:SetWallrunCount(0)
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -1,7 +1,7 @@
|
|||
local vwrtime = 1.5
|
||||
local hwrtime = 1.5
|
||||
tiltdir = 1
|
||||
local tilt = 0
|
||||
-- local tilt = 0
|
||||
local wrmins = Vector(-16, -16, 0)
|
||||
local wrmaxs = Vector(16, 16, 16)
|
||||
|
||||
|
@ -17,6 +17,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
if not ply:OnGround() and mv:KeyDown(IN_JUMP) and mv:GetVelocity().z > -200 then
|
||||
local tr = ply.WallrunTrace
|
||||
local trout = ply.WallrunTraceOut
|
||||
|
||||
tr.start = ply:EyePos() - Vector(0, 0, 15)
|
||||
tr.endpos = tr.start + eyeang:Forward() * 25
|
||||
tr.filter = ply
|
||||
|
@ -25,13 +26,8 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then
|
||||
return
|
||||
end
|
||||
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity.NoWallrun or trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then
|
||||
return false
|
||||
end
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then return end
|
||||
if trout.Entity and trout.Entity.IsNPC and (trout.Entity.NoWallrun or trout.Entity:IsNPC() or trout.Entity:IsPlayer()) then return false end
|
||||
|
||||
if trout.Hit and timemult > 0.5 then
|
||||
tr.start = tr.start + Vector(0, 0, 10)
|
||||
|
@ -42,9 +38,11 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
if trout.Hit then
|
||||
local angdir = trout.HitNormal:Angle()
|
||||
angdir.y = angdir.y - 180
|
||||
|
||||
local wallnormal = trout.HitNormal
|
||||
local eyeang = Angle(angdir)
|
||||
eyeang.x = 0
|
||||
|
||||
tr.start = ply:EyePos() - Vector(0, 0, 5)
|
||||
tr.endpos = tr.start + eyeang:Forward() * 40
|
||||
tr.filter = ply
|
||||
|
@ -53,9 +51,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if not trout.Hit then
|
||||
return
|
||||
end
|
||||
if not trout.Hit then return end
|
||||
|
||||
if SERVER then
|
||||
ply:EmitSound("Bump.Concrete")
|
||||
|
@ -71,6 +67,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
|
||||
ply:SetWallrunData(1, CurTime() + vwrtime * timemult * speedmult, wallnormal)
|
||||
ply:ViewPunch(Angle(-5, 0, 0))
|
||||
|
||||
ParkourEvent("wallrunv", ply)
|
||||
|
||||
if CLIENT_IFTP() then
|
||||
|
@ -83,8 +80,8 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
ply.OrigEyeAng = angdir
|
||||
elseif game.SinglePlayer() then
|
||||
net.Start("BodyAnimWallrun")
|
||||
net.WriteBool(true)
|
||||
net.WriteAngle(angdir)
|
||||
net.WriteBool(true)
|
||||
net.WriteAngle(angdir)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -96,6 +93,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
if not ply:OnGround() or mv:KeyPressed(IN_JUMP) then
|
||||
local tr = ply.WallrunTrace
|
||||
local trout = ply.WallrunTraceOut
|
||||
|
||||
tr.start = ply:EyePos()
|
||||
tr.endpos = tr.start + eyeang:Right() * 25
|
||||
tr.filter = ply
|
||||
|
@ -104,9 +102,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then
|
||||
return
|
||||
end
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then return end
|
||||
|
||||
if trout.Hit and trout.HitNormal:IsEqualTol(ply:GetEyeTrace().HitNormal, 0.1) then
|
||||
local ovel = mv:GetVelocity() * 0.85
|
||||
|
@ -114,9 +110,13 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
|
||||
ply:SetWallrunOrigVel(ovel)
|
||||
ply:SetWallrunElevated(false)
|
||||
|
||||
mv:SetVelocity(vector_origin)
|
||||
|
||||
ply:SetWallrunData(2, CurTime() + hwrtime * timemult, trout.HitNormal)
|
||||
|
||||
ParkourEvent("wallrunh", ply)
|
||||
|
||||
ply:ViewPunch(Angle(0, 1, 0))
|
||||
|
||||
if CLIENT and IsFirstTimePredicted() then
|
||||
|
@ -125,7 +125,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
hook.Add("CalcViewBA", "WallrunningTilt", WallrunningTilt)
|
||||
elseif SERVER and game.SinglePlayer() then
|
||||
net.Start("WallrunTilt")
|
||||
net.WriteBool(true)
|
||||
net.WriteBool(true)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -136,6 +136,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
if not ply:OnGround() or mv:KeyPressed(IN_JUMP) then
|
||||
local tr = ply.WallrunTrace
|
||||
local trout = ply.WallrunTraceOut
|
||||
|
||||
tr.start = ply:EyePos()
|
||||
tr.endpos = tr.start + eyeang:Right() * -25
|
||||
tr.filter = ply
|
||||
|
@ -144,9 +145,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
|
||||
util.TraceLine(tr)
|
||||
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then
|
||||
return
|
||||
end
|
||||
if trout.HitNormal:IsEqualTol(ply:GetWallrunDir(), 0.25) then return end
|
||||
|
||||
if trout.Hit and trout.HitNormal:IsEqualTol(ply:GetEyeTrace().HitNormal, 0.1) then
|
||||
local ovel = mv:GetVelocity() * 0.85
|
||||
|
@ -154,10 +153,14 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
|
||||
ply:SetWallrunOrigVel(ovel)
|
||||
ply:SetWallrunDir(trout.HitNormal)
|
||||
|
||||
mv:SetVelocity(vector_origin)
|
||||
|
||||
ply:SetWallrunElevated(false)
|
||||
ply:SetWallrunData(3, CurTime() + hwrtime * timemult, trout.HitNormal)
|
||||
|
||||
ParkourEvent("wallrunh", ply)
|
||||
|
||||
ply:ViewPunch(Angle(0, -1, 0))
|
||||
|
||||
if CLIENT and IsFirstTimePredicted() then
|
||||
|
@ -166,7 +169,7 @@ function PuristWallrunningCheck(ply, mv, cmd, vel, eyeang, timemult, speedmult)
|
|||
hook.Add("CalcViewBA", "WallrunningTilt", WallrunningTilt)
|
||||
elseif game.SinglePlayer() then
|
||||
net.Start("WallrunTilt")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -179,6 +182,7 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
if wr == 4 then
|
||||
local ang = cmd:GetViewAngles()
|
||||
ang.x = 0
|
||||
|
||||
local vel = ang:Forward() * 30
|
||||
vel.z = 25
|
||||
|
||||
|
@ -189,6 +193,7 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
if ply:GetWallrunTime() < CurTime() or mv:GetVelocity():Length() < 10 then
|
||||
ply:SetWallrun(0)
|
||||
ply:SetQuickturn(false)
|
||||
|
||||
mv:SetVelocity(vel * 4)
|
||||
|
||||
local activewep = ply:GetActiveWeapon()
|
||||
|
@ -207,12 +212,14 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
|
||||
if mv:KeyPressed(IN_JUMP) then
|
||||
ParkourEvent("jumpwallrun", ply)
|
||||
|
||||
ply:SetSafetyRollKeyTime(CurTime() + 0.001)
|
||||
|
||||
vel.z = 30
|
||||
|
||||
vel:Mul(ply:GetOverdriveMult())
|
||||
|
||||
mv:SetVelocity(vel * 8)
|
||||
|
||||
ply:SetWallrun(0)
|
||||
ply:SetQuickturn(false)
|
||||
|
||||
|
@ -235,9 +242,9 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
local velz = math.Clamp((ply:GetWallrunTime() - CurTime()) / vwrtime, 0.1, 1)
|
||||
local vecvel = Vector()
|
||||
vecvel.z = 200 * velz
|
||||
|
||||
vecvel:Add(ply:GetWallrunDir():Angle():Forward() * -50)
|
||||
vecvel:Mul(ply:GetOverdriveMult())
|
||||
|
||||
mv:SetVelocity(vecvel)
|
||||
mv:SetForwardSpeed(0)
|
||||
mv:SetSideSpeed(0)
|
||||
|
@ -246,6 +253,7 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
local trout = ply.WallrunTraceOut
|
||||
local eyeang = ply.WallrunOrigAng or Angle()
|
||||
eyeang.x = 0
|
||||
|
||||
tr.start = ply:EyePos() - Vector(0, 0, 5)
|
||||
tr.endpos = tr.start + eyeang:Forward() * 40
|
||||
tr.filter = ply
|
||||
|
@ -286,6 +294,7 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
|
||||
if ovel:Length() > 400 then
|
||||
ovel:Mul(0.975)
|
||||
|
||||
ply:SetWallrunOrigVel(ovel)
|
||||
end
|
||||
|
||||
|
@ -374,6 +383,7 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
ply:SetQuickturn(false)
|
||||
ply:SetWallrunTime(0)
|
||||
ply:SetSafetyRollKeyTime(CurTime() + 0.001)
|
||||
|
||||
mv:SetVelocity(eyeang:Forward() * math.max(150, vecvel:Length() - 25) + Vector(0, 0, 250))
|
||||
|
||||
local event = ply:GetWallrun() == 3 and "jumpwallrunright" or "jumpwallrunleft"
|
||||
|
@ -398,7 +408,8 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
|
||||
if SERVER then
|
||||
ply:EmitSound("Wallrun.Concrete")
|
||||
timer.Simple(0.025, function ()
|
||||
|
||||
timer.Simple(0.025, function()
|
||||
ply:EmitSound("WallrunRelease.Concrete")
|
||||
end)
|
||||
end
|
||||
|
@ -420,7 +431,7 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
BodyAnim:SetSequence("jumpair")
|
||||
elseif game.SinglePlayer() and wr == 1 then
|
||||
net.Start("BodyAnimWallrun")
|
||||
net.WriteBool(false)
|
||||
net.WriteBool(false)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -428,4 +439,4 @@ function PuristWallrunningThink(ply, mv, cmd, wr, wrtimeremains)
|
|||
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,13 +1,11 @@
|
|||
if SERVER and game.SinglePlayer() then
|
||||
util.AddNetworkString("Zipline_SPFix")
|
||||
elseif CLIENT and game.SinglePlayer() then
|
||||
net.Receive("Zipline_SPFix", function ()
|
||||
net.Receive("Zipline_SPFix", function()
|
||||
local ply = LocalPlayer()
|
||||
local zipline = ply:GetZipline()
|
||||
|
||||
if not IsValid(zipline) then
|
||||
return
|
||||
end
|
||||
if not IsValid(zipline) then return end
|
||||
|
||||
local startpos = zipline:GetStartPos()
|
||||
local endpos = zipline:GetEndPos()
|
||||
|
@ -30,12 +28,13 @@ local function ZiplineCheck(ply, mv, cmd, zipline)
|
|||
local startp = startpos
|
||||
startpos = endpos
|
||||
endpos = startp
|
||||
|
||||
ply.ZiplineTwoWay = true
|
||||
else
|
||||
ply.ZiplineTwoWay = false
|
||||
end
|
||||
|
||||
local dist, near = util.DistanceToLine(startpos, endpos, mv:GetOrigin())
|
||||
local _, near = util.DistanceToLine(startpos, endpos, mv:GetOrigin())
|
||||
local neardist = near:Distance(endpos)
|
||||
local totaldist = startpos:Distance(endpos)
|
||||
local start = math.abs(neardist / totaldist - 1)
|
||||
|
@ -45,6 +44,7 @@ local function ZiplineCheck(ply, mv, cmd, zipline)
|
|||
local trout = ply.ZiplineTraceOut
|
||||
local omins = tr.mins
|
||||
local omaxs = tr.maxs
|
||||
|
||||
tr.start = LerpVector(start, startpos, endpos)
|
||||
tr.endpos = tr.start
|
||||
tr.mins, tr.maxs = ply:GetHull()
|
||||
|
@ -59,12 +59,10 @@ local function ZiplineCheck(ply, mv, cmd, zipline)
|
|||
start = start + 25 / div
|
||||
tr.start = LerpVector(start, startpos, endpos)
|
||||
tr.endpos = tr.start
|
||||
|
||||
util.TraceHull(tr)
|
||||
|
||||
if not trout.Hit or trout.Entity == zipline and start < 1 then
|
||||
fail = false
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
|
@ -81,6 +79,7 @@ local function ZiplineCheck(ply, mv, cmd, zipline)
|
|||
|
||||
tr.maxs = omaxs
|
||||
tr.mins = omins
|
||||
|
||||
local origin = mv:GetOrigin()
|
||||
|
||||
if CLIENT then
|
||||
|
@ -106,11 +105,11 @@ local function ZiplineCheck(ply, mv, cmd, zipline)
|
|||
ply:SetCrouchJumpBlocked(false)
|
||||
|
||||
if CLIENT_IFTP() then
|
||||
local zipline = ply:GetZipline()
|
||||
-- local zipline = ply:GetZipline()
|
||||
ply.OrigEyeAng = (endpos - startpos):Angle()
|
||||
elseif game.SinglePlayer() then
|
||||
net.Start("Zipline_SPFix")
|
||||
net.WriteBool(ply.ZiplineTwoWay)
|
||||
net.WriteBool(ply.ZiplineTwoWay)
|
||||
net.Send(ply)
|
||||
end
|
||||
|
||||
|
@ -123,7 +122,7 @@ local function ZiplineCheck(ply, mv, cmd, zipline)
|
|||
end
|
||||
end
|
||||
|
||||
local zipvec = Vector(0, 0, 85)
|
||||
-- local zipvec = Vector(0, 0, 85)
|
||||
|
||||
local function ZiplineThink(ply, mv, cmd, zipline)
|
||||
local fraction = ply:GetZiplineFraction()
|
||||
|
@ -144,8 +143,10 @@ local function ZiplineThink(ply, mv, cmd, zipline)
|
|||
ply:SetZipline(nil)
|
||||
ply:SetMoveType(MOVETYPE_WALK)
|
||||
ply:SetCrouchJumpBlocked(true)
|
||||
|
||||
mv:SetVelocity(dir * speed * 0.75)
|
||||
mv:SetButtons(0)
|
||||
|
||||
ply:SetZiplineDelay(CurTime() + 0.75)
|
||||
|
||||
if CLIENT_IFTP() or game.SinglePlayer() then
|
||||
|
@ -167,13 +168,13 @@ local function ZiplineThink(ply, mv, cmd, zipline)
|
|||
ply:SetZiplineFraction(newfraction)
|
||||
|
||||
local ziplerp = LerpVector(newfraction, startpos, endpos)
|
||||
|
||||
ziplerp:Sub(zipline:GetUp() * 75)
|
||||
|
||||
local tr = ply.ZiplineTrace
|
||||
local trout = ply.ZiplineTraceOut
|
||||
local omins = tr.mins
|
||||
local omaxs = tr.maxs
|
||||
|
||||
tr.start = ziplerp
|
||||
tr.endpos = ziplerp
|
||||
tr.mins, tr.maxs = ply:GetHull()
|
||||
|
@ -183,7 +184,9 @@ local function ZiplineThink(ply, mv, cmd, zipline)
|
|||
if trout.Hit and trout.Entity ~= zipline and newfraction > 0.1 then
|
||||
ply:SetZipline(nil)
|
||||
ply:SetMoveType(MOVETYPE_WALK)
|
||||
|
||||
mv:SetVelocity(dir * speed * 0.75)
|
||||
|
||||
ply:SetZiplineDelay(CurTime() + 0.75)
|
||||
|
||||
if CLIENT_IFTP() or game.SinglePlayer() then
|
||||
|
@ -207,7 +210,9 @@ local function ZiplineThink(ply, mv, cmd, zipline)
|
|||
tr.mins = omins
|
||||
|
||||
mv:SetOrigin(ziplerp)
|
||||
|
||||
ply:SetZiplineSpeed(math.Approach(speed, 750, FrameTime() * 250))
|
||||
|
||||
mv:SetVelocity(dir * speed)
|
||||
mv:SetButtons(0)
|
||||
mv:SetForwardSpeed(0)
|
||||
|
@ -219,16 +224,17 @@ local function Zipline(ply, mv, cmd)
|
|||
if not ply.ZiplineTrace then
|
||||
ply.ZiplineTrace = {}
|
||||
ply.ZiplineTraceOut = {}
|
||||
|
||||
local tr = ply.ZiplineTrace
|
||||
local mins, maxs = ply:GetHull()
|
||||
|
||||
mins.z = maxs.z * 0.8
|
||||
maxs.z = maxs.z * 2
|
||||
|
||||
mins:Mul(2)
|
||||
maxs:Mul(2)
|
||||
|
||||
mins.z = mins.z * 0.5
|
||||
maxs.z = maxs.z * 0.5
|
||||
|
||||
tr.maxs = maxs
|
||||
tr.mins = mins
|
||||
ply.ZiplineTrace.mask = MASK_PLAYERSOLID
|
||||
|
@ -238,13 +244,13 @@ local function Zipline(ply, mv, cmd)
|
|||
if not IsValid(ply:GetZipline()) and not ply:GetGrappling() and (not ply:Crouching() or ply:GetDive()) and not ply:OnGround() and ply:GetZiplineDelay() < CurTime() then
|
||||
local tr = ply.ZiplineTrace
|
||||
local trout = ply.ZiplineTraceOut
|
||||
|
||||
tr.output = trout
|
||||
tr.start = mv:GetOrigin()
|
||||
tr.endpos = tr.start
|
||||
tr.filter = ply
|
||||
|
||||
util.TraceHull(tr)
|
||||
|
||||
local trentity = trout.Entity
|
||||
|
||||
if IsValid(trentity) and trentity:GetClass() == "br_zipline" and ply:GetMoveType() == MOVETYPE_WALK then
|
||||
|
@ -269,4 +275,4 @@ function CreateZipline(startpos, endpos)
|
|||
|
||||
return zipline
|
||||
end
|
||||
end
|
||||
end
|
|
@ -5,57 +5,20 @@ function CLIENT_IFTP()
|
|||
return CLIENT and IsFirstTimePredicted()
|
||||
end
|
||||
|
||||
--[[
|
||||
local matrixdatatmp = {
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
}
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 1}
|
||||
}
|
||||
]]
|
||||
|
||||
local mtmp = {
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
}
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 1}
|
||||
}
|
||||
|
||||
function vmatrixmeta:FastToTable(tbl)
|
||||
|
@ -115,12 +78,6 @@ function playermeta:SetWallrunData(wr, wrtime, dir)
|
|||
end
|
||||
|
||||
function playermeta:UsingRH(wep)
|
||||
local usingrh = false
|
||||
local activewep = wep or self:GetActiveWeapon()
|
||||
|
||||
if IsValid(activewep) then
|
||||
usingrh = activewep:GetClass() == "runnerhands"
|
||||
end
|
||||
|
||||
return usingrh
|
||||
end
|
||||
if IsValid(activewep) then return activewep:GetClass() == "runnerhands" end
|
||||
end
|
File diff suppressed because it is too large
Load diff
|
@ -1,11 +1,6 @@
|
|||
local quakejump = CreateConVar("Beatrun_QuakeJump", 1, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
})
|
||||
local sidestep = CreateConVar("Beatrun_SideStep", 1, {
|
||||
FCVAR_REPLICATED,
|
||||
FCVAR_ARCHIVE
|
||||
})
|
||||
local quakejump = CreateConVar("Beatrun_QuakeJump", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE})
|
||||
|
||||
local sidestep = CreateConVar("Beatrun_SideStep", 1, {FCVAR_REPLICATED, FCVAR_ARCHIVE})
|
||||
|
||||
local function Hardland(jt)
|
||||
local ply = LocalPlayer()
|
||||
|
@ -34,12 +29,12 @@ if game.SinglePlayer() and SERVER then
|
|||
end
|
||||
|
||||
if game.SinglePlayer() and CLIENT then
|
||||
net.Receive("Beatrun_HardLand", function ()
|
||||
net.Receive("Beatrun_HardLand", function()
|
||||
Hardland(net.ReadBool())
|
||||
end)
|
||||
end
|
||||
|
||||
hook.Add("PlayerStepSoundTime", "MEStepTime", function (ply, step, walking)
|
||||
hook.Add("PlayerStepSoundTime", "MEStepTime", function(ply, step, walking)
|
||||
local activewep = ply:GetActiveWeapon()
|
||||
local sprint = ply:GetMEMoveLimit() < 300
|
||||
local stepmod = ply:GetStepRight() and 1 or -1
|
||||
|
@ -51,6 +46,7 @@ hook.Add("PlayerStepSoundTime", "MEStepTime", function (ply, step, walking)
|
|||
end
|
||||
|
||||
stepvel = stepvel - math.abs(ply:GetMEMoveLimit() / 100 - 1) * 0.33
|
||||
|
||||
local stepmod2 = 1
|
||||
local stepmod3 = 1
|
||||
|
||||
|
@ -65,11 +61,13 @@ hook.Add("PlayerStepSoundTime", "MEStepTime", function (ply, step, walking)
|
|||
if not ply:Crouching() and not ply:KeyDown(IN_WALK) 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)
|
||||
|
@ -90,25 +88,20 @@ hook.Add("PlayerStepSoundTime", "MEStepTime", function (ply, step, walking)
|
|||
|
||||
return steptime
|
||||
end)
|
||||
hook.Add("PlayerFootstep", "MEStepSound", function (ply, pos, foot, sound, volume, filter, skipcheck)
|
||||
|
||||
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() < 155 and ply:KeyDown(IN_FORWARD) and not ply.FootstepLand and not IsValid(ply:GetBalanceEntity()) then
|
||||
return true
|
||||
end
|
||||
if (ply:GetSliding() or CurTime() < ply:GetSafetyRollTime() - 0.5) and not skipcheck then return true end
|
||||
if ply:GetMEMoveLimit() < 155 and ply:KeyDown(IN_FORWARD) and not ply.FootstepLand and not IsValid(ply:GetBalanceEntity()) then return true end
|
||||
|
||||
local mat = sound:sub(0, -6)
|
||||
local newsound = FOOTSTEPS_LUT[mat]
|
||||
|
||||
if mat == "player/footsteps/ladder" then
|
||||
return
|
||||
end
|
||||
if mat == "player/footsteps/ladder" then return end
|
||||
|
||||
newsound = newsound or "Concrete"
|
||||
|
||||
ply.LastStepMat = newsound
|
||||
|
||||
if game.SinglePlayer() then
|
||||
|
@ -148,9 +141,11 @@ hook.Add("PlayerFootstep", "MEStepSound", function (ply, pos, foot, sound, volum
|
|||
|
||||
return true
|
||||
end)
|
||||
hook.Add("OnPlayerHitGround", "MELandSound", function (ply, water, floater, speed)
|
||||
|
||||
hook.Add("OnPlayerHitGround", "MELandSound", function(ply, water, floater, speed)
|
||||
local vel = ply:GetVelocity()
|
||||
vel.z = 0
|
||||
|
||||
ply.FootstepLand = true
|
||||
ply.LastLandTime = CurTime()
|
||||
|
||||
|
@ -181,6 +176,7 @@ hook.Add("OnPlayerHitGround", "MELandSound", function (ply, water, floater, spee
|
|||
local eyedir = ply:EyeAngles()
|
||||
eyedir.x = 0
|
||||
eyedir = eyedir:Forward()
|
||||
|
||||
local vel = ply:GetVelocity()
|
||||
vel.z = 0
|
||||
|
||||
|
@ -194,7 +190,7 @@ hook.Add("OnPlayerHitGround", "MELandSound", function (ply, water, floater, spee
|
|||
Hardland(jt)
|
||||
elseif SERVER and game.SinglePlayer() then
|
||||
net.Start("Beatrun_HardLand")
|
||||
net.WriteBool(jt)
|
||||
net.WriteBool(jt)
|
||||
net.Send(ply)
|
||||
end
|
||||
end
|
||||
|
@ -208,11 +204,13 @@ hook.Add("OnPlayerHitGround", "MELandSound", function (ply, water, floater, spee
|
|||
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)
|
||||
|
||||
hook.Add("SetupMove", "MESetupMove", function(ply, mv, cmd)
|
||||
local activewep = ply:GetActiveWeapon()
|
||||
local usingrh = IsValid(activewep) and activewep:GetClass() == "runnerhands"
|
||||
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())
|
||||
|
@ -225,7 +223,6 @@ hook.Add("SetupMove", "MESetupMove", function (ply, mv, cmd)
|
|||
end
|
||||
|
||||
ply:EmitSound("Release." .. newsound)
|
||||
|
||||
ply.FootstepReleaseLand = false
|
||||
end
|
||||
|
||||
|
@ -246,15 +243,18 @@ hook.Add("SetupMove", "MESetupMove", function (ply, mv, cmd)
|
|||
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)
|
||||
|
||||
mv:SetButtons(bit.band(mv:GetButtons(), bit.bnot(IN_JUMP)))
|
||||
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
|
||||
|
@ -282,7 +282,6 @@ hook.Add("SetupMove", "MESetupMove", function (ply, mv, cmd)
|
|||
|
||||
if MEAngDiff > 1.25 and ply:GetWallrun() == 0 then
|
||||
local slow = MEAngDiff * 0.75
|
||||
|
||||
ply:SetMEMoveLimit(math.max(ply:GetMEMoveLimit() - slow, 160))
|
||||
end
|
||||
|
||||
|
@ -304,14 +303,18 @@ hook.Add("SetupMove", "MESetupMove", function (ply, mv, cmd)
|
|||
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() * -600)
|
||||
|
||||
ply:ViewPunch(Angle(-3, 0, -4.5))
|
||||
|
||||
ParkourEvent("sidestepleft", ply)
|
||||
|
||||
activewep.SideStepDir = ang:Forward()
|
||||
|
@ -322,8 +325,11 @@ hook.Add("SetupMove", "MESetupMove", function (ply, mv, cmd)
|
|||
elseif mv:KeyDown(IN_MOVERIGHT) then
|
||||
activewep:SendWeaponAnim(ACT_TURNRIGHT45)
|
||||
activewep:SetSideStep(true)
|
||||
|
||||
mv:SetVelocity(cmd:GetViewAngles():Right() * 600)
|
||||
|
||||
ply:ViewPunch(Angle(-3, 0, 4.5))
|
||||
|
||||
ParkourEvent("sidestepright", ply)
|
||||
|
||||
activewep.SideStepDir = ang:Forward()
|
||||
|
@ -350,24 +356,20 @@ hook.Add("SetupMove", "MESetupMove", function (ply, mv, cmd)
|
|||
|
||||
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 = -300
|
||||
|
||||
mv:SetVelocity(vel)
|
||||
|
||||
activewep:SetWasOnGround(false)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
if CLIENT then
|
||||
local jumpseq = {
|
||||
ACT_VM_HAULBACK,
|
||||
ACT_VM_SWINGHARD
|
||||
}
|
||||
-- local jumpseq = {ACT_VM_HAULBACK, ACT_VM_SWINGHARD}
|
||||
|
||||
hook.Add("CreateMove", "MECreateMove", function (cmd)
|
||||
hook.Add("CreateMove", "MECreateMove", function(cmd)
|
||||
local ply = LocalPlayer()
|
||||
local usingrh = ply:UsingRH()
|
||||
local hardland = CurTime() < (ply.hardlandtime or 0)
|
||||
|
@ -382,7 +384,8 @@ if CLIENT then
|
|||
cmd:SetButtons(cmd:GetButtons() + IN_SPEED)
|
||||
end
|
||||
end)
|
||||
hook.Add("GetMotionBlurValues", "MEBlur", function (h, v, f, r)
|
||||
|
||||
hook.Add("GetMotionBlurValues", "MEBlur", function(h, v, f, r)
|
||||
local ply = LocalPlayer()
|
||||
local vel = LocalPlayer():GetVelocity()
|
||||
|
||||
|
@ -407,9 +410,10 @@ end
|
|||
MMY = 0
|
||||
MMX = 0
|
||||
|
||||
hook.Add("InputMouseApply", "MouseMovement", function (cmd, x, y)
|
||||
hook.Add("InputMouseApply", "MouseMovement", function(cmd, x, y)
|
||||
MMY = y
|
||||
MMX = x
|
||||
|
||||
local ply = LocalPlayer()
|
||||
local activewep = ply:GetActiveWeapon()
|
||||
local usingrh = ply:UsingRH(activewep)
|
||||
|
@ -420,8 +424,8 @@ hook.Add("InputMouseApply", "MouseMovement", function (cmd, x, y)
|
|||
end)
|
||||
|
||||
if CLIENT then
|
||||
net.Receive("DoorBashAnim", function ()
|
||||
net.Receive("DoorBashAnim", function()
|
||||
ArmInterrupt("doorbash")
|
||||
LocalPlayer():CLViewPunch(Angle(1.5, -0.75, 0))
|
||||
end)
|
||||
end
|
||||
end
|
|
@ -72,7 +72,7 @@ concommand.Add("blindplayer", function(ply, cmd, args)
|
|||
end
|
||||
|
||||
net.Start("BlindPlayers")
|
||||
net.WriteBool(blinded)
|
||||
net.WriteBool(blinded)
|
||||
net.Send(mply)
|
||||
end)
|
||||
|
||||
|
|
BIN
lua/bin/gmcl_gdiscord_win32.dll
Normal file
BIN
lua/bin/gmcl_gdiscord_win32.dll
Normal file
Binary file not shown.
Loading…
Reference in a new issue