if SERVER then util.AddNetworkString("VManip_BarnacleGrip") hook.Add("PlayerUse","VManip_UseAnim",function(ply,ent) local usecooldown=ply.usecooldown or 0 if ent!=nil and ply:KeyPressed(IN_USE) and CurTime()>usecooldown and !ent.LFS then --fix LFS net.Start("VManip_SimplePlay") net.WriteString("use") net.Send(ply) ply.usecooldown=CurTime()+1 end end) hook.Add("PlayerPostThink","VManip_BarnacleCheck",function(ply) --EFlag does not return correct value clientside local check=ply.barnaclecheck!=2 local eflag=ply:IsEFlagSet(EFL_IS_BEING_LIFTED_BY_BARNACLE) if eflag and check then ply.barnaclecheck=1 elseif !check and !eflag then ply.barnaclecheck=0 ply.barnacledelay=CurTime()+1 net.Start("VManip_BarnacleGrip") net.WriteBool(false) net.Send(ply) end if ply.barnaclecheck==1 then ply.barnaclecheck=2 net.Start("VManip_BarnacleGrip") net.WriteBool(true) net.Send(ply) end end) hook.Add("EntityTakeDamage","VManip_ShieldExplosion",function(ply,dmg) if !ply:IsPlayer() then return end local dmgtype=dmg:GetDamageType() if dmgtype==DMG_BLAST or dmgtype==134217792 then net.Start("VManip_SimplePlay") net.WriteString("shieldexplosion") net.Send(ply) end end) elseif CLIENT then local vmp_contextual_voicechat = CreateClientConVar("cl_vmanip_voicechat", 1, true, false,"Toggles the voice chat animation") net.Receive("VManip_BarnacleGrip",function(len) local choked=net.ReadBool() local ply=LocalPlayer() if choked then VManip:QueueAnim("barnaclechoke") ply.barnaclegrip=true else VManip:QuitHolding("barnaclechoke") ply.barnaclegrip=false end end) hook.Add("CreateMove","VManip_SwimAnims",function(cmd) local ply=LocalPlayer() if ply:WaterLevel()<2 then local vmpcuranim=VManip:GetCurrentAnim() if vmpcuranim=="swimleft" or vmpcuranim=="swimforward" then VManip:QuitHolding() end return end local buttons=cmd:GetButtons() local movingleft=bit.band(buttons,IN_MOVELEFT)!=0 local movingforward=(bit.band(buttons,IN_FORWARD)!=0 or bit.band(buttons,IN_MOVERIGHT)!=0) local vmpcuranim=VManip:GetCurrentAnim() if !VManip:IsActive() then if movingleft then VManip:PlayAnim("swimleft") elseif movingforward then VManip:PlayAnim("swimforward") end else if !movingleft and vmpcuranim=="swimleft" then VManip:QuitHolding("swimleft") return elseif !movingforward and vmpcuranim=="swimforward" then VManip:QuitHolding("swimforward") return end end end) hook.Add("PlayerStartVoice","VManip_StartVoiceAnim",function(ply) if vmp_contextual_voicechat:GetBool() and ply==LocalPlayer() then VManip:PlayAnim("voicechat") end end) hook.Add("PlayerEndVoice","VManip_EndVoiceAnim",function(ply) if vmp_contextual_voicechat:GetBool() and ply==LocalPlayer() then VManip:QuitHolding("voicechat") end end) end