summaryrefslogtreecommitdiff
path: root/entities/weapons/rad_knife/shared.lua
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2016-05-30 14:42:09 -0400
committerAlexander Pickering <alexandermpickering@gmail.com>2016-05-30 14:42:09 -0400
commit2736f498f30220b858fc6fac23e7ddc4a597df6d (patch)
tree374ceadedb654b00e09dac321620a8320830f734 /entities/weapons/rad_knife/shared.lua
downloadredead-2736f498f30220b858fc6fac23e7ddc4a597df6d.tar.gz
redead-2736f498f30220b858fc6fac23e7ddc4a597df6d.tar.bz2
redead-2736f498f30220b858fc6fac23e7ddc4a597df6d.zip
Inital commit
Diffstat (limited to 'entities/weapons/rad_knife/shared.lua')
-rw-r--r--entities/weapons/rad_knife/shared.lua199
1 files changed, 199 insertions, 0 deletions
diff --git a/entities/weapons/rad_knife/shared.lua b/entities/weapons/rad_knife/shared.lua
new file mode 100644
index 0000000..8b06c17
--- /dev/null
+++ b/entities/weapons/rad_knife/shared.lua
@@ -0,0 +1,199 @@
+if SERVER then
+
+ AddCSLuaFile( "shared.lua" )
+
+end
+
+if CLIENT then
+
+ SWEP.ViewModelFlip = false
+
+ SWEP.PrintName = "Knife"
+ SWEP.IconLetter = "j"
+ SWEP.Slot = 1
+ SWEP.Slotpos = 0
+
+end
+
+SWEP.HoldType = "knife"
+
+SWEP.Base = "rad_base"
+
+SWEP.ViewModel = "models/weapons/v_knife_t.mdl"
+SWEP.WorldModel = "models/weapons/w_knife_t.mdl"
+
+SWEP.IsSniper = false
+SWEP.AmmoType = "Knife"
+
+SWEP.Primary.Hit = Sound( "Weapon_Knife.HitWall" )
+SWEP.Primary.HitFlesh = Sound( "Weapon_Knife.Hit" )
+SWEP.Primary.Sound = Sound( "Weapon_Knife.Slash" )
+SWEP.Primary.Deploy = Sound( "Weapon_Knife.Deploy" )
+SWEP.Primary.Recoil = 3.5
+SWEP.Primary.Damage = 35
+SWEP.Primary.NumShots = 1
+SWEP.Primary.Delay = 0.950
+
+SWEP.Primary.ClipSize = 1
+SWEP.Primary.Automatic = true
+
+function SWEP:GetViewModelPosition( pos, ang )
+
+ return pos, ang
+
+end
+
+function SWEP:SecondaryAttack()
+
+end
+
+function SWEP:PrimaryAttack()
+
+ self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay )
+ self.Weapon:MeleeTrace( self.Primary.Damage )
+
+ if SERVER then
+
+ self.Owner:AddStamina( -1 )
+
+ end
+
+end
+
+function SWEP:Think()
+
+end
+
+function SWEP:MeleeTrace( dmg )
+
+ self.Owner:SetAnimation( PLAYER_ATTACK1 )
+
+ self.Weapon:SendWeaponAnim( ACT_VM_MISSCENTER )
+
+ if CLIENT then return end
+
+ local pos = self.Owner:GetShootPos()
+ local aim = self.Owner:GetAimVector() * 64
+
+ local line = {}
+ line.start = pos
+ line.endpos = pos + aim
+ line.filter = self.Owner
+
+ local linetr = util.TraceLine( line )
+
+ local tr = {}
+ tr.start = pos + self.Owner:GetAimVector() * -5
+ tr.endpos = pos + aim
+ tr.filter = self.Owner
+ tr.mask = MASK_SHOT_HULL
+ tr.mins = Vector(-20,-20,-20)
+ tr.maxs = Vector(20,20,20)
+
+ local trace = util.TraceHull( tr )
+ local ent = trace.Entity
+ local ent2 = linetr.Entity
+
+ if not IsValid( ent ) and IsValid( ent2 ) then
+
+ ent = ent2
+
+ end
+
+ if not IsValid( ent ) then
+
+ self.Owner:EmitSound( self.Primary.Sound, 100, math.random(90,110) )
+ return
+
+ elseif not ent:IsWorld() then
+
+ self.Weapon:SendWeaponAnim( ACT_VM_HITCENTER )
+ self.Owner:AddStamina( -2 )
+
+ if ent:IsPlayer() then
+
+ ent:EmitSound( self.Primary.HitFlesh, 100, math.random(90,110) )
+
+ if ent:Team() != self.Owner:Team() then
+
+ ent:TakeDamage( dmg, self.Owner, self.Weapon )
+
+ self.Owner:DrawBlood()
+
+ local ed = EffectData()
+ ed:SetOrigin( trace.HitPos )
+ util.Effect( "BloodImpact", ed, true, true )
+
+ end
+
+ elseif string.find( ent:GetClass(), "npc" ) then
+
+ ent:TakeDamage( dmg, self.Owner, self.Weapon )
+ ent:EmitSound( self.Primary.HitFlesh, 100, math.random(90,110) )
+
+ self.Owner:DrawBlood()
+
+ local ed = EffectData()
+ ed:SetOrigin( trace.HitPos )
+ util.Effect( "BloodImpact", ed, true, true )
+
+ elseif !ent:IsPlayer() then
+
+ if string.find( ent:GetClass(), "breakable" ) then
+
+ ent:TakeDamage( 50, self.Owner, self.Weapon )
+
+ if ent:GetClass() == "func_breakable_surf" then
+
+ ent:Fire( "shatter", "1 1 1", 0 )
+
+ end
+
+ end
+
+ ent:EmitSound( self.Primary.Hit, 100, math.random(90,110) )
+
+ local phys = ent:GetPhysicsObject()
+
+ if IsValid( phys ) then
+
+ if ent.IsWooden then
+
+ ent:Fire( "break", 0, 0 )
+
+ else
+
+ ent:SetPhysicsAttacker( self.Owner )
+ ent:TakeDamage( 10, self.Owner, self.Weapon )
+
+ phys:Wake()
+ phys:ApplyForceCenter( self.Owner:GetAimVector() * phys:GetMass() * 200 )
+
+ end
+
+ end
+
+ end
+
+ end
+
+end
+
+function SWEP:DrawHUD()
+
+end
+
+function SWEP:Deploy()
+
+ if SERVER then
+
+ self.Owner:DrawViewModel( true )
+ self.Owner:EmitSound( self.Primary.Deploy, 100, math.random(90,110) )
+
+ end
+
+ self.Weapon:SendWeaponAnim( ACT_VM_DRAW )
+
+ return true
+
+end