
// Variables that are used on both client and server

SWEP.Author			= "Garry Newman"
SWEP.Contact		= ""
SWEP.Purpose		= ""
SWEP.Instructions	= "Left click to spawn a manhack, right click to spawn a Rollermine"

SWEP.Spawnable			= false
SWEP.AdminSpawnable		= true		// Spawnable in singleplayer or by server admins

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.Weapon:EmitSound( ShootSound )
	self.BaseClass.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.Weapon:EmitSound( ShootSound )
	self.BaseClass.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
