Code:
on *:text:*:?:{
  if (%msgpro != Disabled) {
    if !$istok(Q Nickserv X W,$nick,32) {
      if ($($+(%,msg.,$nick), 2) > %msga) {
        .ignore -wnu120 $nick 3
        grcho $nick is ignored for 2 minutes, possible notice flood.
        .notice $nick You're being ignored for 2 minutes, possible notice flood.
      }
      elseif ($calc(%msga - 3) == $($+(%,msg.,$nick), 2)) { .notice $nick Slow down a bit. }
      inc -u $+ %msgu $+(%, msg., $nick)
    }
  }
}

Sometimes changing from multiple if's to if/elseif requires a re-write of the format of the code.

I noticed that you have the command grcho in your code. I didn't know if that's a custom alias that you have, or a typo, so I left it alone.

I also made the presumption that if %msgpro == Disabled, then the entire code would be ignored, rather than how you have it, where the :flood section would still be run irrelevant.