local speeddust = 0
local dusttype = 1
local speedwind = 1
local camzoom = 1

//I'm too scared to change the code so I'll just keep speed dust
//Don't you dare add it back mr.dataminer

local function Wind(mobj)
    local r = mobj.radius / FRACUNIT
    local explosion = P_SpawnMobj(
        mobj.x + (P_RandomRange(r, -r) * FRACUNIT),
        mobj.y + (P_RandomRange(r, -r) * FRACUNIT),
        mobj.z + (P_RandomKey(mobj.height / FRACUNIT) * FRACUNIT) - mobj.height/2,
        MT_THOK)
    explosion.sprite = SPR_RAIN
    explosion.renderflags = $|RF_PAPERSPRITE
    explosion.angle = R_PointToAngle2(0, 0, mobj.momx, mobj.momy)
    explosion.rollangle = R_PointToAngle2(0, 0, R_PointToDist2(0, 0, mobj.momx, mobj.momy), -mobj.momz) + ANGLE_90
    explosion.source = mobj
    explosion.blendmode = AST_ADD
end

addHook('ThinkFrame', do
	for player in players.iterate do
		if player.mo.skin == "frontiersclassic" and player.mo.scale and player.mo.friction and player.mo.movefactor then
			local skin = skins[player.mo.skin]
			local grounded = P_IsObjectOnGround(player.mo)
			if player.mo.state ~= S_PLAY_DEAD and player.mo.state ~= S_PLAY_DRWN then
				-- Speed Dust --
				if speeddust == 1 then
					if grounded then
						if player.speed >= 52*FRACUNIT then
							if dusttype == 1 then
								local dust1 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_DUST)							
								dust1.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust1.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust1.momz = P_RandomRange(0, 4)*FRACUNIT
								dust1.destscale = FRACUNIT/2
							elseif dusttype == 2 then
								local dust1 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_SPINDUST)							
								dust1.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust1.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust1.momz = P_RandomRange(0, 4)*FRACUNIT
								dust1.destscale = FRACUNIT/2
							end
							if dusttype == 1 then
								local dust2 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_DUST)							
								dust2.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust2.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust2.momz = P_RandomRange(0, 4)*FRACUNIT
								dust2.destscale = FRACUNIT/2
							elseif dusttype == 2 then
								local dust2 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_SPINDUST)							
								dust2.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust2.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust2.momz = P_RandomRange(0, 4)*FRACUNIT
								dust2.destscale = FRACUNIT/2
							end
						end
						if player.speed >= 68*FRACUNIT then
							if dusttype == 1 then
								local dust3 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_DUST)							
								dust3.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust3.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust3.momz = P_RandomRange(0, 4)*FRACUNIT
								dust3.destscale = FRACUNIT/2
							elseif dusttype == 2 then
								local dust3 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_SPINDUST)							
								dust3.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust3.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust3.momz = P_RandomRange(0, 4)*FRACUNIT
								dust3.destscale = FRACUNIT/2
							end
							if dusttype == 1 then
								local dust4 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_DUST)							
								dust4.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust4.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust4.momz = P_RandomRange(0, 4)*FRACUNIT
								dust4.destscale = FRACUNIT/2
							elseif dusttype == 2 then
								local dust4 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_SPINDUST)							
								dust4.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust4.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust4.momz = P_RandomRange(0, 4)*FRACUNIT
								dust4.destscale = FRACUNIT/2
							end
							if dusttype == 1 then
								local dust5 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_DUST)							
								dust5.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust5.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust5.momz = P_RandomRange(0, 4)*FRACUNIT
								dust5.destscale = FRACUNIT/2
							elseif dusttype == 2 then
								local dust5 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-10, 10) * FRACUNIT, P_RandomRange(-10, 10) * FRACUNIT, 0, MT_SPINDUST)							
								dust5.momx = P_RandomRange(-4, 4)*FRACUNIT
								dust5.momy = P_RandomRange(-4, 4)*FRACUNIT
								dust5.momz = P_RandomRange(0, 4)*FRACUNIT
								dust5.destscale = FRACUNIT/2
							end
						end
					end
				end
				-- Speed Wind --
				if speedwind == 1 then
					if player.boosting then
		        		Wind(player.mo)
		        	end
					if player.boosting then
		        		Wind(player.mo)
		        	end
		        end
	        	-- Camera Zoom --
				if camzoom == 1 then
					if player.boosting then
						player.camerascale = skin.camerascale*5/4
					elseif player.boosting == false
						player.camerascale = skin.camerascale*9/8
					else
						player.camerascale = skin.camerascale
					end
		        end
			end
		end
	end
end)

COM_AddCommand("speeddust", function(player, arg)
	if arg == "on" then
		speeddust = 1
	elseif arg == "off" then
		speeddust = 0
	end
end)

COM_AddCommand("dusttype", function(player, arg)
	if arg == "1" then
		dusttype = 1
	elseif arg == "2" then
		dusttype = 2
	end
end)

COM_AddCommand("speedwind", function(player, arg)
	if arg == "on" then
		speedwind = 1
	elseif arg == "off" then
		speedwind = 0
	end
end)

COM_AddCommand("camzoom", function(player, arg)
	if arg == "on" then
		camzoom = 1
	elseif arg == "off" then
		camzoom = 0
	end
end)