addHook("PlayerThink", function(player)
	if player.mo and player.mo.skin == "banjokazzoie" then
		if player.redplumes == nil then
			player.redplumes = 0
		end
		if player.goldplumes == nil then
			player.goldplumes = 0
		end
		
		if player.redplumesmax == nil then
			player.redplumesmax = 2100
		end
		if player.goldplumesmax == nil then
			player.goldplumesmax = 10
		end
		if player.gold == nil then
			player.gold = 0
		end
		
		if player.powers[pw_invulnerability] > 0 then
			player.mo.color = SKINCOLOR_GOLD
		else
			player.mo.color = skins[player.mo.skin].prefcolor
		end
		
		if player.powers[pw_sneakers] > 0 then
			player.charflags = $|SF_RUNONWATER
		else
			player.charflags = $ & ~SF_RUNONWATER
		end
	end
end)

freeslot("sfx_cnegg", "sfx_cfegg", "sfx_ciegg", "sfx_redp", "sfx_goldp")

addHook("PlayerThink", function(player)
	if player.mo and player.mo.skin == "banjokazzoie" then
		if (player.powers[pw_shield] == SH_ARMAGEDDON) then
			player.powers[pw_shield] = 0
			player.beggs = $ + 10
		end
		if (player.powers[pw_shield] & SH_PROTECTFIRE) or (player.powers[pw_shield] & SH_FIREFLOWER) then
			player.powers[pw_shield] = 0
			player.feggs = $ + 20
			S_StartSound(player.mo, sfx_cfegg)
			player.mo.color = skins[player.mo.skin].prefcolor
		end
		if (player.powers[pw_shield] & SH_PROTECTWATER) or (player.powers[pw_shield] & SH_PROTECTELECTRIC) then
			player.powers[pw_shield] = 0
			player.ieggs = $ + 400
			S_StartSound(player.mo, sfx_ciegg)
		end
		
		player.redplumes = min($, player.redplumesmax)
		player.goldplumes = min($, player.goldplumesmax)
	end
end)

addHook("TouchSpecial", function(ring, toucher)
	if toucher and toucher.valid and toucher.player.mo.skin == "banjokazzoie" then
		P_AddPlayerScore(toucher.player, 100)
		S_StartSound(ring, sfx_cnegg)
		P_GivePlayerRings(toucher.player, 1)
		if toucher.player.neggs ~= nil then
			toucher.player.neggs = min($ + 1, 100)
		end
		P_RemoveMobj(ring)
	end
end, MT_RING)

addHook("HUD", function(v, player, cam)
	if player.mo and player.mo.skin == "banjokazzoie"
		local xpos = hudinfo[HUD_RINGS].x
		local ypos = hudinfo[HUD_RINGS].y
		
		v.drawString(xpos, ypos + 30, ("redplumes: " + (player.redplumes) + " / " + (player.redplumesmax)), V_PERPLAYER|V_REDMAP)
		v.drawString(xpos, ypos + 40, ("goldplumes: " + (player.goldplumes) + " / " + (player.goldplumesmax)), V_PERPLAYER|V_YELLOWMAP)
	end
end, "game")

addHook("PlayerThink", function(player)
	if player.mo and player.mo.skin == "banjokazzoie" then
		for mo in mobjs.iterate() do
			if mo and mo.valid and mo ~= player.mo
			and mo.health and mo.health > 0
			and not ((mo.flags & MF_NOCLIP) or (mo.flags & MF_NOBLOCKMAP))
			and (mo.flags & MF_MONITOR)
			and R_PointToDist2(player.mo.x, player.mo.y, mo.x, mo.y) < (mo.radius + player.mo.radius + 50*player.mo.scale)
			and (player.mo.z + player.mo.height + 50*player.mo.scale) > mo.z
			and player.mo.z < (mo.z + mo.height + 50*player.mo.scale) then
				P_KillMobj(mo, player.mo, player.mo, 1)
			end
		end
	end
end)

addHook("MobjDeath", function(mobj, inf, src, dmgtype)
	if src.player and src.player and src.skin == "banjokazzoie" then
		src.health = $ + 2
		src.player.rings = $ + 10
		mobj.health = 0
		mobj.state = mobjinfo[mobj.type].deathstate
		return true
	end
end, MT_RING_BOX)

addHook("MobjDeath", function(mobj, inf, src, dmgtype)
	if src.player and src.player and src.skin == "banjokazzoie" then
		src.health = src.player.hpmax
		mobj.health = 0
		mobj.state = mobjinfo[mobj.type].deathstate
		return true
	end
end, MT_FORCE_BOX)

addHook("MobjDeath", function(mobj, inf, src, dmgtype)
	if src.player and src.player and src.skin == "banjokazzoie" then
		src.health = src.player.hpmax
		mobj.health = 0
		mobj.state = mobjinfo[mobj.type].deathstate
		return true
	end
end, MT_FORCE_GOLDBOX)

addHook("MobjDeath", function(mobj, inf, src, dmgtype)
	if src.player and src.player and src.skin == "banjokazzoie" then
		src.player.powers[pw_sneakers] = 22*TICRATE
		S_ChangeMusic("SNAKE", false, player)
		mobj.health = 0
		mobj.state = mobjinfo[mobj.type].deathstate
		return true
	end
end, MT_SNEAKERS_BOX)

addHook("MobjDeath", function(mobj, inf, src, dmgtype)
	if src.player and src.player and src.skin == "banjokazzoie" then
		src.player.powers[pw_sneakers] = 22*TICRATE
		S_ChangeMusic("SNAKE", false, player)
		mobj.health = 0
		mobj.state = mobjinfo[mobj.type].deathstate
		return true
	end
end, MT_SNEAKERS_GOLDBOX)

addHook("MobjDeath", function(mobj, inf, src, dmgtype)
	if src.player and src.player and src.skin == "banjokazzoie" then
		S_StartSound(src.player.mo, sfx_goldp)
		src.player.goldplumes = min($ + 10, src.player.goldplumesmax)
		mobj.health = 0
		mobj.state = mobjinfo[mobj.type].deathstate
		return true
	end
end, MT_INVULN_BOX)

addHook("MobjDeath", function(mobj, inf, src, dmgtype)
	if src.player and src.player and src.skin == "banjokazzoie" then
		S_StartSound(src.player.mo, sfx_goldp)
		src.player.goldplumes = min($ + 10, src.player.goldplumesmax)
		mobj.health = 0
		mobj.state = mobjinfo[mobj.type].deathstate
		return true
	end
end, MT_INVULN_GOLDBOX)

addHook("MobjDeath", function(mobj, inf, src, dmgtype)
	if src.player and src.player and src.skin == "banjokazzoie" then
		S_StartSound(src.player.mo, sfx_redp)
		src.player.redplumes = min($ + 700, src. player.redplumesmax)
		mobj.health = 0
		mobj.state = mobjinfo[mobj.type].deathstate
		return true
	end
end, MT_WHIRLWIND_BOX)

addHook("MobjDeath", function(mobj, inf, src, dmgtype)
	if src.player and src.player and src.skin == "banjokazzoie" then
		S_StartSound(src.player.mo, sfx_redp)
		src.player.redplumes = min($ + 700, src. player.redplumesmax)
		mobj.health = 0
		mobj.state = mobjinfo[mobj.type].deathstate
		return true
	end
end, MT_WHIRLWIND_GOLDBOX)