State Machine : Module Scripts and Animator Replication issues

Yes, basically everywhere you require() a certain module you will get the same value that the module returns. The way we create instances of classes is by having a function in the module which creates a new table with the class properties and metatable, and then returns it. The convention is for this creator function to be called ‘new’.

When you create an instance of your class it should look like this:

    local MyClass = require(Path.To.Class.Module)
    local MyClassInstance = MyClass.new(1, 2, 3) -- Initial setup values are passed into the .new() function.
    MyClassInstance:DoSomething() -- Calling a method of the class. (Notice this uses : while .new() doesn't)
    
    local MyClassInstance2 = MyClass.new(5, 2, 8) -- Second instance of MyClass.
    MyClassInstance2:DoSomethingElse(true, false)

You can read more about how object orientation + inheritance in Lua works here and here.

As for your animation replication issue I’m not really sure. I hope I half helped you.