I don’t think that’s the issue. The parameters should still be defined. But if in the other subroutines, you define parameters with the same name they will overwrite each other, so when you go back, the parameter has the value of one of the subroutines instead of their original value. All subroutines exist in the same scope is what I’m trying to say.
That’s right. Every time you call a subroutine you put it on a stack (a pile), to get back to the original line before calling the first subroutine you have to remove each plate from the stack one by one.
That’s not possible. Strings are not like numbers. To do what you want you’d have to perform heavy string manipulation, like copying and pasting. That’s another reason why I said it would be best to use variables instead of a long string to emulate an array. One variable to each companion like this instead of a string:
Cslib have some subroutine that can help you manipulate string, but again, this is not something I recommend. It’s convoluted and hard even for more advanced programmers. If you’re still set on doing it like that, I’d suggest taking a look at @Twiger_Fluff’s lib for emulating arrays with string (which you’re already trying to do).