From 1c13786214c6a4b105f362274a969c9d44ad478f Mon Sep 17 00:00:00 2001
From: in1tiate <32779090+in1tiate@users.noreply.github.com>
Date: Tue, 28 Jan 2025 02:40:19 -0600
Subject: [PATCH] Mark AFK players in the player list (#390)

* Mark AFK players in the player list

* it works now

* remove accidental net debug
---
 src/aoclient.cpp                | 7 ++++++-
 src/commands/command_helper.cpp | 2 --
 src/commands/messaging.cpp      | 1 +
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/aoclient.cpp b/src/aoclient.cpp
index 5f314de..39b6f95 100644
--- a/src/aoclient.cpp
+++ b/src/aoclient.cpp
@@ -198,6 +198,9 @@ void AOClient::handlePacket(AOPacket *packet)
         if (m_is_afk)
             sendServerMessage("You are no longer AFK.");
         m_is_afk = false;
+        if (characterName().endsWith(" [AFK]")) {
+            setCharacterName(characterName().remove(" [AFK]"));
+        }
         m_afk_timer->start(ConfigManager::afkTimeout() * 1000);
     }
 
@@ -556,8 +559,10 @@ bool AOClient::isSpectator() const
 
 void AOClient::onAfkTimeout()
 {
-    if (!m_is_afk)
+    if (!m_is_afk) {
         sendServerMessage("You are now AFK.");
+        setCharacterName(characterName() + " [AFK]");
+    }
     m_is_afk = true;
 }
 
diff --git a/src/commands/command_helper.cpp b/src/commands/command_helper.cpp
index e0e8c36..11935d9 100644
--- a/src/commands/command_helper.cpp
+++ b/src/commands/command_helper.cpp
@@ -64,8 +64,6 @@ QStringList AOClient::buildAreaList(int area_idx)
                 char_entry.insert(0, "[CM] ");
             if (m_authenticated)
                 char_entry += " (" + l_client->getIpid() + "): " + l_client->name();
-            if (l_client->m_is_afk)
-                char_entry += " [AFK]";
             entries.append(char_entry);
         }
     }
diff --git a/src/commands/messaging.cpp b/src/commands/messaging.cpp
index a5d62f7..bb8af51 100644
--- a/src/commands/messaging.cpp
+++ b/src/commands/messaging.cpp
@@ -387,6 +387,7 @@ void AOClient::cmdAfk(int argc, QStringList argv)
 
     m_is_afk = true;
     sendServerMessage("You are now AFK.");
+    setCharacterName(characterName() + " [AFK]");
 }
 
 void AOClient::cmdCharCurse(int argc, QStringList argv)