My guess (and I have never written a game) is that any program as complicated as Warcraft is going to use pretty much EVERY design pattern. I could easily see them using factories, adapters, bridges, composites, facades, proxies, commands, iterators, observers, strategies...and MVC. Your question to me seems overly broad. It's almost like asking "what class should I use?". The answer is 'whichever one is most appropriate for the problem you are currently trying to solve', and writing a game there are going to be HUNDREDS (if not more) problems to solve, and each will require it's own solution.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
My advice would be - don't start with patterns - instead, start with lots and lots and lots of use cases and diagrams of information flow.
Before any code is written be able to walk players through the major interactions "on paper" - patterns should become apparent at this stage. Of course, it helps if you are familiar with patterns other people have deduced so you can recognize them.
3 x 5 cards for use cases and large expanses of white-board for diagrams are your friends.