--			local Destructible = ExplosionTouchPart:FindFirstChild("RocketDestructible")
--			if Destructible and Destructible.Value and RadiusFromBlast < BLAST_RADIUS then
--				Destructible.Value = false
--				
--				RunLocalEffect:FireAllClients("FadePart",ExplosionTouchPart)
--				Debris:AddItem(ExplosionTouchPart,3)
--			end

			
			local DeltaPos = ExplosionTouchPart.Position - Position
			local Normal = DeltaPos.magnitude == 0 and Vector3.new(0,1,0) or DeltaPos.unit
			local PartRadius = ExplosionTouchPart.Size.magnitude / 2
			local SurfaceArea = PartRadius * PartRadius
			
			--Set the velocity of the part.
			local Impulse = Normal * BLAST_PRESSURE * SurfaceArea * (1 / 4560)
			local Fraction = 1
			if IsInCharacter then
				Fraction = 1 - math.max(0, math.min(1,(RadiusFromBlast - 2) / BLAST_RADIUS))
			end				
			
			local CurrentVelocity = ExplosionTouchPart.Velocity
			local DeltaVelocity = Impulse / ExplosionTouchPart:GetMass()
			local BodyVelocity = Instance.new("BodyVelocity")
			BodyVelocity.Velocity = CurrentVelocity + DeltaVelocity
			BodyVelocity.Parent = ExplosionTouchPart
			
			local ForceNeeded = 196.2 * ExplosionTouchPart:GetMass()
			BodyVelocity.MaxForce = Vector3.new(ForceNeeded,ForceNeeded,ForceNeeded) * 10 * Fraction
			Debris:AddItem(BodyVelocity,0.2/FORCE_GRANULARITY)
			
			local RotImpulse = Impulse * 0.5 * RadiusFromBlast
			local CurrentRotVelocity = ExplosionTouchPart.RotVelocity
			local MomentOfInertia = (2 * ExplosionTouchPart:GetMass() * RadiusFromBlast * RadiusFromBlast/5) 
			local DeltaRotVelocity = RotImpulse / MomentOfInertia 
			local AngularVelocity = Instance.new("BodyAngularVelocity")
			local TorqueNeeded = 20 * MomentOfInertia
			AngularVelocity.MaxTorque = Vector3.new(TorqueNeeded,TorqueNeeded,TorqueNeeded) * 10 * Fraction
			AngularVelocity.AngularVelocity = CurrentRotVelocity + DeltaRotVelocity
			AngularVelocity.Parent = ExplosionTouchPart
			Debris:AddItem(AngularVelocity,0.2/FORCE_GRANULARITY)
		end
	end
	
	--Create the explosion.
	local Explosion = Instance.new("Explosion")
	Explosion.BlastPressure = 0
	Explosion.BlastRadius = BLAST_RADIUS
	Explosion.Position = Position
	Explosion.Hit:Connect(OnExplosionHit)
	Explosion.Parent = game.Workspace
	
	return Explosion
end

return ExplosionCreator
