diff --git a/lua/arccw/server/sv_takedamage.lua b/lua/arccw/server/sv_takedamage.lua new file mode 100644 index 00000000..405bd5d4 --- /dev/null +++ b/lua/arccw/server/sv_takedamage.lua @@ -0,0 +1,18 @@ +hook.Add("EntityTakeDamage", "ArcCW_DoAttDMG", function(ent, dmg) + if !ent:IsPlayer() then return end + + local wpn = ent:GetActiveWeapon() + + if !wpn.ArcCW then return end + + for i, k in pairs(wpn.Attachments) do + if !k.Installed then continue end + local atttbl = ArcCW.AttachmentTable[k.Installed] + + if atttbl.Hook_PlayerTakeDamage then + atttbl.Hook_PlayerTakeDamage(wpn, {slot = i, atthp = k.HP, dmg = dmg}) + end + end + + wpn:SendAttHP() +end) \ No newline at end of file diff --git a/lua/arccw/shared/attachments/default.lua b/lua/arccw/shared/attachments/default.lua index c8a6a5fb..080e0fff 100644 --- a/lua/arccw/shared/attachments/default.lua +++ b/lua/arccw/shared/attachments/default.lua @@ -54,8 +54,9 @@ att.Model = "" att.HideModel = false att.ModelBodygroups = "" att.ModelSkin = 0 -att.ModelScale = 1 +att.ModelScale = Vector(1, 1, 1) att.ModelOffset = Vector(0, 0, 0) +att.OffsetAng = Angle(0, 0, 0) att.ModelIsShield = false att.DrawFunc = function(self, element, wm) end @@ -78,6 +79,9 @@ att.DamageOnShoot = 0 att.DamageOnReload = 0 att.DamagePerSecond = 0 +-- {slot = int, atthp = float, dmg = DamageInfo} +att.Hook_PlayerTakeDamage = function(wep, data) end + -- {slot = int, oldhp = float, dmg = float} att.Hook_AttTakeDamage = function(wep, data) end diff --git a/lua/weapons/arccw_base/sh_reload.lua b/lua/weapons/arccw_base/sh_reload.lua index a1fbce0a..2b541dcc 100644 --- a/lua/weapons/arccw_base/sh_reload.lua +++ b/lua/weapons/arccw_base/sh_reload.lua @@ -125,6 +125,15 @@ function SWEP:Reload() self:SetNWBool("reloading", true) + for i, k in pairs(self.Attachments) do + if !k.Installed then continue end + local atttbl = ArcCW.AttachmentTable[k.Installed] + + if atttbl.DamageOnReload then + self:DamageAttachment(i, atttbl.DamageOnReload) + end + end + if !self.ReloadInSights then self:ExitSights() self.Sighted = false diff --git a/sound/weapons/arccw/supp_break.wav b/sound/weapons/arccw/supp_break.wav new file mode 100644 index 00000000..f6e27176 Binary files /dev/null and b/sound/weapons/arccw/supp_break.wav differ