
//divethok
addHook("PlayerThink", function(player)
	if (player.mo and player.mo.valid and player.mo.skin == "rafael")
		if not (player.cmd.buttons & BT_SPIN) then
			player.Spintapready = true
			player.Spintapping = false
		elseif player.Spintapready then
			player.Spintapping = true
			player.Spintapready = false
		else
			player.Spintapping = false
		end
		
		player.rafadivup = $ or 0
		if player.Spintapping and player.mo.health
		and player.mo.state != S_PLAY_SUPER_TRANS1
		and player.mo.state != S_PLAY_SUPER_TRANS2
		and player.mo.state != S_PLAY_SUPER_TRANS3
		and player.mo.state != S_PLAY_SUPER_TRANS4
		and player.mo.state != S_PLAY_SUPER_TRANS5
		and player.mo.state != S_PLAY_SUPER_TRANS6
		and not player.exiting then
			if P_IsObjectOnGround(player.mo) == false and player.smakuse == false then
				P_SetObjectMomZ(player.mo, (0 - 20*FRACUNIT), false) 
				S_StartSound(player.mo,sfx_zoom, player)
				player.smakuse = true
				player.mo.state = S_PLAY_FALL
				player.timon = true
				player.pflags = $ |PF_SPINNING
			end
		elseif P_IsObjectOnGround(player.mo) == true then
			player.smakuse = false
			player.timon = false
			player.timer = 0
		elseif player.timon == true then
			player.timer = $ + 1
			P_SpawnGhostMobj(player.mo)
			if player.timer >= 5 and player.timer <= 35 and player.mo.momz <= 15*FRACUNIT then
				player.rafadivup = $ + 4
				P_SetObjectMomZ(player.mo, (player.rafadivup*FRACUNIT), false)  
				player.mo.state = S_PLAY_ROLL
				player.pflags = $ & ~PF_SPINNING
				S_StartSound(player.mo,sfx_spndsh, player)
				
			elseif player.timer >= 1*TICRATE - 1*TICRATE/2 and player.timer <= 2*TICRATE then
				player.mo.state = S_PLAY_SPRING
				player.pflags = $ & ~PF_SPINNING
				player.rafadivup = 0 - 20
				player.timon = false
				player.timer = 0
			end
		end
	end
end)

//skidattack
addHook("PlayerThink", function(player)
	if (player.mo and player.mo.valid and player.mo.skin == "rafael")
		if player.mo.state == S_PLAY_SKID
			local sectorthing = P_PlayerTouchingSectorSpecial(player, 0, 0)
			if (leveltime % 2 == 0) then
				if not (BattleFuncSet) or (CBW_Battle and CBW_Battle.SkinVars) then
					P_SpawnSpinMobj(player, MT_RAFASKID)
				end
			elseif sectorthing.valid then
				for fof in sectorthing.ffloors()
					if fof.valid and (fof.flags & FF_BUSTUP) and (fof.flags & FF_EXISTS)
					and (abs(fof.topheight - player.mo.z) <= 40*player.mo.scale) then
						EV_CrumbleChain(player.sectorthing, fof)
					end
				end
			end
		end
	end
end)

//makes attack attack
addHook("PlayerCanDamage", function(player, mobj)
	if player.mo and player.mo.valid and player.mo.skin == "rafael"
	and player.mo.state == S_PLAY_SKID
	return true end
end)

addHook("PlayerThink", function(player)
	if (player.mo and player.mo.valid and player.mo.skin == "rafael")
		if player.mo.state == S_PLAY_SPRING
		and (player.mo.eflags & MFE_SPRUNG) then
			player.rafacurlready = true
		end
	end
end)

addHook("PlayerThink", function(player)
	if (player.mo and player.mo.valid and player.mo.skin == "rafael")
		if P_IsObjectOnGround(player.mo) then
			player.rafacurlready = false
		elseif player.rafacurlready
		and player.Spintapping then
			player.mo.state = S_PLAY_ROLL
			player.pflags = $ |PF_SPINNING
		end
	end
end)


//sees if we press Spin
addHook("PlayerThink", function(player)
	if player.mo.skin == "rafael" then
		if not (player.cmd.buttons & BT_SPIN) then
			player.Spintapready = true
			player.Spintapping = false
		elseif player.Spintapready then
			player.Spintapping = true
			player.Spintapready = false
		else
			player.Spintapping = false
		end
	end
end)