on $*:TEXT:/^[@!.]calc/Si:#: { if (!$enabled($chan,calc)) { halt } var %show = $iif($left($1,1) == @,msg $chan,notice $nick) var %string = 1 set %orig $2- /tokenize 38 $replace($remove($replace($2-,pi,3.1415),$chr(32),!,@,#,$,a,c,d,e,f,g,h,i,j,l,n,o,p,q,r,s,u,v,w,x,y,z),*,$chr(38) $+ * $+ $chr(38),+,$chr(38) $+ + $+ $chr(38),/,$chr(38) $+ / $+ $chr(38),-,$chr(38) $+ - $+ $chr(38),^,$chr(38) $+ ^ $+ $chr(38)) var %one = $replace($1-,m,kk,b,kkk,t,kkkk) if $count(%one,k) > 20 { %show Error: Number Too Large | halt } while ([ $chr(36) $+ [ %string ] ]) { var %stringcurrent = $replace([ $chr(36) $+ [ %string ] ],m,kk,b,kkk,t,kkkk) var %stringmult = $calc(1000^$count(%stringcurrent,k)) if $count(%stringcurrent,$chr(46)) > 1 { %show Error: Multiple Deciamals | halt } if (($remove(%stringcurrent,k,m,b,t) !isnum) && ($chr(38) !isin $replace(%stringcurrent,*,&,/,&,-,&,+,&,^,&,.,&))) { %show Error: Missing Coefficient | halt } if $mid(%stringcurrent,$calc($pos(%stringcurrent,$chr(46))+1),1) == k { %show Error: Invalid Format | halt } if k isin %stringcurrent { var %one = $replace(%one,%stringcurrent,[ $calc($remove(%stringcurrent,k) * %stringmult) ]) } inc %string } $iif(((%orig = 0) && ($calc(%one) = 0)),%show Error: Number Too Small,%show [Calc]: %orig $chr(61) $bytes($calc(%one),db)) }