See what you make of Peter's reply here in a thread about Local vs. Instance Variables.
I think it should work, because every time the macro "Run Octopus" executes the macro "Octopus", that will be a separate instance, with its own instance variables. Forgive me if I don't try a test macro, especially since I think it would be much quicker for you to test with what you have already created.
From the same post by Peter: "Use local variables if you want to use or change the variable restricted to only each execution of the macro in which it is defined". So I think your result when substituting local variables is to be expected.
Without knowing the structure of your macro, I might be barking up the wrong tree, but I would just mention that if you happen to be calling macros within "Octopus", you might consider making them subroutines and passing values using the Execute a Subroutine action.