aboutsummaryrefslogtreecommitdiff
path: root/gamemode/core/combat
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2017-08-24 18:08:10 -0400
committerAlexander Pickering <alexandermpickering@gmail.com>2017-08-24 18:08:10 -0400
commit61bc16dae5a1b61bcd237d9f0be36125829d95b1 (patch)
treec9deebda1190e23073240d2bbe4ecabee668d742 /gamemode/core/combat
parent0f3211e4fb0cf27684079e6195995947c9f9027f (diff)
downloadartery-61bc16dae5a1b61bcd237d9f0be36125829d95b1.tar.gz
artery-61bc16dae5a1b61bcd237d9f0be36125829d95b1.tar.bz2
artery-61bc16dae5a1b61bcd237d9f0be36125829d95b1.zip
Various update
Diffstat (limited to 'gamemode/core/combat')
-rw-r--r--gamemode/core/combat/cl_damage.lua71
-rw-r--r--gamemode/core/combat/sv_damage.lua10
-rw-r--r--gamemode/core/combat/sv_weaponswing.lua5
3 files changed, 86 insertions, 0 deletions
diff --git a/gamemode/core/combat/cl_damage.lua b/gamemode/core/combat/cl_damage.lua
new file mode 100644
index 0000000..fee8175
--- /dev/null
+++ b/gamemode/core/combat/cl_damage.lua
@@ -0,0 +1,71 @@
+--Displays numbers for damage
+
+local drawables = {
+ [1] = {
+ starttime = CurTime(),
+ ammt = 5,
+ startpos = LocalPlayer():GetEyeTrace().HitPos
+ }
+}
+
+net.Receive("art_damage_ent",function()
+ print("Notified of damage")
+ local who = net.ReadEntity()
+ local dmg = net.ReadDouble()
+
+ --A random vector in the entity
+ local aa,bb = who:WorldSpaceAABB()
+ local mr = math.random
+ local rx,ry,rz = mr(aa.x,bb.x),mr(aa.y,bb.y),mr(aa.z,bb.z)
+ local drawinfo = {
+ starttime = CurTime(),
+ ammt = dmg,
+ startpos = Vector(rx,ry,rz)
+ }
+
+ --Max 255 drawables at once
+ drawables[#drawables+1 % 255] = drawinfo
+end)
+
+hook.Add( "PostDrawOpaqueRenderables", "art_damage_draw", function()
+ local trace = LocalPlayer():GetEyeTrace()
+ local angle = trace.HitNormal:Angle()
+
+ local lpp,sp = LocalPlayer():GetPos(),trace.HitPos
+ local to = lpp - sp
+ local matang = to:Angle()
+
+ matang.r = 90
+ matang.y = matang.y+90
+ matang.p = 0
+
+ render.DrawLine( trace.HitPos, trace.HitPos + 8 * angle:Forward(), Color( 255, 0, 0 ), true )
+ render.DrawLine( trace.HitPos, trace.HitPos + 8 * -angle:Right(), Color( 0, 255, 0 ), true )
+ render.DrawLine( trace.HitPos, trace.HitPos + 8 * angle:Up(), Color( 0, 0, 255 ), true )
+
+ surface.SetFont( "Trebuchet24" )
+ local lpp = LocalPlayer():GetPos()
+ for k,v in pairs(drawables) do
+ local ct = CurTime()
+ local delta = ct - v.starttime
+ local alpha = 255 * (math.log(v.ammt) - (delta/2))
+ if alpha < 1 then
+ drawables[k] = nil
+ continue
+ end
+ local lam = math.log(v.ammt)
+ local lad = (20/lam)
+ local opx = math.sin(delta) * lad
+ local opy = math.cos(delta) * lad
+ local dpos = v.startpos + Vector(opx,opy,delta*100*(1/v.ammt)+20)
+ local matang = (lpp - dpos):Angle()
+ matang.r = 90
+ matang.y = matang.y + 90
+ matang.p = 0
+ surface.SetTextColor( 255, 255, 255, alpha )
+ cam.Start3D2D( dpos, matang, lam )
+ surface.SetTextPos(0,0)
+ surface.DrawText(tostring(v.ammt))
+ cam.End3D2D()
+ end
+end )
diff --git a/gamemode/core/combat/sv_damage.lua b/gamemode/core/combat/sv_damage.lua
new file mode 100644
index 0000000..654dd82
--- /dev/null
+++ b/gamemode/core/combat/sv_damage.lua
@@ -0,0 +1,10 @@
+--Displays littler numbers when something takes damage
+
+util.AddNetworkString("art_damage_ent")
+
+hook.Add("EntityTakeDamage","art_damage_numbers",function(ent,dmg)
+ net.Start("art_damage_ent")
+ net.WriteEntity(ent)
+ net.WriteDouble(dmg:GetDamage())
+ net.Broadcast()
+end)
diff --git a/gamemode/core/combat/sv_weaponswing.lua b/gamemode/core/combat/sv_weaponswing.lua
index 29afd7a..f754000 100644
--- a/gamemode/core/combat/sv_weaponswing.lua
+++ b/gamemode/core/combat/sv_weaponswing.lua
@@ -86,6 +86,11 @@ function ws.doSwing(weapon,ply,callback)
for k,v in pairs(hitthings) do
callback(v)
end
+ if #hitthings == 0 then
+ if weapon.onMiss then
+ weapon:onMiss(ply)
+ end
+ end
end)
end