First of all, there's a syntax error on line 6.
Even if there was no syntax error, it'll constantly be applying the [VIP] tag because of your check on line 6.
if(!StrStr(StripMLControlChars(%t),"[VIP]"))
strStr(sourceString, searchString) returns where it found searchString in sourceString, NOT a boolean. In your check, it's always returning 0 after the first time it's applied the tags, because the first instance of [VIP] it finds, starts at character 0. So instead you should change it to:
if(strStr(stripMLControlChars(%t), "[VIP]") == -1)