//i love dust effect, i made all effects
freeslot("S_WALKDUST","SPR_CLEF","sfx_pstep","S_MACH3CLOUD","SPR_DSHC","S_MACH2CLOUD","SPR_SDSC","S_FIREONTHEGROUND","SPR_FRGD")
states[S_MACH3CLOUD] = {
	sprite = SPR_DSHC,
	frame = A|FF_PAPERSPRITE|FF_ANIMATE,
	tics = 16,
	var1 = 8,
	var2 = 2,
	nextstate = S_DEATHSTATE
}

states[S_WALKDUST] = {
	sprite = SPR_CLEF,
	frame = A|FF_ANIMATE,
	tics = 28,
	var1 = 14,
	var2 = 2,
	nextstate = S_DEATHSTATE
}

states[S_MACH2CLOUD] = {
	sprite = SPR_SDSC,
	frame = A|FF_PAPERSPRITE|FF_ANIMATE,
	tics = 10,
	var1 = 5,
	var2 = 2,
	nextstate = S_DEATHSTATE
}

states[S_FIREONTHEGROUND] = {
	sprite = SPR_FRGD,
	frame = A|FF_ANIMATE,
	tics = (H+1)*9,
	nextstate = S_NULL,
	var1 = H,
	var2 = 3
}

//crtl+c and crtl+v, crtl+c and crtl+v, crtl+c and crtl+v.... 
addHook("ThinkFrame", do
	for player in players.iterate
		local mo = player.mo
		if P_IsObjectOnGround(mo)
		and player.pizzanoreal
		and (mo.state == S_PLAY_MACH4PZNO or mo.state == S_PZNO_MACHHIT or mo.state == S_PLAY_DASH or mo.state == S_PLAY_MACH5PZNOREAL or mo.state == S_PLAY_MACH5PZNO or mo.state == S_PLAY_MACH3_PAD)
		and leveltime%10 == 0
			for i = -1, 1, 2
				local ang = i * ANG10
				local factor = FixedMul(4*mo.scale, cos(ang))
				local x = P_ReturnThrustX(mo, player.drawangle + ANGLE_180 + ang, 24*mo.scale)
				local y = P_ReturnThrustY(mo, player.drawangle + ANGLE_180 + ang, 24*mo.scale)
				local dust = P_SpawnMobjFromMobj(mo, x, y, 0, MT_THOK)
				dust.momx = FixedMul(factor, cos(dust.angle - i*ANGLE_90))
				dust.momy = FixedMul(factor, sin(dust.angle - i*ANGLE_90))
				dust.scale = mo.scale
				dust.angle = R_PointToAngle2(dust.x, dust.y, mo.x, mo.y)
				dust.state = S_MACH3CLOUD
				dust.momx = FixedMul(factor, cos(dust.angle - i*ANGLE_90))
				dust.momy = FixedMul(factor, sin(dust.angle - i*ANGLE_90))
			end
		end
	end
end)
addHook("ThinkFrame", do
	for player in players.iterate
		local mo = player.mo
		if P_IsObjectOnGround(mo)
		and (mo.state == S_PLAY_MACHC1 or mo.state == S_PLAY_SLIDE or mo.state == S_PLAY_PZNO_REDIRECT or mo.state == S_PLAY_SKID or mo.state == S_PLAY_SKID_STOP or mo.state == S_PLAY_RUN)
		and player.pizzanoreal
		and leveltime%10 == 0
			for i = -1, 1, 2
				local ang = i * ANG10
				local factor = FixedMul(4*mo.scale, cos(ang))
				local x = P_ReturnThrustX(mo, player.drawangle + ANGLE_180 + ang, 24*mo.scale)
				local y = P_ReturnThrustY(mo, player.drawangle + ANGLE_180 + ang, 24*mo.scale)
				local dust = P_SpawnMobjFromMobj(mo, x, y, 0, MT_THOK)
                dust.momx = FixedMul(factor, cos(dust.angle - i*ANGLE_90))
				dust.momy = FixedMul(factor, sin(dust.angle - i*ANGLE_90))
				dust.scale = mo.scale
				dust.angle = R_PointToAngle2(dust.x, dust.y, mo.x, mo.y)
				dust.state = S_MACH2CLOUD
			end
		end
	end
end)
addHook("ThinkFrame", do
	for player in players.iterate
		local mo = player.mo
		if player.pizzanoreal
		and P_IsObjectOnGround(mo)
		and ((mo.state == S_PLAY_MACH4PZNO) or (mo.state == S_PLAY_MACH5PZNOREAL))
		and leveltime%10 == 0
			for i = -1, 1, 2
				local ang = i * ANG10
				local factor = FixedMul(4*mo.scale, cos(ang))
				local x = P_ReturnThrustX(mo, player.drawangle + ANGLE_180 + ang, 24*mo.scale)
				local y = P_ReturnThrustY(mo, player.drawangle + ANGLE_180 + ang, 24*mo.scale)
				local dust = P_SpawnMobjFromMobj(mo, x, y, 0, MT_THOK)
				dust.momx = FixedMul(factor, cos(dust.angle - i*ANGLE_90))
				dust.momy = FixedMul(factor, sin(dust.angle - i*ANGLE_90))
				dust.scale = mo.scale
				dust.angle = R_PointToAngle2(dust.x, dust.y, mo.x, mo.y)
				dust.state = S_FIREONTHEGROUND
				dust.momx = FixedMul(factor, cos(dust.angle - i*ANGLE_90))
				dust.momy = FixedMul(factor, sin(dust.angle - i*ANGLE_90))
			end
		end
	end
end)

addHook("ThinkFrame", do
	for player in players.iterate
	   if player.walkcould == nil
			player.walkcould = 0
		end
	   if P_IsObjectOnGround(player.mo)
	   and player.pizzanoreal
	   and ((player.mo.state == S_PLAY_WALK) or (player.mo.state == S_PLAY_CROUNCH_MOVE))
	   and player.speed >=10
			player.walkcould = $+1
			else
			player.walkcould = 0
	  end
	  	if player.walkcould >= 17
			local step = P_SpawnMobj(player.mo.x,player.mo.y,player.mo.z,MT_THOK)
			step.state = S_WALKDUST
			player.walkcould = 0
	  end
end
end)