Tool variable persistance problem.

I need to be able to use a variable in every scope of the script.
Normally I would declare a global variable and that would work, but it fails to load if I do that.
When that did not work I tried a TOOL.Var and a self.Var but neither work in full scope.

There seems to be a solution to the problem using TOOL.ClientConVar[“whatever”], But that seems to only be able to be set as a defualt and cannot be changed. That is clearly not the case just by observing how the tool works, however I cannot figure out how they did it.
Hopefully I’m not the only one to have this problem, also that the question is somewhat coherant at 1am.

My Code: