
// Variables that are used on both client and server

SWEP.Author			= ""
SWEP.Contact		= ""
SWEP.Purpose		= ""
SWEP.Instructions	= "Shoot a prop to attach a Manhack.\nRight click to attach a rollermine."

SWEP.Spawnable			= false
SWEP.AdminSpawnable		= true

SWEP.ViewModel			= "models/weapons/v_pistol.mdl"
SWEP.WorldModel			= "models/weapons/w_pistol.mdl"

SWEP.Primary.ClipSize		= -1
SWEP.Primary.DefaultClip	= -1
SWEP.Primary.Automatic		= false
SWEP.Primary.Ammo			= "none"

SWEP.Secondary.ClipSize		= -1
SWEP.Secondary.DefaultClip	= -1
SWEP.Secondary.Automatic	= false
SWEP.Secondary.Ammo			= "none"

local ShootSound = Sound( "Metal.SawbladeStick" )

/*---------------------------------------------------------
	Reload does nothing
---------------------------------------------------------*/
function SWEP:Reload()
end

/*---------------------------------------------------------
   Think does nothing
---------------------------------------------------------*/
function SWEP:Think()	
end


/*---------------------------------------------------------
	PrimaryAttack
---------------------------------------------------------*/
function SWEP:PrimaryAttack()

	local tr = self.Owner:GetEyeTrace()
	if ( tr.HitWorld ) then return end
	
	local effectdata = EffectData()
		effectdata:SetOrigin( tr.HitPos )
		effectdata:SetNormal( tr.HitNormal )
		effectdata:SetMagnitude( 8 )
		effectdata:SetScale( 1 )
		effectdata:SetRadius( 16 )
	util.Effect( "Sparks", effectdata )
	
	self:EmitSound( ShootSound )

	self:ShootEffects( self )
	
	
	// The rest is only done on the server
	if (!SERVER) then return end
	
	// Make a manhack
	local ent = ents.Create( "npc_manhack" )
		ent:SetPos( tr.HitPos + self.Owner:GetAimVector() * -16 )
		ent:SetAngles( tr.HitNormal:Angle() )
	ent:Spawn()

	// Weld it to the object that we hit
	local weld = constraint.Weld( tr.Entity, ent, tr.PhysicsBone, 0, 0 )
	
	undo.Create("Manhack")
		undo.AddEntity( weld )
		undo.AddEntity( nocl )
		undo.AddEntity( ent )
		undo.SetPlayer( self.Owner )
	undo.Finish()
	
end

/*---------------------------------------------------------
	SecondaryAttack
---------------------------------------------------------*/
function SWEP:SecondaryAttack()

	local tr = self.Owner:GetEyeTrace()
	if ( tr.HitWorld ) then return end
	
	self:EmitSound( ShootSound )
	self:ShootEffects( self )
	
	local effectdata = EffectData()
		effectdata:SetOrigin( tr.HitPos )
		effectdata:SetNormal( tr.HitNormal )
		effectdata:SetMagnitude( 8 )
		effectdata:SetScale( 1 )
		effectdata:SetRadius( 16 )
	util.Effect( "Sparks", effectdata )
	
	
	// The rest is only done on the server
	if (!SERVER) then return end
	
	// Make a manhack
	local ent = ents.Create( "npc_rollermine" )
		ent:SetPos( tr.HitPos + self.Owner:GetAimVector() * -16 )
		ent:SetAngles( tr.HitNormal:Angle() )
	ent:Spawn()

	// Weld it to the object that we hit
	local weld = constraint.Weld( tr.Entity, ent, tr.PhysicsBone, 0, 0 )
	
	undo.Create("Rollermine")
		undo.AddEntity( weld )
		undo.AddEntity( nocl )
		undo.AddEntity( ent )
		undo.SetPlayer( self.Owner )
	undo.Finish()
	
end


/*---------------------------------------------------------
   Name: ShouldDropOnDie
   Desc: Should this weapon be dropped when its owner dies?
---------------------------------------------------------*/
function SWEP:ShouldDropOnDie()
	return false
end
