Would it be possible to use user levels instead of the %watch variable? It's cleaner, more correct, one less test you need to script, allows for address and ident checking too. Just type /guser watched nicknamehere when nicknamehere is online and he'll be added to the list. You can also just edit the user list directly , just hit alt-r alt-u
I reversed the $read logic, if it returns something it's bad, instead of if it returns nothing it's ok. Not that if the checked line equals 0 or $false, then it will ge wrong, but I guess that won't be a problem.
If you can narrow the trigger text down more, it would be better. Maybe use some & & & & to signify different words, so that the script knows that it needs at least that many words to trigger.
on watched:TEXT:*check1*:#channelname: {
if (check2 isin $1-) && (check3 isin $1-) && (check4 isin $1-) {
if ((fail1 isin $1-) || ($read(c:\check.txt,w,$9)) return
; do your stuff here
}
}
With the current non-informative checks I can't help you further, but there is a possibility that all the isin tests can be replaced by a single $regex, but then I'd need at least 5 different messages with what to match and what not and what can change and how etc...