First off, add some debugging:
alias topics { echo -s >TOPICS triggered | scon -at1 echotopics }
alias -l echotopics {
echo -s >ECHOTOPICS triggered
var %n = $chan(0)
echo -s >CHAN(0) is $chan(0)
while (%n) {
echo $color(Topic text) -t $chan(%n) $+(* Topic is ',$chan(%n).topic,')
echo -s >N is %n
dec %n
}
}
Secondly, I see that for local aliases $isalias indeed returns $false. You could simply try to rename both aliases, e.g. topics1 and echotopics1 and see if it then works.
I especially doubt the alias echotopics already exists though.