if srb2p return end

freeslot("sfx_gauss")

addHook("PlayerThink", function(player) // Gauss Cannon variable setup
	if player.mo.skin == "doomguy"
		if player.GaussFired == nil
		player.GaussFired = 0
			end
		if player.GaussCooldown == nil
		player.GaussCooldown = 0
		end
	end
end)

addHook("PlayerThink", function(player) // targeting system
	if player.mo.skin == "doomguy"
	and player.target
	and player.target.valid
	and not (player.exiting)
	and player.GaussFired == 0
		P_SpawnLockOn(player, player.target, S_MHICON)
	end
end)

addHook("PlayerThink", function(player) // Gauss Cannon cooldown timer
	if player.mo.skin == "doomguy"
	and player.GaussCooldown >= 1 then
	player.GaussCooldown = $1 - 1
	end
end)

addHook("PlayerThink", function(player) // Gauss Cannon animation timer
	if player.mo.skin == "doomguy"
	and player.GaussFired >= 1 then
	player.GaussFired = $1 - 1
	end
end)

addHook("ThinkFrame", function() // Gauss Cannon button press
for player in players.iterate do
	if player.mo.skin ~= "doomguy" then
		continue
	end
		
	if not (player.cmd.buttons & BT_CUSTOM2)
	and not (player.mo.state == S_PLAY_DFRE)
	and not (player.mo.state == S_PLAY_GFRE)
	and not (player.pflags & PF_FULLSTASIS)
	and not (player.pflags & PF_STASIS)
	and not (player.mo.state == S_PLAY_PAIN)
	and not (player.mo.state == S_PLAY_DEAD)
	and player.rocketspam == 1 then
		player.rocketspam = 0
	end

	if player.rocketspam == nil then
		player.rocketspam = 0
		end
	end
end)

addHook("PlayerThink", function(player) // Gauss Cannon animation
	if player.mo.skin == "doomguy"
	and player.GaussCooldown <= 63
	and player.mo.state == S_PLAY_GFRE
	player.mo.state = S_PLAY_STND
	end
end)

addHook("PlayerThink", function(player) // Gauss Cannon Fire
	if player.mo.skin == "doomguy"
		and player.SecondaryWeaponName == "Gauss Cannon"
		and (player.cmd.buttons & BT_CUSTOM2)
		and player.rocketspam == 0
		and not (player.pflags & PF_FULLSTASIS)
		and not (player.pflags & PF_STASIS)
		and not (player.mo.state == S_PLAY_PAIN)
		and not (player.mo.state == S_PLAY_DEAD)
		and player.GaussCooldown == 0
		if not (player.powers[pw_invulnerability])
			player.powers[pw_invulnerability] = 10
			end
			player.rocketspam = 1
			player.mo.state = S_PLAY_GFRE
			player.GaussCooldown = 80
			S_StartSoundAtVolume(player.mo, sfx_gauss,200)
			P_SpawnThokMobj(player)
				if player.target
				P_SpawnPointMissile(player.mo, player.target.x, player.target.y, player.target.z+player.target.height/2, MT_DOOMGAUSSSUMMONER, player.mo.x, player.mo.y, player.mo.z+player.mo.height/2)
				else
				P_SPMAngle(player.mo, MT_DOOMGAUSSSUMMONER, player.SlayerDirection, 1)
		end
	end
end)

sfxinfo[sfx_gauss].caption = "Gauss Cannon Fired"
