summaryrefslogtreecommitdiff
path: root/gamemode/cl_init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/cl_init.lua')
-rw-r--r--gamemode/cl_init.lua842
1 files changed, 421 insertions, 421 deletions
diff --git a/gamemode/cl_init.lua b/gamemode/cl_init.lua
index e9ba2a8..1933025 100644
--- a/gamemode/cl_init.lua
+++ b/gamemode/cl_init.lua
@@ -38,7 +38,7 @@ CV_Density = CreateClientConVar( "cl_redead_rain_density", "1.0", true, false )
CV_NoobHelp = CreateClientConVar( "cl_redead_noob_help", "1", true, false )
function GM:Initialize()
-
+
WindVector = Vector( math.random(-10,10), math.random(-10,10), 0 )
StaticPos = Vector(0,0,0)
ViewWobble = 0
@@ -52,7 +52,7 @@ function GM:Initialize()
DeathScreenScale = 0
HeartBeat = 0
JumpTimer = 0
-
+
surface.CreateFont ( "DeathFont", { size = 34, weight = 200, antialias = true, additive = true, font = "Graffiare" } )
surface.CreateFont ( "AmmoFont", { size = 28, weight = 200, antialias = true, additive = true, font = "Graffiare" } )
surface.CreateFont ( "CashFont", { size = 22, weight = 200, antialias = true, additive = true, font = "Graffiare" } )
@@ -70,25 +70,25 @@ function GM:Initialize()
//matArm = Material( "radbox/radar_arm" )
//matArrow = Material( "radbox/radar_arrow" )
//matNoise = Material( "radbox/nvg_noise" )
-
+
matHealth = Material( "radbox/img_health" )
matStamina = Material( "radbox/img_stamina" )
matBlood = Material( "radbox/img_blood" )
matRadiation = Material( "radbox/img_radiation" )
matInfection = Material( "radbox/img_infect" )
-
+
GAMEMODE:WeatherInit()
-
+
end
function GM:GetHelpHTML()
local str = ""
-
+
for k,v in pairs( GAMEMODE.HelpText ) do
-
+
str = str .. v
-
+
end
return str
@@ -99,13 +99,13 @@ end
function GM:ShowHelp()
if IsValid( self.HelpFrame ) then return end
-
+
self.HelpFrame = vgui.Create( "HelpMenu" )
self.HelpFrame:SetSize( 415, 370 )
self.HelpFrame:Center()
self.HelpFrame:MakePopup()
self.HelpFrame:SetKeyboardInputEnabled( false )
-
+
end
function GM:ShowClasses()
@@ -114,7 +114,7 @@ function GM:ShowClasses()
classmenu:SetSize( 415, 475 )
classmenu:Center()
classmenu:MakePopup()]]
-
+
GAMEMODE:ShowHelp()
end
@@ -122,7 +122,7 @@ end
function GM:ShowZombieClasses()
if IsValid( self.Classes ) then return end
-
+
self.Classes = vgui.Create( "ZombieClassPicker" )
self.Classes:SetSize( 415, 475 )
self.Classes:Center()
@@ -133,21 +133,21 @@ end
function GM:HUDShouldDraw( name )
if GAMEMODE.ScoreboardVisible then return false end
-
+
for k, v in pairs{ "CHudHealth", "CHudBattery", "CHudAmmo", "CHudSecondaryAmmo", "CHudSuitPower", "CHudPoisonDamageIndicator", "CHudCrosshair" } do
-
- if name == v then return false end
-
- end
-
+
+ if name == v then return false end
+
+ end
+
if name == "CHudDamageIndicator" and not LocalPlayer():Alive() then
-
+
return false
-
+
end
-
+
return true
-
+
end
function GM:Think()
@@ -157,178 +157,178 @@ function GM:Think()
GAMEMODE:GoreRagdolls()
GAMEMODE:HUDTraces()
//GAMEMODE:SpawnRagdolls()
-
+
if GetGlobalBool( "GameOver", false ) and not EndScreenShown then
-
+
EndScreenShown = true
-
+
local endscreen = vgui.Create( "EndGame" )
endscreen:SetPos(0,0)
-
+
end
if IsValid( LocalPlayer() ) and LocalPlayer():Alive() and not StartMenuShown then
-
+
StartMenuShown = true
GAMEMODE:ShowClasses()
-
+
//player_manager.SetPlayerClass( LocalPlayer(), "player_base" )
-
+
end
if not LocalPlayer():Alive() and GAMEMODE:ElementsVisible() then
-
+
GAMEMODE:ClearElements()
-
+
gui.EnableScreenClicker( false )
-
+
end
-
+
if LocalPlayer():Team() != TEAM_ARMY then return end
if LocalPlayer():Alive() and HeartBeat < CurTime() and ( LocalPlayer():GetNWBool( "Bleeding", false ) or LocalPlayer():Health() < 50 ) then
-
+
local scale = LocalPlayer():Health() / 100
HeartBeat = CurTime() + 0.5 + scale * 1.5
-
+
LocalPlayer():EmitSound( Sound( "nuke/heartbeat.wav" ), 100, 150 - scale * 50 )
-
+
end
-
+
--[[if Inv_HasItem( "models/gibs/shield_scanner_gib1.mdl" ) then
-
+
MaxDist = 2200
ArmSpeed = 90
-
+
else
-
+
MaxDist = 1500
ArmSpeed = 70
-
+
end
if ( NextRadarThink or 0 ) < CurTime() then
-
+
NextRadarThink = CurTime() + 1.5
-
- RadarEntTable = team.GetPlayers( TEAM_ZOMBIES )
+
+ RadarEntTable = team.GetPlayers( TEAM_ZOMBIES )
RadarEntTable = table.Add( RadarEntTable, team.GetPlayers( TEAM_ARMY ) )
RadarEntTable = table.Add( RadarEntTable, ents.FindByClass( "npc_*" ) )
RadarEntTable = table.Add( RadarEntTable, ents.FindByClass( "sent_lootbag" ) )
RadarEntTable = table.Add( RadarEntTable, ents.FindByClass( "point_stash" ) )
RadarEntTable = table.Add( RadarEntTable, ents.FindByClass( "sent_supplycrate" ) )
RadarEntTable = table.Add( RadarEntTable, ents.FindByClass( "sent_antidote" ) )
-
+
end
-
+
local aimvec = LocalPlayer():GetAimVector()
-
+
for k,v in pairs( RadarEntTable ) do
-
+
if not IsValid( v ) then break end
-
+
local dirp = ( LocalPlayer():GetPos() - v:GetPos() ):GetNormal()
local aimvec = LocalPlayer():GetAimVector()
aimvec.z = dirp.z
-
+
local dir = ( aimvec:Angle() + Angle( 0, ArmAngle + 90, 0 ) ):Forward()
local dot = dir:Dot( dirp )
local diff = ( v:GetPos() - LocalPlayer():GetPos() )
-
+
local close = math.sqrt( diff.x * diff.x + diff.y * diff.y ) < MaxDist * FadeDist
if ( !v:IsPlayer() or ( v:Alive() and ( v != LocalPlayer() and ( v:Team() == LocalPlayer():Team() or close ) ) ) ) and !IsOnRadar( v ) and ( dot > 0.99 or close ) then
-
+
local pos = v:GetPos()
local color = Color( 0, 255, 0 )
-
+
if not v:IsPlayer() then
-
+
color = Color( 80, 150, 255 )
-
+
if v:GetClass() == "sent_antidote" or v:GetClass() == "sent_supplycrate" then
-
+
color = Color( 255, 255, 255 )
-
+
elseif v:IsNPC() then
-
+
if v:GetClass() == "npc_scientist" then
-
+
color = Color( 200, 200, 0 )
-
+
else
-
+
color = Color( 255, 80, 80 )
-
+
end
-
+
end
-
+
elseif v:IsPlayer() and v:Team() != LocalPlayer():Team() then
-
+
color = Color( 255, 80, 80 )
-
+
end
-
+
local dietime = CurTime() + BlipTime
-
+
if close then
-
+
dietime = -1
-
+
end
-
+
table.insert( PosTable, { Ent = v, Pos = pos, DieTime = dietime, Color = color } )
-
+
end
-
+
end]]
-
+
end
function GM:FadeRagdolls()
for k,v in pairs( ents.FindByClass( "class C_ClientRagdoll" ) ) do
-
+
if v.Time and v.Time < CurTime() then
-
+
//v:SetColor( Color( 255, 255, 255, v.Alpha ) )
//v.Alpha = math.Approach( v.Alpha, 0, -2 )
-
+
//if v.Alpha <= 0 then
//v:Remove()
//end
-
+
v:Remove()
-
+
elseif not v.Time then
-
+
v.Time = CurTime() + 12
//v.Alpha = 255
-
+
end
-
+
end
-
+
end
function GM:GetNearestEnt( pos, dist, tbl )
- local closest
+ local closest
local best = 9000
for k,v in pairs( tbl ) do
-
+
local newdist = v:GetPos():Distance( pos )
-
+
if newdist < dist and newdist < best then
-
+
closest = v
-
+
end
-
+
end
-
+
return closest
end
@@ -343,205 +343,205 @@ function GM:GoreRagdolls()
tbl = table.Add( tbl, ents.FindByClass( "class C_ClientRagdoll" ) )
for k,v in pairs( tbl ) do
-
+
if not v.Gore and table.HasValue( GAMEMODE.Corpses, string.lower( v:GetModel() ) ) then
-
+
v.Gore = true
v:SetMaterial( "models/flesh" )
-
+
local phys = v:GetPhysicsObject()
-
+
if IsValid( phys ) then
-
+
phys:ApplyForceCenter( VectorRand() * 5000 )
-
+
end
-
+
elseif not LocalPlayer():Alive() and IsValid( LocalPlayer():GetRagdollEntity() ) and LocalPlayer():GetRagdollEntity() == v and not v.Slowed and not table.HasValue( GAMEMODE.Corpses, string.lower( v:GetModel() ) ) then
-
+
v.Slowed = true
-
+
local phys = v:GetPhysicsObject()
-
+
if IsValid( phys ) then
-
+
local count = LocalPlayer():GetRagdollEntity():GetPhysicsObjectCount()
-
+
for i=0, count do
-
+
local limb = v:GetPhysicsObjectNum( i )
-
+
if IsValid( limb ) then
-
+
limb:SetDamping( 5, 0 )
limb:ApplyForceCenter( VectorRand() * 50 )
-
+
end
-
+
end
-
+
phys:Wake()
-
+
end
-
+
end
-
+
if not v.Randomized then
-
+
v.Randomized = true
-
- if math.random(1,2) == 1 then
-
+
+ if math.random(1,2) == 1 then
+
local phys = v:GetPhysicsObject()
-
+
if IsValid( phys ) then
-
+
for i=1, math.random(2,6) do
-
+
local count = v:GetPhysicsObjectCount()
local limb = v:GetPhysicsObjectNum( math.random( 0, count ) )
-
+
if IsValid( limb ) then
-
+
limb:SetDamping( math.Rand( 0, 2 ), math.Rand( 0, 5 ) )
limb:ApplyForceCenter( VectorRand() * 75 )
-
+
end
-
+
phys:Wake()
-
+
end
-
+
end
-
+
end
-
+
end
-
+
end
-
+
for c,d in pairs( HeadlessTbl ) do
-
+
local ent = GAMEMODE:GetNearestEnt( d.Pos, 50, tbl )
-
+
if IsValid( ent ) and not ent.IsHeadless then
-
- ent:ManipulateBoneScale( 6, Vector( 0.01, 0.01, 0.01 ) )
- ent:ManipulateBoneScale( 6, Vector( 0.001, 0.001, 0.001 ) )
-
+
+ ent:ManipulateBoneScale( 6, Vector( 0.01, 0.01, 0.01 ) )
+ ent:ManipulateBoneScale( 6, Vector( 0.001, 0.001, 0.001 ) )
+
ent.IsHeadless = true
-
+
table.remove( HeadlessTbl, c )
-
+
break
-
+
elseif d.Time < CurTime() then
-
+
table.remove( HeadlessTbl, c )
-
+
break
-
+
end
-
+
end
-
+
for c,d in pairs( BurnTbl ) do
-
+
local ent = GAMEMODE:GetNearestEnt( d.Pos, 50, tbl )
-
+
if IsValid( ent ) and not ent.IsBurnt then
-
+
ent:SetMaterial( table.Random( GAMEMODE.GoreSheets ) )
ent.IsBurnt = true
-
+
table.remove( BurnTbl, c )
-
+
break
-
+
elseif d.Time < CurTime() then
-
+
table.remove( BurnTbl, c )
-
+
break
-
+
end
-
+
end
-
+
end
function GM:SpawnRagdolls()
local tbl = ents.FindByClass( "npc_*" )
-
+
for c,d in pairs( RagdollTbl ) do
-
+
local ent = GAMEMODE:GetNearestEnt( d.Pos, 30, tbl )
-
+
if IsValid( ent ) and not ent.Ragdolled then
-
+
ent:BecomeRagdollOnClient()
ent.Ragdolled = true
-
+
table.remove( RagdollTbl, c )
-
+
break
-
+
elseif d.Time < CurTime() then
-
+
table.remove( RagdollTbl, c )
-
+
break
-
+
end
-
+
end
-
+
end
function DrawBar( x, y, w, h, value, maxvalue, icon, colorlight, colordark, hp )
draw.RoundedBox( 4, x - 1, y, h + 1, h, Color( 0, 0, 0, 180 ) )
-
- surface.SetDrawColor( colorlight.r, colorlight.g, colorlight.b, 180 )
- surface.SetMaterial( icon )
- surface.DrawTexturedRect( x, y + 1, h - 1, h - 2 )
-
+
+ surface.SetDrawColor( colorlight.r, colorlight.g, colorlight.b, 180 )
+ surface.SetMaterial( icon )
+ surface.DrawTexturedRect( x, y + 1, h - 1, h - 2 )
+
x = x + h + 4
-
+
local w = 5 + maxvalue * 2
-
+
draw.RoundedBox( 4, x, y, w, h, Color( 0, 0, 0, 180 ) )
-
+
for i=1, value do
-
+
local grn = colorlight.g
-
+
if i <= 50 then
-
+
grn = grn + 50
-
+
end
-
+
draw.RoundedBox( 0, 1 + x + i * 2, y + 3, 1, h - 6, colordark )
draw.RoundedBox( 0, 1 + x + i * 2, y + 3 + ( h * 0.2 ), 1, h - 6 - ( h * 0.4 ), Color( colorlight.r, grn, colorlight.b ) )
-
+
--[[if hp then
-
+
if i % 6 == 0 or ( i + 1 ) % 6 == 0 or ( i + 2 ) % 6 == 0 then
-
+
draw.RoundedBox( 0, 1 + x + i * 2, y + 3, 1, ( h * ( math.sin( CurTime() * 3 + i ) * 0.2 + 0.5 ) ) - 3, Color( colorlight.r, grn, colorlight.b ) )
-
+
end
-
+
draw.RoundedBox( 0, 1 + x + i * 2, y + 3, 1, ( h * 0.4 ) - 3, Color( colorlight.r, grn, colorlight.b ) )
-
+
else
-
+
draw.RoundedBox( 0, 1 + x + i * 2, y + 3, 1, ( h * ( math.sin( ( CurTime() * 0.1 + i * 0.5 ) ) * ( math.sin( CurTime() * 2 ) * 0.15 ) + 0.5 ) ) - 3, Color( colorlight.r, grn, colorlight.b ) )
-
+
end]]
-
+
end
end
@@ -549,10 +549,10 @@ end
function DrawIcon( x, y, w, h, icon, color )
draw.RoundedBox( 4, x - 1, y, h + 1, h, Color( 0, 0, 0, 180 ) )
-
- surface.SetDrawColor( color.r, color.g, color.b, 180 )
- surface.SetMaterial( icon )
- surface.DrawTexturedRect( x, y + 1, h - 1, h - 2 )
+
+ surface.SetDrawColor( color.r, color.g, color.b, 180 )
+ surface.SetMaterial( icon )
+ surface.DrawTexturedRect( x, y + 1, h - 1, h - 2 )
end
@@ -561,10 +561,10 @@ function DrawAmmo( x, y, w, h, text, label )
if not IsValid( LocalPlayer():GetActiveWeapon() ) then return end
draw.RoundedBox( 4, x, y, w, h, Color( 0, 0, 0, 180 ) )
-
+
draw.SimpleText( text, "AmmoFont", x + 5, y + ( h * 0.5 ) - 5, Color( 255, 255, 255 ), TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
draw.SimpleText( label, "AmmoFontSmall", x + 5, y + 5, Color( 255, 255, 150 ), TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
-
+
end
function DrawCash( x, y, w, h, text )
@@ -580,39 +580,39 @@ function GM:GetAfflictions()
local cols = { Color( 40, 200, 40 ), Color( 80, 150, 40 ), Color( 150, 150, 0 ), Color( 200, 100, 40 ), Color( 255, 40, 40 ) }
if LocalPlayer():GetNWBool( "Infected", false ) then
-
+
table.insert( tbl, { Icon = matInfection, Color = Color( 40, 200, 40 ) } )
-
+
end
-
+
if LocalPlayer():GetNWBool( "Bleeding", false ) then
-
+
table.insert( tbl, { Icon = matBlood, Color = Color( 225, 40, 40 ) } )
-
+
end
-
+
if LocalPlayer():GetNWInt( "Radiation", 0 ) > 0 then
table.insert( tbl, { Icon = matRadiation, Color = cols[ LocalPlayer():GetNWInt( "Radiation", 1 ) ] } )
-
+
end
-
+
return tbl
end
function GM:GetHealthColor()
-
+
local hp = math.Clamp( LocalPlayer():Health(), 0, 500 )
-
+
if hp > 150 then
-
+
return Color( 0, 255, 255 )
-
+
end
-
+
local scale = hp / 150
-
+
return Color( ( 1 - scale ) * 255, scale * 255, scale * 255 )
end
@@ -623,32 +623,32 @@ function GM:DrawMarkers()
tbl = table.Add( tbl, ents.FindByClass( "sent_antidote" ) )
for k,v in pairs( tbl ) do
-
+
local sc = v:GetPos():ToScreen()
-
+
if sc.visible then
-
+
local text = "antidote"
local offset = ( v:GetPos() + Vector(0,0,80) ):ToScreen()
local dist = v:GetPos():Distance( LocalPlayer():GetPos() )
local maxdist = 1600
-
+
if v:GetClass() == "sent_heliflare" then
-
+
text = "evac zone"
offset = ( v:GetPos() + Vector(0,0,40) ):ToScreen()
maxdist = 600
-
+
end
-
+
local alpha = math.Clamp( dist - maxdist, 0, 200 ) / 200
-
+
sc.y = sc.y + ( offset.y - sc.y )
-
+
draw.SimpleText( text, "HudMarker", sc.x, sc.y, Color( 255, 255, 255, alpha * 255 ), TEXT_ALIGN_CENTER )
-
+
end
-
+
end
end
@@ -656,299 +656,299 @@ end
function GM:HUDPaint()
if GetGlobalBool( "GameOver", false ) then return end
-
+
if LocalPlayer():IsFrozen() then return end
-
+
if LocalPlayer():Team() == TEAM_ZOMBIES then
-
+
GAMEMODE:PaintWeather()
-
+
if not LocalPlayer():Alive() then
-
- DeathScreenScale = math.Approach( DeathScreenScale, 1, FrameTime() * 0.3 )
-
+
+ DeathScreenScale = math.Approach( DeathScreenScale, 1, FrameTime() * 0.3 )
+
draw.RoundedBox( 0, 0, 0, ScrW(), ScrH() * ( 0.15 * DeathScreenScale ), Color( 0, 0, 0, 180 ) )
draw.RoundedBox( 0, 0, ScrH() - ( ScrH() * ( 0.15 * DeathScreenScale ) ), ScrW(), ScrH() * ( 0.15 * DeathScreenScale ), Color( 0, 0, 0, 180 ) )
-
+
if DeathScreenScale == 1 then
-
+
local dtime = math.Round( DeathScreenTime - CurTime() )
-
+
if dtime > 0 then
-
+
draw.SimpleText( "YOU WILL RESPAWN IN "..dtime.." SECONDS", "DeathFont", ScrW() * 0.5, ScrH() * 0.1, Color( 255, 0, 0 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
-
+
else
-
+
draw.SimpleText( "PRESS ANY KEY TO RESPAWN", "DeathFont", ScrW() * 0.5, ScrH() * 0.1, Color( 255, 0, 0 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
-
+
end
-
+
draw.SimpleText( DeathScreenText or "POOP", "DeathFont", ScrW() * 0.5, ScrH() * 0.9, Color( 255, 0, 0 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
-
+
end
-
+
else
-
+
local hp = math.Clamp( LocalPlayer():Health(), 0, 500 )
local x, y = 40, ScrH() - 60
-
+
surface.SetFont( "ZombieHud" )
local w, h = surface.GetTextSize( "Health: " .. hp )
-
+
draw.RoundedBox( 4, 30, ScrH() - 70, w + 20, h + 20, Color( 0, 0, 0, 180 ) )
-
+
draw.SimpleText( "Health: " .. hp, "ZombieHud", x+1, y+1, Color(40,40,40), TEXT_ALIGN_LEFT )
draw.SimpleText( "Health: " .. hp, "ZombieHud", x+1, y-1, Color(40,40,40), TEXT_ALIGN_LEFT )
draw.SimpleText( "Health: " .. hp, "ZombieHud", x-1, y-1, Color(40,40,40), TEXT_ALIGN_LEFT )
draw.SimpleText( "Health: " .. hp, "ZombieHud", x-1, y+1, Color(40,40,40), TEXT_ALIGN_LEFT )
draw.SimpleText( "Health: " .. hp, "ZombieHud", x, y, GAMEMODE:GetHealthColor(), TEXT_ALIGN_LEFT )
-
+
if not LocalPlayer():GetNWBool( "Lord", false ) then return end
-
+
local xpos, ypos = x + w + 20, ScrH() - 70
local w = 200
local scale = math.floor( w * math.Clamp( LocalPlayer():GetNWInt( "ZedDamage", 0 ) / GAMEMODE.RedemptionDamage, 0.01, 1.00 ) )
local pos = 0
-
+
draw.RoundedBox( 4, xpos, ypos, w + 20, h + 20, Color( 0, 0, 0, 180 ) )
-
+
if scale == 200 then
-
+
draw.RoundedBox( 0, xpos + 10, ScrH() - 60, scale, h, Color( 200, 0, 0, 200 ) )
-
+
else
-
+
draw.RoundedBox( 0, xpos + 10, ScrH() - 60, scale, h, Color( 100, 0, 0, 200 ) )
-
+
end
-
+
while pos < scale do
-
- local width = math.min( math.random( 10, 50 ), math.max( scale - pos, 1 ) )
-
- local tbl = {}
+
+ local width = math.min( math.random( 10, 50 ), math.max( scale - pos, 1 ) )
+
+ local tbl = {}
tbl.texture = surface.GetTextureID( "nuke/redead/noise0" .. math.random(1,3) )
tbl.x = xpos + pos + 10
- tbl.y = ScrH() - 60
+ tbl.y = ScrH() - 60
tbl.w = width
tbl.h = h
-
+
if scale == 200 then
-
- tbl.color = Color( 250, 125 + math.sin( CurTime() * 5 ) * 125, 125 + math.sin( CurTime() * 5 ) * 125, 250 )
-
+
+ tbl.color = Color( 250, 125 + math.sin( CurTime() * 5 ) * 125, 125 + math.sin( CurTime() * 5 ) * 125, 250 )
+
else
-
- tbl.color = Color( 250, 0, 0, 200 )
-
+
+ tbl.color = Color( 250, 0, 0, 200 )
+
end
-
+
draw.TexturedQuad( tbl )
-
+
pos = pos + width
-
+
end
-
+
end
-
+
return
-
+
end
-
+
GAMEMODE:HUDDrawTargetID()
-
+
if not LocalPlayer():Alive() and LocalPlayer():Team() != TEAM_UNASSIGNED then
-
- DeathScreenScale = math.Approach( DeathScreenScale, 1, FrameTime() * 0.3 )
-
+
+ DeathScreenScale = math.Approach( DeathScreenScale, 1, FrameTime() * 0.3 )
+
draw.RoundedBox( 0, 0, 0, ScrW(), ScrH() * ( 0.15 * DeathScreenScale ), Color( 0, 0, 0, 180 ) )
draw.RoundedBox( 0, 0, ScrH() - ( ScrH() * ( 0.15 * DeathScreenScale ) ), ScrW(), ScrH() * ( 0.15 * DeathScreenScale ), Color( 0, 0, 0, 180 ) )
-
+
if DeathScreenScale == 1 then
-
+
local dtime = math.Round( DeathScreenTime - CurTime() )
-
+
if dtime > 0 then
-
+
draw.SimpleText( "YOU WILL RESPAWN IN "..dtime.." SECONDS", "DeathFont", ScrW() * 0.5, ScrH() * 0.1, Color( 255, 0, 0 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
-
+
else
-
+
draw.SimpleText( "PRESS ANY KEY TO RESPAWN", "DeathFont", ScrW() * 0.5, ScrH() * 0.1, Color( 255, 0, 0 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
-
+
end
-
+
draw.SimpleText( DeathScreenText or "POOP", "DeathFont", ScrW() * 0.5, ScrH() * 0.9, Color( 255, 0, 0 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
-
+
end
-
+
end
-
+
if not LocalPlayer():Alive() or LocalPlayer():Team() == TEAM_UNASSIGNED then return end //or GAMEMODE:ElementsVisible() then return end
-
+
GAMEMODE:DrawMarkers()
-
+
local xlen = 200
local ylen = 25
local xpos = 5
local ypos = ScrH() - 5 - ylen
-
+
DrawBar( xpos, ypos, xlen, ylen, LocalPlayer():Health(), 150, matHealth, Color( 225, 50, 50, 255 ), Color( 175, 25, 25, 255 ), true )
-
+
ypos = ScrH() - 10 - ylen * 2
-
+
local stam = LocalPlayer():GetNWInt( "Stamina", 0 )
-
+
DrawBar( xpos, ypos, xlen, ylen, stam, 150, matStamina, Color( 50, 100, 225, 255 ), Color( 25, 50, 175, 255 ), false )
-
+
local tbl = GAMEMODE:GetAfflictions()
-
+
for k,v in pairs( tbl ) do
-
+
ypos = ScrH() - ( 10 + ( k * 5 ) ) - ylen * ( 2 + k )
-
+
DrawIcon( xpos, ypos, xlen, ylen, v.Icon, v.Color )
-
+
end
-
+
local ylen = 55
local ypos = 35
-
+
if IsValid( LocalPlayer():GetActiveWeapon() ) and ( LocalPlayer():GetActiveWeapon().AmmoType or "SMG" ) != "Knife" then
-
+
local total = LocalPlayer():GetNWInt( "Ammo" .. ( LocalPlayer():GetActiveWeapon().AmmoType or "SMG" ), 0 )
local ammo = math.Clamp( LocalPlayer():GetActiveWeapon():Clip1(), 0, total )
-
+
local xlen = 50
-
+
DrawAmmo( ScrW() - 5 - xlen, ScrH() - ylen - 5, xlen, ylen, total, "TOTAL" )
DrawAmmo( ScrW() - 10 - xlen * 2, ScrH() - ylen - 5, xlen, ylen, ammo, "AMMO" )
-
+
ypos = ypos + ylen + 5
-
+
end
-
+
DrawCash( ScrW() - 110, ScrH() - ypos, 105, 30, string.upper( LocalPlayer():GetNWInt( "Cash", 0 ) .. " " .. GAMEMODE.CurrencyName .. "s" ) )
GAMEMODE:PaintWeather()
- --[[local radius = 200
+ --[[local radius = 200
local centerx = ScrW() - ( radius / 2 ) - 20
local centery = 20 + ( radius / 2 )
-
+
ArmAngle = ArmAngle + FrameTime() * ArmSpeed
-
+
if ArmAngle > 360 then
ArmAngle = 0 + ( ArmAngle - 360 )
end
-
- surface.SetDrawColor( 255, 255, 255, 220 )
- surface.SetMaterial( matRadar )
- surface.DrawTexturedRect( ScrW() - radius - 20, 20, radius, radius )
-
+
+ surface.SetDrawColor( 255, 255, 255, 220 )
+ surface.SetMaterial( matRadar )
+ surface.DrawTexturedRect( ScrW() - radius - 20, 20, radius, radius )
+
local aimvec = LocalPlayer():GetAimVector()
-
+
for k,v in pairs( PosTable ) do
-
+
local diff = v.Pos - LocalPlayer():GetPos()
- local alpha = 100
-
+ local alpha = 100
+
if IsValid( v.Ent ) and ( v.Ent:IsPlayer() or v.Ent:IsNPC() ) then
-
+
diff = v.Ent:GetPos() - LocalPlayer():GetPos()
-
+
end
-
+
if v.DieTime != -1 then
-
+
alpha = 100 * ( math.Clamp( v.DieTime - CurTime(), 0, BlipTime ) / BlipTime )
-
+
elseif not IsValid( v.Ent ) then
-
+
PosTable[k].DieTime = CurTime() + 1.5
-
+
end
-
+
if math.sqrt( diff.x * diff.x + diff.y * diff.y ) > MaxDist * FadeDist and v.DieTime == -1 then
-
+
PosTable[k].DieTime = CurTime() + 1.5 // Remove the dot because they left our inner circle
-
+
end
-
+
if alpha > 0 and math.sqrt( diff.x * diff.x + diff.y * diff.y ) < MaxDist then
-
+
local addx = diff.x / MaxDist
local addy = diff.y / MaxDist
local addz = math.sqrt( addx * addx + addy * addy )
local phi = math.atan2( addx, addy ) - math.atan2( aimvec.x, aimvec.y ) - ( math.pi / 2 )
-
+
addx = math.cos( phi ) * addz
addy = math.sin( phi ) * addz
-
+
draw.RoundedBox( 4, centerx + addx * ( ( radius - 15 ) / 2 ) - 4, centery + addy * ( ( radius - 15 ) / 2 ) - 4, 5, 5, Color( v.Color.r, v.Color.g, v.Color.b, alpha ) )
-
+
end
-
+
end
-
+
for k,v in pairs( PosTable ) do
-
+
if v.DieTime != -1 and v.DieTime < CurTime() then
-
+
table.remove( PosTable, k )
-
+
end
-
+
end
-
- surface.SetDrawColor( 255, 255, 255, 220 )
+
+ surface.SetDrawColor( 255, 255, 255, 220 )
surface.SetMaterial( matArm )
- surface.DrawTexturedRectRotated( centerx, centery, radius, radius, ArmAngle )
-
+ surface.DrawTexturedRectRotated( centerx, centery, radius, radius, ArmAngle )
+
local ent = LocalPlayer():GetDTEntity( 0 )
-
+
if IsValid( ent ) or StaticPos != Vector(0,0,0) then
-
+
local ang = Angle(0,0,0)
-
+
if IsValid( ent ) then
-
+
ang = ( ent:GetPos() - LocalPlayer():GetShootPos()):Angle() - LocalPlayer():GetForward():Angle()
-
+
local diff = ( ent:GetPos() - LocalPlayer():GetPos() )
-
- if math.sqrt( diff.x * diff.x + diff.y * diff.y ) < MaxDist * FadeDist then
-
+
+ if math.sqrt( diff.x * diff.x + diff.y * diff.y ) < MaxDist * FadeDist then
+
return
-
+
end
-
+
end
-
+
if StaticPos != Vector(0,0,0) then
-
+
ang = ( StaticPos - LocalPlayer():GetShootPos()):Angle() - LocalPlayer():GetForward():Angle()
-
+
end
-
- surface.SetDrawColor( 255, 255, 255, 200 )
+
+ surface.SetDrawColor( 255, 255, 255, 200 )
surface.SetMaterial( matArrow )
surface.DrawTexturedRectRotated( centerx, centery, radius, radius, ang.y )
-
+
end]]
-
+
end
--[[function IsOnRadar( ent )
for k,v in pairs( PosTable ) do
-
+
if v.Ent == ent then
-
+
return v
-
+
end
-
+
end
end]]
@@ -976,75 +976,75 @@ end
function GM:CreateMove( cmd )
if LocalPlayer():Team() == TEAM_ZOMBIES then
-
+
if bit.band( cmd:GetButtons(), IN_DUCK ) > 0 then
-
+
cmd:SetButtons( cmd:GetButtons() - IN_DUCK )
-
+
end
-
+
local ang = cmd:GetViewAngles()
-
+
if ang.r != 0 then
-
+
ang.r = 0
cmd:SetViewAngles( ang )
-
+
end
-
+
else
-
+
local scale = LocalPlayer():GetNWInt( "Radiation", 0 ) / 5
local wobble = 0
-
+
if LocalPlayer():GetNWBool( "Infected", false ) then
-
+
scale = math.max( scale, 0.3 )
-
+
end
-
+
if scale > 0 and LocalPlayer():Alive() then
-
+
wobble = scale * 0.05
-
+
end
-
+
local drunkscale = Drunkness / 10
-
+
if Drunkness > 0 then
-
+
if ( DrunkTimer or 0 ) < CurTime() then
-
+
Drunkness = math.Clamp( Drunkness - 1, 0, 20 )
DrunkTimer = CurTime() + 15
-
+
end
-
+
wobble = wobble + ( drunkscale * 0.08 )
end
-
+
if LocalPlayer():Health() <= 75 and LocalPlayer():Alive() then
-
+
local hscale = math.Clamp( LocalPlayer():Health() / 50, 0, 1 )
wobble = wobble + ( 0.05 - 0.05 * hscale )
-
+
end
-
- ViewWobble = math.Approach( ViewWobble, wobble, FrameTime() * 0.1 )
-
+
+ ViewWobble = math.Approach( ViewWobble, wobble, FrameTime() * 0.1 )
+
local ang = cmd:GetViewAngles()
-
+
if ViewWobble > 0 or ang.r != 0 then
-
+
ang.p = ang.p + math.sin( CurTime() ) * ViewWobble
ang.y = ang.y + math.cos( CurTime() ) * ViewWobble
ang.r = math.Approach( ang.r + math.sin( CurTime() ) * ( ( ViewWobble * 0.5 ) * math.cos( CurTime() * ViewWobble ) ), 0, FrameTime() * 0.5 )
-
+
cmd:SetViewAngles( ang )
-
+
end
-
+
end
end
@@ -1052,14 +1052,14 @@ end
function GrenadeHit( msg )
DisorientTime = CurTime() + 8
-
+
end
usermessage.Hook( "GrenadeHit", GrenadeHit )
function ScreamHit( msg )
ScreamTime = CurTime() + 8
-
+
end
usermessage.Hook( "ScreamHit", ScreamHit )
@@ -1070,7 +1070,7 @@ function DeathScreen( msg )
DeathScreenScale = 0
DeathScreenTime = CurTime() + 10
DeathScreenText = table.Random( GAMEMODE.DeathScreenText[ dteam or TEAM_ARMY ] )
-
+
end
usermessage.Hook( "DeathScreen", DeathScreen )
@@ -1079,18 +1079,18 @@ usermessage.Hook( "DeathScreen", DeathScreen )
local pos = msg:ReadVector()
local burn = msg:ReadShort()
local ent = Entity( msg:ReadShort() )
-
+
if IsValid( ent ) and not ent.Ragdolled then
-
+
ent:BecomeRagdollOnClient()
ent.Ragdolled = true
-
+
end
-
+
if burn == 2 then
-
+
table.insert( BurnTbl, { Pos = pos, Time = CurTime() + 0.5 } )
-
+
end
end
@@ -1118,24 +1118,24 @@ end
usermessage.Hook( "Headless", Headless )
function SetRadarTarget( msg )
-
+
StaticPos = msg:ReadVector()
-
+
end
usermessage.Hook( "StaticTarget", SetRadarTarget )
function AddDrunkness( msg )
-
+
Drunkness = math.Clamp( Drunkness + msg:ReadShort(), 0, 20 )
DrunkTimer = CurTime() + 30
-
+
end
usermessage.Hook( "Drunk", AddDrunkness )
function CashSynch( msg )
-
+
Inv_SetStashCash( msg:ReadShort() )
-
+
end
usermessage.Hook( "CashSynch", CashSynch )
@@ -1143,17 +1143,17 @@ function Radio( msg )
local num = msg:ReadShort()
local snd = msg:ReadString()
-
+
if num == 100 then
-
+
surface.PlaySound( snd )
-
+
else
-
+
if not IsValid( LocalPlayer() ) then return end
-
+
sound.Play( snd, LocalPlayer():GetShootPos(), 180, num, 1 )
-
+
end
end
@@ -1163,11 +1163,11 @@ net.Receive( "StatsSynch", function( len )
local count = net.ReadInt( 8 )
PlayerStats = {}
-
+
for i=1, count do
-
+
table.insert( PlayerStats, { Player = net.ReadEntity(), Stats = net.ReadTable() } )
-
+
end
end )
@@ -1175,11 +1175,11 @@ end )
net.Receive( "InventorySynch", function( len )
LocalInventory = net.ReadTable()
-
+
if GAMEMODE.ItemSheet and GAMEMODE.ItemSheet:IsVisible() then
-
+
GAMEMODE.ItemSheet:RefreshItems( LocalInventory )
-
+
end
end )
@@ -1187,11 +1187,11 @@ end )
net.Receive( "StashSynch", function( len )
LocalStash = net.ReadTable()
-
+
if StashScreen and StashScreen:IsVisible() then
-
+
StashScreen:RefreshItems( LocalStash )
-
+
end
end )