summaryrefslogtreecommitdiff
path: root/src/gui/windows
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-12-27 17:56:43 +0300
committerAndrei Karas <akaras@inbox.ru>2013-12-27 17:56:43 +0300
commiteee2f72b047262cbb6478c67f2e5293a85ce79e4 (patch)
treea5924ee55bd5570825dccd0a344dd9f986157e12 /src/gui/windows
parente068a57abf67381e4f58f90e40af3be6b386e240 (diff)
downloadmv-eee2f72b047262cbb6478c67f2e5293a85ce79e4.tar.gz
mv-eee2f72b047262cbb6478c67f2e5293a85ce79e4.tar.bz2
mv-eee2f72b047262cbb6478c67f2e5293a85ce79e4.tar.xz
mv-eee2f72b047262cbb6478c67f2e5293a85ce79e4.zip
allow to owner talk from own pet.
New chat command: /talkpet text
Diffstat (limited to 'src/gui/windows')
-rw-r--r--src/gui/windows/chatwindow.cpp34
-rw-r--r--src/gui/windows/chatwindow.h2
2 files changed, 36 insertions, 0 deletions
diff --git a/src/gui/windows/chatwindow.cpp b/src/gui/windows/chatwindow.cpp
index d658ae183..44024b7f1 100644
--- a/src/gui/windows/chatwindow.cpp
+++ b/src/gui/windows/chatwindow.cpp
@@ -1482,6 +1482,20 @@ bool ChatWindow::resortChatLog(std::string line, Own own,
// ignore special message formats.
if (line.find(": \302\202\302") != std::string::npos)
return false;
+
+ // pet talk message detected
+ if (line.find(": \302\202\303 ") != std::string::npos)
+ {
+ if (actorManager && idx2 > 1)
+ {
+ const std::string nick = line.substr(0, idx2 - 1);
+ line = line.substr(idx2 + 6);
+ localPetSay(nick, line);
+ }
+
+ return false;
+ }
+
line = line.erase(idx + 2, 2);
tradeChatTab->chatLog(prefix + line, own, ignoreRecord,
tryRemoveColors);
@@ -1548,6 +1562,26 @@ void ChatWindow::battleChatLog(const std::string &line, Own own,
debugChatTab->chatLog(line, own, ignoreRecord, tryRemoveColors);
}
+void ChatWindow::localPetSay(const std::string &nick, const std::string &text)
+{
+ Being *const being = actorManager->findBeingByName(
+ nick, ActorSprite::PLAYER);
+ Being *pet = nullptr;
+ if (being)
+ {
+ pet = being->getPet();
+ if (pet)
+ pet->setSpeech(text, GENERAL_CHANNEL);
+ }
+
+ if (!localChatTab)
+ return;
+ if (pet)
+ localChatTab->chatLog(strprintf(_("%s's pet"), nick.c_str()), text);
+ else
+ localChatTab->chatLog(nick, text);
+}
+
void ChatWindow::initTradeFilter()
{
const std::string tradeListName = client->getServerConfigDirectory()
diff --git a/src/gui/windows/chatwindow.h b/src/gui/windows/chatwindow.h
index a1a7d77ee..8cda0fa84 100644
--- a/src/gui/windows/chatwindow.h
+++ b/src/gui/windows/chatwindow.h
@@ -292,6 +292,8 @@ class ChatWindow final : public Window,
void postInit() override final;
+ void localPetSay(const std::string &nick, const std::string &text);
+
#ifdef USE_PROFILER
void logicChildren();
#endif