function Blood(userid)
	local ent = _EntCreate("env_shooter")
	if ent > 0 then
		_EntSetPos(ent, _EntGetPos(userid))
		_EntSetKeyValue(ent, "m_iGibs", "2")
		_EntSetKeyValue(ent, "m_flVelocity", "600")
		_EntSetKeyValue(ent, "shootmodel", "models/Zombie/Classic_legs.mdl")
		_EntSetKeyValue(ent, "m_flVariance", "5.0")
		_EntSetKeyValue(ent, "simulation", "2")
		_EntSetKeyValue(ent, "spawnflags", "1")
		_EntSpawn(ent)
		for i=1, 20 do
			_EntFire(ent, "shoot", "", i*0.25)
		end
		_EntFire(ent, "kill", "", 11)
	end
	local ent = _EntCreate("env_shooter")
	if ent > 0 then
		_EntSetPos(ent, _EntGetPos(userid))
		_EntSetKeyValue(ent, "m_iGibs", "2")
		_EntSetKeyValue(ent, "m_flVelocity", "600")
		_EntSetKeyValue(ent, "shootmodel", "models/Zombie/Classic_torso.mdl")
		_EntSetKeyValue(ent, "m_flVariance", "5.0")
		_EntSetKeyValue(ent, "simulation", "2")
		_EntSetKeyValue(ent, "spawnflags", "1")
		_EntSpawn(ent)
		for i=1, 20 do
			_EntFire(ent, "shoot", "", i*0.25)
		end
		_EntFire(ent, "kill", "", 11)
	end
end

function ShoopDahWhoop(sender, args)
	if not IsJetHeadAdmin(sender) then return end
	_PlaySound("lazah.mp3") _PlaySound("lazah.mp3")

	_GModText_Start( "ImpactMassive" )
	 _GModText_SetPos( -1, 0.2 )
	 _GModText_SetColor( 255, 255, 255, 200 )
	 _GModText_SetTime( 3, 0.1, 0.5 )
	 _GModText_SetText( "IMA' CHARGIN' MAH LAZAH!!" )
	 _GModText_SetDelay( 0 )
	_GModText_Send( 0, 2399 )

	_GModText_Start( "ImpactMassive" )
	 _GModText_SetPos( -1, 0.3 )
	 _GModText_SetColor( 255, 255, 0, 200 )
	 _GModText_SetTime( 3, 0.1, 0.5 )
	 _GModText_SetText( "IMA' FIRIN' MAH LAZAH!!" )
	 _GModText_SetDelay( 5 )
	_GModText_Send( 0, 2400 )

	_GModText_Start( "ImpactMassive" )
	 _GModText_SetPos( -1, 0.4 )
	 _GModText_SetColor( 255, 0, 0, 255 )
	 _GModText_SetTime( 3, 0.1, 0.5 )
	 _GModText_SetText( "SHOOOOOP DAAAAH WHOOOOOP!!" )
	 _GModText_SetDelay( 11 )
	_GModText_Send( 0, 2401 )
	
	_GModRect_Start( "gmod/white" )
	 _GModRect_SetPos( 0, 0, 1, 1 )
	 _GModRect_SetColor( 0, 0, 0, 75 )
	 _GModRect_SetTime( 7, 5, 0.1 )
	_GModRect_Send( 0, 14150 )
	
	PlayerLookTrace(sender, 9999)
	_TraceLine(_TraceEndPos(), vector3(0,0,1), 9999, sender)
	local pos = vecAdd(_TraceEndPos(), vector3(0,0,-100))
	local glow = _EntCreate("env_lightglow")
	if glow > 0 then
		_EntSetKeyValue(glow, "rendercolor" , "255 255 200")
		_EntSetKeyValue(glow, "VerticalGlowSize", "150")
		_EntSetKeyValue(glow, "HorizontalGlowSize", "150")
		_EntSetKeyValue(glow, "MinDist", 15)
		_EntSetKeyValue(glow, "MaxDist", 4096)
		_EntSetKeyValue(glow, "OuterMaxDist", 190)
		_EntSetKeyValue(glow, "GlowProxySize", "15")
		_EntSetPos(glow, pos)
		_EntSpawn(glow)
		_EntFire(glow, "kill", "", 15)
		for y=1, 15 do
			_EntFire(glow, "color", y*10 .." "..y*10 .." "..y*15, y*0.5)
		end
	end
	AddTimer(6, 1, ShoopFire, pos)
	AddTimer(0.25, 30, ShoopSpark, pos)
end
CONCOMMAND("shoopdahwhoop", ShoopDahWhoop)

function ShoopFire(pos)
	_TraceLine(pos, vector3(0,0,-1), 9999, 9999)
	local endpos = _TraceEndPos()
	local tempent = _EntCreate("info_target")
	local tEmPiNdEx = math.random(1, 1000)
	if tempent > 0 then
		_EntSetPos(tempent, endpos)
		_EntSetName(tempent, tEmPiNdEx.."shooptarget")
		_EntSpawn(tempent)
		_EntFire(tempent, "kill", "", 16)
	end
	for i=1, 2 do
	local laser = _EntCreate("env_laser")
	if laser > 0 then
		_EntSetPos(laser, pos)
		_EntSetKeyValue(laser, "renderamt", "220")
		_EntSetKeyValue(laser, "rendercolor", "25 120 255")
		_EntSetKeyValue(laser, "width", i*256)
		_EntSetKeyValue(laser, "texture", "sprites/laserbeam.spr")
		_EntSetKeyValue(laser, "TextureScroll", "35")
		_EntSetKeyValue(laser, "damage", "250")
		_EntSetKeyValue(laser, "renderfx", "0")
		_EntSetKeyValue(laser, "TextureScroll", "35")
		_EntSetKeyValue(laser, "LaserTarget", tEmPiNdEx.."shooptarget")
		_EntSetKeyValue(laser, "NoiseAmplitude", i*10)
		_EntSpawn(laser)
		_EntFire(laser, "kill", "", 15)
	end
	end
	for i=1, 22 do
		local explosion = _EntCreate("env_explosion")
		if explosion > 0 then
			_EntSetKeyValue(explosion, "spawnflags", "17")
			_EntSetPos(explosion, vecAdd(pos, vector3(0,0,-i*256)))
			_EntSpawn(explosion)
			_EntFire(explosion, "explode", "", i*0.1)
			_EntFire(explosion, "kill", "", (i*0.1)+0.05)
		end
	end
	local effect2 = _EntCreate("point_tesla")
	if effect2 > 0 then
		_EntSetKeyValue(effect2, "m_flRadius", "4048")
		_EntSetKeyValue(effect2, "m_SoundName", "DoSpark")
		_EntSetKeyValue(effect2, "m_Color", "75 200 255")
		_EntSetKeyValue(effect2, "texture", "effects/laser1.vmt")
		_EntSetKeyValue(effect2, "beamcount_min", "26")
		_EntSetKeyValue(effect2, "beamcount_max", "32")
		_EntSetKeyValue(effect2, "thick_min", "150")
		_EntSetKeyValue(effect2, "thick_max", "300")
		_EntSetKeyValue(effect2, "lifetime_min", "1.0")
		_EntSetKeyValue(effect2, "lifetime_max", "2.0")
		_EntSetKeyValue(effect2, "interval_min", "0.1")
		_EntSetKeyValue(effect2, "interval_max", "0.3")
		_EntSetPos(effect2, endpos)
		_EntSpawn(effect2)
		_EntActivate(effect2)
		_EntFire(effect2, "kill", "", 15)
		for i=1, 75 do
			_EntFire(effect2, "DoSpark", "", (i*0.2)+2)
		end
	end
	AddTimer(4, 1, ShoopExplode, endpos)
end

function ShoopExplode(pos)
	_GModRect_Start( "gmod/white" )
	 _GModRect_SetPos( 0, 0, 1, 1 )
	 _GModRect_SetColor( 255, 255, 255, 255 )
	 _GModRect_SetTime( 1, 0.1, 3 )
	_GModRect_Send( 0, 14151 )
	for i=1, 30 do
		AddTimer(i*0.35, 1, _PlaySound, "ambient/explosions/explode_"..math.random(1,8)..".wav")
	end
	local glow = _EntCreate("env_lightglow")
	if glow > 0 then
		_EntSetKeyValue(glow, "rendercolor" , "255 255 200")
		_EntSetKeyValue(glow, "VerticalGlowSize", "120")
		_EntSetKeyValue(glow, "HorizontalGlowSize", "150")
		_EntSetKeyValue(glow, "MinDist", 15)
		_EntSetKeyValue(glow, "MaxDist", 4096)
		_EntSetKeyValue(glow, "OuterMaxDist", 200)
		_EntSetKeyValue(glow, "GlowProxySize", "15")
		_EntSetPos(glow, vecAdd(pos, vector3(0,0,256)))
		_EntSpawn(glow)
		_EntFire(glow, "kill", "", 13)
		for y=1, 15 do
			_EntFire(glow, "color", y*10 .." "..y*10 .." "..y*15, y*0.5)
		end
	end
	local trail = _EntCreate("env_smoketrail")
	if trail > 0 then
		_EntSetPos(trail, vecAdd(pos, vector3(0,0,32)))
		_EntSetKeyValue(trail, "spawnrate", "300")
		_EntSetKeyValue(trail, "lifetime", "8")
		_EntSetKeyValue(trail, "startcolor", "2 200 255")
		_EntSetKeyValue(trail, "endcolor", "2 200 255")
		_EntSetKeyValue(trail, "minspeed", "0")
		_EntSetKeyValue(trail, "maxspeed", "100")
		_EntSetKeyValue(trail, "startsize", "50")
		_EntSetKeyValue(trail, "endsize", "75")
		_EntSetKeyValue(trail, "spawnradius", "512")
		_EntSetKeyValue(trail, "firesprite", "sprites/redglow3.spr")
		_EntSetKeyValue(trail, "smokesprite", "sprites/redglow3.spr")
		_EntSpawn(trail)
		_EntFire(trail, "kill", "", 15.0)
	end
	trail = 0
	trail = _EntCreate("env_smoketrail")
	if trail > 0 then
		_EntSetPos(trail, vecAdd(pos, vector3(0,0,32)))
		_EntSetKeyValue(trail, "spawnrate", "300")
		_EntSetKeyValue(trail, "lifetime", "8")
		_EntSetKeyValue(trail, "startcolor", "0 0 0")
		_EntSetKeyValue(trail, "endcolor", "0 0 0")
		_EntSetKeyValue(trail, "minspeed", "400")
		_EntSetKeyValue(trail, "maxspeed", "600")
		_EntSetKeyValue(trail, "startsize", "90")
		_EntSetKeyValue(trail, "endsize", "125")
		_EntSetKeyValue(trail, "spawnradius", "256")
		_EntSetKeyValue(trail, "firesprite", "sprites/redglow3.spr")
		_EntSetKeyValue(trail, "smokesprite", "sprites/redglow3.spr")
		_EntSpawn(trail)
		_EntFire(trail, "kill", "", 13.0)
	end
	AddTimer(0.2, 60, ShoopOrb, pos)
	AddTimer(0.1, 100, ShoopOrb2, pos)
	_util.ScreenShake(pos, 30, 360.0, 7, 9999)
end

function ShoopOrb(pos)
	local newpos = vecAdd(pos, vector3(math.random(-2048, 2048), math.random(-2048, 2048), math.random(0, 512)))
	local entities = _EntitiesFindInSphere(pos, 2024)
	for i,ent in entities do
		if _phys.HasPhysics(ent) then
			_TraceAttack(ent, ent, ent, 200)
		end
	end
	local explosion = _EntCreate("prop_combine_ball")
	if explosion > 0 then
		_EntSetPos(explosion, newpos)
		_EntSpawn(explosion)
		_EntFire(explosion, "explode", "", 0)
		_EntFire(explosion, "kill", "", 0.05)
	end
	ShoopSpark(pos)
end

function ShoopOrb2(pos)
	local newpos = vecAdd(pos, vector3(math.random(-2048, 2048), math.random(-2048, 2048), math.random(0, 512)))
	local entities = _EntitiesFindInSphere(pos, 2024)
	for i,ent in entities do
		if _phys.HasPhysics(ent) then
			_TraceAttack(ent, ent, ent, 200)
		end
	end
	local exp = _EntCreate("env_ar2explosion")
	if exp > 0 then
		_EntSetKeyValue(exp, "spawnflags", "17")
		_EntSetPos(exp, newpos)
		_EntSpawn(exp)
		_EntFire(exp, "explode", "", 0)
		_EntFire(exp, "kill", "", 0.1)
	end
	for i=1, 2 do
	local glow = _EntCreate("env_lightglow")
	if glow > 0 then
		_EntSetKeyValue(glow, "rendercolor" , "15 15 0")
		_EntSetKeyValue(glow, "VerticalGlowSize", "60")
		_EntSetKeyValue(glow, "HorizontalGlowSize", "60")
		_EntSetKeyValue(glow, "MinDist", 15)
		_EntSetKeyValue(glow, "MaxDist", 4096)
		_EntSetKeyValue(glow, "OuterMaxDist", 200)
		_EntSetKeyValue(glow, "GlowProxySize", "3")
		_EntSetPos(glow, newpos)
		_EntSpawn(glow)
		_EntFire(glow, "kill", "", math.random(2, 3))
		for y=1, 15 do
			_EntFire(glow, "color", y*15 .." "..y*15 .." "..y*10, y*0.25)
		end
	end
	end
end

function ShoopSpark(pos)
	local effect2 = _EntCreate("point_tesla")
	if effect2 > 0 then
		_EntSetKeyValue(effect2, "m_flRadius", "512")
		_EntSetKeyValue(effect2, "m_SoundName", "DoSpark")
		_EntSetKeyValue(effect2, "m_Color", "75 200 255")
		_EntSetKeyValue(effect2, "texture", "effects/laser1.vmt")
		_EntSetKeyValue(effect2, "beamcount_min", "8")
		_EntSetKeyValue(effect2, "beamcount_max", "12")
		_EntSetKeyValue(effect2, "thick_min", "14")
		_EntSetKeyValue(effect2, "thick_max", "48")
		_EntSetKeyValue(effect2, "lifetime_min", "1.0")
		_EntSetKeyValue(effect2, "lifetime_max", "1.75")
		_EntSetKeyValue(effect2, "interval_min", "0.1")
		_EntSetKeyValue(effect2, "interval_max", "0.3")
		_EntSetPos(effect2, vecAdd(pos, vector3(math.random(-1024, 1024), math.random(-1024, 1024), math.random(-3000, 0))))
		_EntSpawn(effect2)
		_EntActivate(effect2)
		_EntFire(effect2, "kill", "", 0.5)
		_EntFire(effect2, "DoSpark", "", 0.1)
		_EntFire(effect2, "DoSpark", "", 0.2)
	end
end
