The in game macro system was not designed to allow you to script a class, and does not allow for conditional affects.
The best you could do is not have enough MP for fire 3... and have your macro be
Code:
/ac "Fire III" <t>
/ac "Fire" <t>
This would always attempt to cast fire 3 first, and would fall back on casting Fire, if for any reason you couldn't cast fire 3 (lack of MP)