Looking at the Hints&Solution board, and at the holds that involve multi-room puzzles, or even non-linear hold exploration, I was thinking of making the game record a log of certain events, which reflect the hold progress.
Let's start with an example.
hold_name: level_1: Entrance: Entered at Entrance 1 at (10,10)
hold_name: level_1: Entrance: Conquered
hold_name: level_1: 1N: Entered at (15,31)
hold_name: level_1: 1N1E: Entered at (0,15)
hold_name: level_1: 1N: Entered at (37,10)
hold_name: level_1: 1N: Conquered
hold_name: level_1: 1N: Cleared
hold_name: level_1: 1N1E: Restored at (23,4)
hold_name: level_1: 1N: Entered at (37,21)
hold_name: level_1: 1N: Conquered
The main purpose is to help the player recall the order of room completion, and be able to answer the questions "
Where do I go from here?"
.
By now I can think of the following events to log:
1. Entering a room via predefined Entrance point. This happens when a player take stairs to another room/level. Log entry should indicate which room at which entrance was entered.
2. Entering a room by crossing room border. This happens when a player walks from room to room. Log entry should indicate which room at which border tile is entered.
3. Room conquered. This happens as soon as the player has fulfilled the room task.
4. Room cleared. This happens when the player has left the room in a "
green"
state. This looks more important to hold progress then "
room conquered"
event, because no monsters will re-appear the next time the room is visited. And green doors are permanently triggered for this room.
5. Level is completed. Blue doors permanently triggered.
6. Hold is completed.
7. Hold is mastered.
8. State restored. This happens when a player restore a room from the DROD main menu. In-room undos and restores should not be logged, only those global restore operations that put the player to a different room/level and potentially roll back hold progress.
Log entries could also contain extra information - like real-world timestamp, player role, sworded/swordless flag, orientation - at the moment event happened. I'm in two minds about that... On one hand, such info would be nice to have. On the other, such info has lower value, and it would only clutter the log, transforming a simple and neat list into a heavy-looking table.
From the user point of view this feature can be represented as a plain text file which can be viewed when needed. Or, if more development efforts can be assigned, as a chronological restore feature. It could be a per-hold log, or per-player log.