Don't lie "You have a new telegram" after read with inform off
authorMarkus Armbruster <armbru@pond.sub.org>
Mon, 21 Nov 2011 19:07:48 +0000 (20:07 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 29 Dec 2011 10:47:07 +0000 (11:47 +0100)
Here's how telegram notification works with NF_INFORM off: typed_wu()
increments the telegram recipient's nat_tgms.  status(), running right
before command prompts, notifies the player when nat_tgms > 0, and
resets it.  Thus, we tell the player how many telegrams arrived since
the previous command prompt.

However, what we really want is something else, namely the number of
"new telegrams waiting".  That's what the notification message says,
after all.  Telegrams already printed by read shouldn't count, even
when they arrived since the previous command prompt.

Make them not count by clearing pending telegrams on read regardless
of toggle inform.

Same for announcements.

src/lib/commands/rea.c

index 22df74e6bd3a5eb9ae3a6e5610004da69e16361f..33fcde34ca4ac5128c465d77d5f1fce23a2c2cae 100644 (file)
@@ -132,13 +132,15 @@ rea(void)
     if (res < 0)
        pr("\n> Mailbox corrupt, tell the deity.\n");
 
-    if (*kind != 'a') {
+    if (*kind == 'a')
+       np->nat_ann = 0;
+    else {
+       np->nat_tgms = 0;
        if (np->nat_flags & NF_INFORM) {
            pr_inform(player, "\n");
-           np->nat_tgms = 0;
-           putnat(np);
        }
     }
+    putnat(np);
 
     if (teles > 0 && player->cnum == num && may_delete) {
        pr("\n");