I am using a LocalScript to reference the tool, do I need to use a :WaitForChild() to wait for the tool to load in or do I not need to wait for the tool to load in?
local tool = script.Parent
OR
local tool = script.Parent.Parent:WaitForChild("Tool")
Yes, you must. It is important to use WaitForChild when referencing objects client wise, as we cannot guarentee when the object loads in.
DevForum -
Roblox does not guarantee the time or order in which objects are replicated from the server to the client. This can cause scripts to break when indexing objects that do not exist yet.