It's best you use $wildsite and local variables like so:
on $*:text:/^(!|@)Calc( |$)/Si:#:{
var %n = notice $nick, %m = $iif($regml(1) == !,%n,msg #), %2 = $strip($replace($2-,x,*))
if (!$ignore($wildsite)) {
if (!$strip($2)) {
%n please use !calc <calculation>
}
else {
%m Calculating: %2
%m Result is: $calc(%2)
.ignore -u4 $wildsite
}
}
}
Edit - I see what you're getting at. You only want the trigger to ignore for the else condition. Then it's best you notice the $nick to check for $2, so that it doesn't appear flood-y if messaged in the channel when someone messes with you.
I've taken the liberty of making a couple of adjustments.