summaryrefslogtreecommitdiff
path: root/src/net/eathena
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/eathena')
-rw-r--r--src/net/eathena/chathandler.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/net/eathena/chathandler.cpp b/src/net/eathena/chathandler.cpp
index e35fcbc8b..f7ef27cb5 100644
--- a/src/net/eathena/chathandler.cpp
+++ b/src/net/eathena/chathandler.cpp
@@ -974,14 +974,26 @@ void ChatHandler::processChatRoomAddMember(Net::MessageIn &msg)
void ChatHandler::processChatRoomSettings(Net::MessageIn &msg)
{
- UNIMPLIMENTEDPACKET;
const int sz = msg.readInt16("len") - 17;
- msg.readInt32("owner id");
- msg.readInt32("chat id");
- msg.readInt16("limit");
+ const int ownerId = msg.readInt32("owner id");
+ const int chatId = msg.readInt32("chat id");
+ const int limit = msg.readInt16("limit");
msg.readInt16("users");
- msg.readUInt8("type");
- msg.readString(sz, "title");
+ const int type = msg.readUInt8("type");
+ const std::string &title = msg.readString(sz, "title");
+ ChatObject *const chat = localPlayer->getChat();
+ if (chat && chat->chatId == chatId)
+ {
+ chat->ownerId = ownerId;
+ chat->maxUsers = limit;
+ chat->type = type;
+ if (chat->title != title)
+ {
+ chat->title = title;
+ actorManager->updateRoom(chat);
+ chatWindow->joinRoom(true);
+ }
+ }
}
void ChatHandler::processChatRoomRoleChange(Net::MessageIn &msg)