Korvs is right. Triggering things based on PLAYERS is the best bet really. If you are dead set on having mobs that 'roam' why not just have a 'roam' action that occurs randomly ONLY IF PLAYERS EXIST ON THE MAP.
You can use what korv is talking with modified a bit to create fairly dynamic roaming patterns still.
IE: player screen code causes the mobs to perform the chase/attack actions but you can use say... double screen size to control more robust behavior like boss reactions to players, mob groupings, wanders, etc as well as RARE movements of the entire mobs on the map.
As for the actual AI... I've been messing with more advanced AI recently (not going that well but it's interesting). Depending on what you're wanting to do with your server I'd personally prefer to run a more generic type of AI system such as a utility based decision model so that you can apply it to more advanced types of AI (duelist bots, purchasable 'minions', event bots, advanced boss fights, PVE dungeon type events). If you write the entire system under a deterministic model of AI you'll have to re-write most if not all of it every time you want to do anything new that involves AI for your server.
All depends on how much work you wanna put into your ai system though.