$v1 is carried over from aliases to ones that called them, so when $prot.hss evaluates, since it contains an if statement, the value of $v1 is changed from that point on. what you can do is make sure $v1 evaluates before $prot.hss:
if (3 isnum) echo -a hadd -m $prot.hss txt.ft [ $v1 ]
look at /help brackets