diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2016-05-30 14:42:09 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2016-05-30 14:42:09 -0400 |
| commit | 2736f498f30220b858fc6fac23e7ddc4a597df6d (patch) | |
| tree | 374ceadedb654b00e09dac321620a8320830f734 /gamemode/cl_hudstains.lua | |
| download | redead-2736f498f30220b858fc6fac23e7ddc4a597df6d.tar.gz redead-2736f498f30220b858fc6fac23e7ddc4a597df6d.tar.bz2 redead-2736f498f30220b858fc6fac23e7ddc4a597df6d.zip | |
Inital commit
Diffstat (limited to 'gamemode/cl_hudstains.lua')
| -rw-r--r-- | gamemode/cl_hudstains.lua | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/gamemode/cl_hudstains.lua b/gamemode/cl_hudstains.lua new file mode 100644 index 0000000..9b2b637 --- /dev/null +++ b/gamemode/cl_hudstains.lua @@ -0,0 +1,81 @@ + +local BloodTable = {} + +local function DrawBlood() + + if #BloodTable < 1 then return end + + for i=1, #BloodTable do + + if BloodTable[i] then + + local scale = math.Clamp( ( BloodTable[i].DieTime - CurTime() ) / BloodTable[i].Die, 0, 1 ) + + if scale == 0 then + + BloodTable[i].Remove = true + + else + + local alpha = math.floor( BloodTable[i].Alpha * scale ) + + surface.SetTexture( BloodTable[i].Mat ) + //surface.SetDrawColor( 250, 10, 10, alpha ) + surface.SetDrawColor( 175, 10, 10, alpha ) + surface.DrawTexturedRect( BloodTable[i].X, BloodTable[i].Y, BloodTable[i].Size, BloodTable[i].Size )//, BloodTable[i].Rot ) + + end + + end + + end + + for k,v in pairs( BloodTable ) do + + if v.Remove then + + table.remove( BloodTable, k ) + + break + + end + + end + +end +hook.Add( "HUDPaint", "BloodPaint", DrawBlood ) + +StainMats = { "nuke/blood/Blood1", +"nuke/blood/Blood2", +"nuke/blood/Blood3", +"nuke/blood/Blood4", +"nuke/blood/Blood5", +"nuke/blood/Blood6", +"nuke/blood/Blood7" } + +function AddStain( msg ) + + local num = 1 + + if msg then + + num = msg:ReadShort() + + end + + for i=1, num do + + local count = #BloodTable + 1 + + local size = math.random( 256, 1024 ) + local x = math.random( size * -0.5, ScrW() - ( size * 0.5 ) ) + local y = math.random( size * -0.5, ScrH() - ( size * 0.5 ) ) + local rand = math.Rand( 3.5, 6.5 ) + + BloodTable[count] = { Size = size, X = x, Y = y, Mat = surface.GetTextureID( table.Random( StainMats ) ), Die = rand, DieTime = CurTime() + rand, Alpha = math.random( 150, 250 ) } + + end + +end + +usermessage.Hook( "BloodStain", AddStain ) |
