After fixing some events I realized that parts of the event system I had in Game_Message could be changed to create message events. So it was even easier to fix than I thought. However other events still can produce message events which can happen in wrong order, but only if it can be noticed! There are only small number of other events so they are quite easy to check out.
Next thing was the sign object type. It went ok, but it required more than I remembered. First you had to add a new list type to Level class, but then also a genuine map for signs. For non-moving objects it could be easier to have a combined map for each object type. The problem with sharing object types for one map is that objects don't know their type. This was a design decision I had, because it's more OOP than knowing the type. I don't know it has any real advantage.
There is a lack of checking for overlapping object types during creation so it's possible that some objects can be created over others. In fact I have to create a routine to check that thing. I also need a debug text output routine really bad, because a lot of stuff is happening during the creation.