I have used Gamemaker for a few years to make games, I really like it. Quick to use and powerful. At it's core though Gamemaker is a real time movement and collision engine, with a bunch of built in bells and whistles. Since Roguelikes are turn based there can be some difficulties with passing turns, but other than that things are pretty easy.
My turn based system is a bit wonky, but Geminosity (who made Nya Quest this year) put together a turn system using stack and ques and other built in data structures. I dunno how to do that but the ability is there.
I use a ton of inheritance with Gamemaker, it seems to work better. I've never had to use scripts (I think 'C' programmers would call them 'functions').
Here is a run down of the objects you need to make a straight roguelike, one similar to Rogue or my own KlingonRL
-Controller: This object is placed in the room and used to call all over objects. This will alleviate the issue of accidentally calling variables that don't exist. Also, put all global variables in this object so they are always available.
-Overworld_Builder: If you have an overworld, this will build it.
-Level_Builder: This object will carve the architecture and populate the dungeon. I actually call this object in each room and then save the room state. So if there are 27 levels, I use 27 rooms. If you don't want persistent levels for some reason you can just reset the same room over and over and have this object build you a new level each time you hit the stairs.
-Player: Stats and movement and what not are all handled in this object. When the player's move fails because the space he is moving to is occupied, call the Bumper object and place it at the collision site.
-Bumper: This is a temporary object that you place on any space where there was a collision.
-Walls: Simple object with no real behavior. The Player object's movement will fail if they try to more into a wall object.
-Baddie_Parent: All movement and behavior of the bad guys is handled here. Each new enemy type is a child of this base type. When you make a new enemy simply alter the stats and abilities in the 'create' event, set an appropriate sprite and bam you have a new enemy type.
-Door: Reacts to the Bumper object by opening. You can also have it react to a 'close' command (press 'c') if the player is adjacent. Basically this object has 2 states, solid or not solid, and changes sprite from '+' to '-' depending on its state.
-Trap_Parent: Activates when it collides with the Player object. Different types will be descended from this base type.
-Stairs: Simple object. If the Bumper touches it, then descend.
So that's about all you need, the basics. I was able to code up a fairly robust system like this in just a couple of days. My enemy behavior was a bit weak though, only 2 real states. State 1, where it sees the player or state 0 where it doesn't. If it has weapons it chases the player if it sees the player, if it doesn't have weapons it runs away. Otherwise just wander about, changing directions every so often.
Is anyone out there even using Gamemaker besides Gem and I? Gamemaker 8.1 lite can easily be used to make a roguelike using the above outline, and that one is free here:
http://www.yoyogames.com/gamemaker/windows