freeslot("MT_SCARFBOOM", "S_SCARFBOOM", "SPR_SCAF", "sfx_alyo")

mobjinfo[MT_SCARFBOOM] = {
	spawnstate = S_SCARFBOOM,
	deathstate = S_CACOFIRE_EXPLODE1,
	deathsound = sfx_fire,
	speed = 120*FRACUNIT,
	radius = 32*FRACUNIT,
	height = 32*FRACUNIT,
	flags = MF_NOBLOCKMAP|MF_MISSILE|MF_NOGRAVITY
}

states[S_SCARFBOOM] = {
	tics = -1,
	sprite = SPR_SCAF,
	frame = A|FF_FULLBRIGHT,
	action = A_SetScale,
	var1 = 5,
	var2 = 1,
	nextstate = S_SCARFBOOM
}

addHook("ThinkFrame", do
	for player in players.iterate
		if (player.mo and player.mo.valid and player.mo.skin == "sunkarf")
			/*if not (player.powers[pw_carry] == CR_NIGHTSMODE)
				player.mo.rollangle = $+ANGLE_22h
			end*/
			if player.powers[pw_super]
				if (player.cmd.buttons & BT_JUMP)
				and not (P_IsObjectOnGround(player.mo))
				and player.playerstate == PST_LIVE
					P_SetObjectMomZ(player.mo, FRACUNIT*3/2, 1)
				end
			end
			if not (player.mo.puk1d)
				player.mo.puk1d = 0
			end
			if not (player.cmd.buttons & BT_CUSTOM1)
				player.mo.puk1d = 0
			end
			if not S_SoundPlaying(player.mo,sfx_alyo)
				S_StartSound(player.mo, sfx_alyo)
			end
			if (player.cmd.buttons & BT_CUSTOM1)
			and not (player.mo.state == S_PLAY_PAIN)
			and not player.weapondelay
			and player.playerstate == PST_LIVE
			and not player.exiting
			and not player.powers[pw_carry]
			and not (player.pflags & PF_STASIS)
			and not (player.mo.state == S_PLAY_SUPER_TRANS3)
			and not (player.mo.tracer and player.mo.tracer.type == MT_TUBEWAYPOINT)
			and not (player.pflags & PF_SPINNING)
			and player.mo.puk1d == 0
				player.mo.puk1d = 1
				player.weapondelay = 2*TICRATE
				local a = P_SpawnGhostMobj(player.mo)
				a.color = SKINCOLOR_RED
				a.colorized = true
				a.blendmode = AST_ADD
				local puk = P_SpawnGhostMobj(player.mo)
				puk.state = S_CACOFIRE_EXPLODE1
				P_SpawnPlayerMissile(player.mo, MT_SCARFBOOM, MF2_SCATTER)
				local bom1 = P_SPMAngle(player.mo, MT_SCARFBOOM, player.mo.angle-ANG2, 1, MF2_SCATTER)
				local bom2 = P_SPMAngle(player.mo, MT_SCARFBOOM, player.mo.angle+ANG2, 1, MF2_SCATTER)
				local bom3 = P_SPMAngle(player.mo, MT_SCARFBOOM, player.mo.angle, 1, MF2_SCATTER)
				if bom3 and bom3.valid
					bom3.momz = $1 + FixedMul(2*FRACUNIT, player.mo.scale)
				end
				local bom4 = P_SPMAngle(player.mo, MT_SCARFBOOM, player.mo.angle, 1, MF2_SCATTER)
				if bom4 and bom4.valid
					bom4.momz = $1 - FixedMul(2*FRACUNIT, player.mo.scale)
				end
				return true
			end
		end
	end
end)