afritz1/OpenTESArena

Messages persist between dungeon loads

Closed this issue · 12 comments

Testing out the latest progress, I noticed that messages triggered by entering a voxel (for example the message you get right as entering Stonekeep) will continue to show on the screen if you travel to another area before the message has finished showing. I testing in the original game and they do not persist there.

I was wondering about this, but I guess you investigated it first! I'm assuming that all three of the timed text boxes (red, orange, and yellow) are hidden after fast-traveling.

I just tested and actually the red messages (tested the "your position is" one and "it'd be a miracle if you picked this lock") will continue to show even if you fast travel.

Their display "countdown" does not decrease if you pause the game by opening a screen like the automap, which seems to be the same behavior in OpenTESArena.

Are there yellow timed messages?

The yellow messages are for things like "You are diseased/drunk/silenced".

Ah Ok. Let me try the drunk one. I'm guessing based on the red messages that it probably will still show. It's probably just the orange ones that are tied to dungeons that are not shown.

Not that you have to replicate original behavior THIS closely, of course. But, if it's not an inconvenience, might as well.

It'd be really easy to make the messages not show. Something as simple as:

auto &gameData = game.getGameData();
gameData.getTriggerText().reset();

in FastTravelSubPanel::switchToNextPanel().

Good to hear. By the way let me just take the moment to say that I love how methodically you're proceeding with this project, even pulling the original data directly from the executable, and trying to recreate original behavior and everything. Anyway, I'll go test the drunk message now.

👍

What was I thinking, the drunk message is a no-go because it ends way before you can leave the tavern and initiate fast travel. So I'd have to find a monster that did one of those status effects and then try to initiate a fast travel, but I'm not really prepared to go to those lengths right now, haha. This would probably be comparatively easy to confirm through reverse-engineering anyway, so maybe @Carmina16 can comment.

I just tested getting diseased by rats in Stonekeep, then fast traveled to the nearest town, and the "You are diseased" text does indeed persist, so it looks like only the orange "lore" text is hidden.

Great, well we've got it all covered then!

A couple of observations:

  • Trigger messages last for 40 frames;
  • The countdown timer does not run when the player is in the same block as the trigger.
  • When displaying, a sequence of % and any 3 symbols is replaced with the full player name.

Good to know. I've been using a variable duration based on the text length, which works a lot better for longer messages (because if they're all just 40 frames then some of the longer ones aren't readable at a comfortable pace). I don't think I'm covering the second bullet yet, but the variable duration works well enough that adding the permanent display is a low priority.