You can't goto a point outside of the current function/event.

Also, go back to how you previously had it with if (%thechan == on). Gets rid of the need for the goto's.

Now, that being said, %tell1 = & %tell2 = won't work that way. $nick and $chan have no scope outside of an event. So.. yeah.. not so much help there asmodeo..

Now, back to the original code, as it isn't so bad.

First.. The %tc variables are throw-away. From what I saw, there's no reason to remember then, so don't bother with the [ $+ [ $nick ] ] stuff.. Just set it, use it, then toss it away (/var = good for this).

As events aren't triggered simultaneously, there's no chance of contamination of variables.

When within a script, you don't need to use the '/' command identifier. Every line is considered a command, so you can remove all of the /'s.

As for why it doesn't work, asmodeo got that bit right. You're trigger for all the bits and pieces is basically the same, for all the same level of user. Combining it into one event with the structured 'if' is the right way to go for that.

Anyway, just some thoughts.