The !cd wasn't working because if you put the same event more than once in the same remote only the 1st works. Generally you should either use if statements or put each same event in a different remote. Try this script it should work!

There's absolutely nothing wrong with having multiple text events in a single file if the matchtext is exclusive. Combining all text events into a single catch-all is
not the preferred way to structure a script.
The problem is that in your first event you're checking a dynamic
%xrequest. [ $+ [ $nick ] ] and displaying a nonexistant
%xrequest. In your second event you're checking
%xrequest. [ $+ [ $nick ] ] for some reason and you may as well use
unset %xrequest. $+ $2 instead of
set -z