-- FUNCTIONS --

return function(TargetCF)
	
	local spikes = FX.Club.Z:Clone()
	spikes.PrimaryPart.CFrame = TargetCF
	
	local originalSizeList = {
		spikes.Floor["1"].Size,
		spikes.Floor["2"].Size,
		spikes.Floor["3"].Size,
		spikes.Floor["4"].Size,
		spikes.Floor["5"].Size,
		spikes.Floor["6"].Size,
		spikes.Floor["7"].Size,
		spikes.Floor["8"].Size,
		spikes.Floor["9"].Size,
		spikes.Floor["10"].Size,
		spikes.Floor["11"].Size,
	}
	
	local floorSize = spikes.Floor.Size
	spikes.Floor.Size = Vector3.new()
	spikes.Floor.Transparency = 1
	
	coroutine.wrap(function() -- THREAD TO MAKE SPIKES INVISIBLE
		for i, v in pairs(spikes.Floor:GetChildren()) do
			if v:IsA("MeshPart") then
				v.Transparency = 1
				v.Size = Vector3.new()
			end
		end
	end)()
	
	spikes.Parent = workspace.Debris
	
	local impactSFX = RS.Sounds.Club.Z.Impact:Clone()
	impactSFX.Parent = spikes.Floor
	impactSFX:Play()
	
	local expSFX = RS.Sounds.Club.Z.Explosion:Clone()
	expSFX.Parent = spikes.Floor
	expSFX:Play()
	
	coroutine.wrap(function()
		for i, v in pairs(spikes.Floor:GetChildren()) do
			if v:IsA("MeshPart") then
				local spikeIndex = tonumber(v.Name)
				v.Transparency = 0
				TS:Create(v, TweenInfo.new(0.18, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = originalSizeList[spikeIndex]}):Play()
				
				local dustFX = spikes.Dust:Clone()
				dustFX.Parent = v
				dustFX:Emit(dustFX:GetAttribute("EmitCount"))
				
				task.wait(0.015)
			end
		end
	end)()
	
	spikes.Floor.Transparency = 0
	TS:Create(spikes.Floor, TweenInfo.new(0.25, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = floorSize}):Play()
	
	local dustFX = spikes.Dust:Clone()
	dustFX.Parent = spikes.Floor
	dustFX:Emit(dustFX:GetAttribute("EmitCount"))
	
	debrisModule.Shockwave(TargetCF.Position, 25, 55)
	
	task.delay(4, function()
		--coroutine.wrap(function()
			for i, v in pairs(spikes.Floor:GetChildren()) do
				if v:IsA("MeshPart") then
					local spikeIndex = tonumber(v.Name)
					TS:Create(v, TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.In), {Size = Vector3.new()}):Play()
					task.wait(0.025)
				end
			end
		--end)()
		task.wait(0.3)

		TS:Create(spikes.Floor, TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.In), {Size = Vector3.new()}):Play()
		game.Debris:AddItem(spikes, 2)
	end)
end
