This will save the topic on join, save a topic from user level 11 and refuse a topic from users of other levels. If there is no valid topic, this will erase a non valid one. It clears the variable on part and quit.


Code:
on me:*:join:#: set $+(%,topic_,$chan) $chan(#).topic
on @+11:topic:#: set $+(%,topic_,$chan) $chan(#).topic
on @!*:topic:#: {
  if ($len($eval($+(%,topic_,$chan ),2)) == 0) {
    echo $chan $chr(160)
    echo 04 -t $chan *** NO VALID TOPIC SET
    echo $chan $chr(160)
    topic $chan $chr(160)
  }
  else topic $chan $eval($+(%,topic_,$chan ),2)
}
on *:part:#: unset $+(%,topic_,$chan)
on *:quit: unset %topic_*