Also you can use MP Grids, Randomized Seeds and Variables to create the turn system.
Heres a tip after they're turn is up use the function
move_snap(20, 20) //20 because thats the tilemap's tile size for dungeons
move_snap() will position them to the closest potions matching the snap size grid: say and object was at (15, 4) the function would move this object to (20, 0).
For AI's I would often use the function
randomize(); //This randomizes the seed so not to have the same outcome for randomly selected variables or numbers
I have an amazing way to do text boxes that procedurally display the letters. But If you want to know about that talk to me privately at my business email (wolfhybrid23@wolfgameofficial.rf.gd).
For bitmap fonts first create the sprite with the frames being the characters in Game Maker's order (from !-[]) then use this function to set that sprite into a font (using a script so the variable doesn't get lost like this:
///In Script, I am calling this script fnt_bitmap
return font_add_sprite(<Sprite Index>, ord("!"), 1, <Pixel Seperation>) //The script will return the index for the font we just created out of the sprite
///In Draw Event Of Object Desplaying Text
draw_set_color(<color>)
draw_set_font(fnt_bitmap()) //This will execute the script we just created looking for a return index, in this case the return index was the font index
draw_text(x, y, "text")
I would also use DS Maps so that the user can't directly modify the save file. As for wonder mail, I am going to do a 4 piece code that will represent the kind of mission in the first fragment the client and target in the second the rewards in the third and the dungeon in last. While this isn't optimal for cheat prevention it is much easier to code and use than coding all the wonder mail codes separately. I use timelines to do cut scenes and I try to put everything I can in one object so its easier to recognize and soft on the memory usage.