freeslot("sfx_boodmg", "sfx_boodth", "sfx_boojmp")
sfxinfo[sfx_boojmp].caption = "Boo jumping"
sfxinfo[sfx_boodmg].caption = "Boo getting hurt"
sfxinfo[sfx_boodth].caption = "Boo getting hurt"
--if this is ultra messy it's because i did not follow a certain order for the
--script, honestly all it matters to me is that it works fine
--pls. please, if you use this could you credit me? :pleading_eyes:
	addHook("PlayerThink", function(player)
		if player.mo.skin == "boo"
		and not (player.mo.state == S_PLAY_STND or player.mo.state == S_PLAY_WAIT)
		local ghost = P_SpawnGhostMobj(player.mo)
		ghost.color = player.mo.color
		ghost.colorized = true
		ghost.fuse = 2
	end
end)
	addHook("PlayerThink", function(player)
		if player.mo.skin == "boo"
		player.pflags = $ | PF_CANCARRY
	end
end)

	addHook("PlayerThink", function(player)
		if player.mo.skin == "boo"
    if (player.cmd.buttons & BT_JUMP)
	and not (player.pflags & PF_STASIS)
	and not (player.pflags & PF_FULLSTASIS)
	and not (player.mo.state == S_PLAY_PAIN)
	local tomatoe = player.mo.momz/20
        P_SetObjectMomZ(player.mo, 1*FRACUNIT, true)
		P_SetObjectMomZ(player.mo, -player.mo.momz/70, true)
		P_SetObjectMomZ(player.mo, -tomatoe, true)
		player.pflags = $ | PF_JUMPED
		end
	end
end)
	addHook("PlayerThink", function(player)
		if player.mo.skin == "boo"
    if (player.cmd.buttons & BT_USE)
	and P_IsObjectOnGround(player.mo)
	and player.rings > 0
        P_SetObjectMomZ(player.mo, 1*FRACUNIT, true)
		end
	end
end)




addHook("PlayerThink", function(player)
    if player.mo and player.mo.skin == "boo"
        if not P_IsObjectOnGround(player.mo)
		and not (player.pflags & PF_JUMPED)
		and (player.mo.state == S_PLAY_SPRING or player.mo.state == S_PLAY_FALL or player.mo.state == S_PLAY_PAIN)
            player.pflags = $ | PF_JUMPED
			player.mo.state = S_PLAY_STND
        end
    end
end)
	

addHook("MobjDamage", function(mobj)
	if mobj.player and mobj.skin == "boo" and not G_IsSpecialStage(gamemap)
		S_StartSound(mobj, sfx_boodmg)
	end
end, MT_PLAYER)


addHook("MobjDeath", function(mobj)
	if mobj.player and mobj.skin == "boo" and not G_IsSpecialStage(gamemap)
		S_StartSound(mobj, sfx_boodth)
	end
end, MT_PLAYER)

	
addHook("PlayerThink", function(player)
    if player.mo and player.mo.skin == "boo"
        player.powers[pw_spacetime] = 999999999999999999
		player.powers[pw_underwater] = 999999999999999999
    end
end)

addHook("JumpSpecial", function(player)
    if player.mo and player.mo.skin == "boo"
        if P_IsObjectOnGround(player.mo)
		S_StartSound(mobj, sfx_boojmp)
        end
    end
end)


		addHook("PlayerThink", function(player)
		if player.mo.skin == "boo"
		and (player.rings < 0) or not (player.cmd.buttons & BT_USE)
		player.cool = false
	end
end)

		addHook("PlayerThink", function(player)
		if player.mo.skin == "boo"
		and player.cool == false
		player.pflags = $ & ~PF_FULLSTASIS
		player.pflags = $ & ~PF_INVIS
	end
end)

		addHook("PlayerThink", function(player)
		if player.mo.skin == "boo"
		and (player.cmd.buttons & BT_USE)
		and not (player.pflags & PF_STASIS)
		and not (player.pflags & PF_FULLSTASIS)
		and not (player.mo.state == S_PLAY_PAIN)
		and (player.rings > 0)
		and not player.powers[pw_super] 
		player.cool = true
		player.mo.state = S_PLAY_FALL
		player.powers[pw_flashing] = 2
		player.pflags = $ | PF_FULLSTASIS
		player.pflags = $ | PF_INVIS
		player.pflags = $ | PF_CANCARRY
		player.mo.momx = 0
		player.mo.momy = 0
		player.mo.momz = 0
		local ghost = P_SpawnGhostMobj(player.mo)
		ghost.fuse = 4
		ghost.state = S_PLAY_PAIN
	end
	if player.cool == false
	and player.mo.skin == "boo"
	and not (player.mo.state == S_PLAY_STND or player.mo.state == S_PLAY_WAIT or player.mo.state == S_PLAY_PAIN or player.mo.state == S_PLAY_WALK or player.mo.state == S_PLAY_RUN or player.mo.state == S_PLAY_PAIN or player.mo.state == S_PLAY_DEAD)
	player.mo.state = S_PLAY_STND
	end
end)

		addHook("PlayerThink", function(player)--thanks to amperbee on the srb2 scripting channel for helping me here, now i can do a lot of ring based stuff!
		if player.mo.skin == "boo" 
		and player.cool == true
		if leveltime % TICRATE == 0 then -- start of a second
		player.rings = $ - 1 --deduct ring
			end
		end
end)

addHook("PlayerThink", function(player)
	if player.mo.skin == "boo"
		player.target = P_LookForEnemies(player, true, true)
		if player.target
			P_SpawnLockOn(player, player.target, S_LOCKON3)
		end
	end	
end)
addHook("PlayerThink", function(player)
	if player.mo.skin == "boo"
		player.target = P_LookForEnemies(player, true, true)
			if (player.cmd.buttons & BT_CUSTOM1)
			if player.target
			and (player.rings > 0)
	and not player.weapondelay
	player.mo.digtimer = 25
    player.weapondelay = 1*TICRATE/4
				P_TeleportMove(player.mo, player.target.x, player.target.y, player.target.z+60*FRACUNIT)
				player.pflags = $ | PF_JUMPED
				S_StartSound(mobj, sfx_zoom)
		player.mo.momx = 0
		player.mo.momy = 0
		player.mo.momz = -5*FRACUNIT
		player.rings = $ - 1
			end
		end
	end	
end)	



