aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorstfx <stfx@hotmail.de>2012-11-24 14:54:52 +0100
committerNay <dnpd.dd@gmail.com>2012-12-23 17:49:47 +0000
commit51fadb57e0f0071064599509caab34c6b883b17b (patch)
tree4eb253a2bc2b41038ad8c89259393c3210e953fd /src
parent01ef119703ed9ce8276e9a899d3260ec05495d0a (diff)
Allow setting afk/dnd message in afk/dnd state
Also use the same variable to store the message for AFK and DND Signed-off-by: Nay <dnpd.dd@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp16
-rw-r--r--src/server/game/Entities/Player/Player.h7
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp51
3 files changed, 39 insertions, 35 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 7dab5e15788..87a7b2e6277 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2031,24 +2031,18 @@ bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data)
return true;
}
-bool Player::ToggleAFK()
+void Player::ToggleAFK()
{
ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK);
- bool state = HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK);
-
// afk player not allowed in battleground
- if (state && InBattleground() && !InArena())
+ if (isAFK() && InBattleground() && !InArena())
LeaveBattleground();
-
- return state;
}
-bool Player::ToggleDND()
+void Player::ToggleDND()
{
ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_DND);
-
- return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_DND);
}
uint8 Player::GetChatTag() const
@@ -20109,9 +20103,9 @@ void Player::Whisper(const std::string& text, uint32 language, uint64 receiver)
// announce afk or dnd message
if (rPlayer->isAFK())
- ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_AFK, rPlayer->GetName().c_str(), rPlayer->afkMsg.c_str());
+ ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_AFK, rPlayer->GetName().c_str(), rPlayer->autoReplyMsg.c_str());
else if (rPlayer->isDND())
- ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_DND, rPlayer->GetName().c_str(), rPlayer->dndMsg.c_str());
+ ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_DND, rPlayer->GetName().c_str(), rPlayer->autoReplyMsg.c_str());
}
void Player::PetSpellInitialize()
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 1e8b6aedb3e..8fc13e1dda9 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1108,13 +1108,12 @@ class Player : public Unit, public GridObject<Player>
Creature* GetNPCIfCanInteractWith(uint64 guid, uint32 npcflagmask);
GameObject* GetGameObjectIfCanInteractWith(uint64 guid, GameobjectTypes type) const;
- bool ToggleAFK();
- bool ToggleDND();
+ void ToggleAFK();
+ void ToggleDND();
bool isAFK() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK); }
bool isDND() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_DND); }
uint8 GetChatTag() const;
- std::string afkMsg;
- std::string dndMsg;
+ std::string autoReplyMsg;
uint32 GetBarberShopCost(uint8 newhairstyle, uint8 newhaircolor, uint8 newfacialhair, BarberShopStyleEntry const* newSkin=NULL);
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index e4989816998..560cc904974 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -440,40 +440,51 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
} break;
case CHAT_MSG_AFK:
{
- if ((msg.empty() || !_player->isAFK()) && !_player->isInCombat())
+ if (!_player->isInCombat())
{
- if (!_player->isAFK())
+ if (_player->isAFK()) // Already AFK
{
if (msg.empty())
- msg = GetTrinityString(LANG_PLAYER_AFK_DEFAULT);
- _player->afkMsg = msg;
+ _player->ToggleAFK(); // Remove AFK
+ else
+ _player->autoReplyMsg = msg; // Update message
}
+ else // New AFK mode
+ {
+ _player->autoReplyMsg = msg.empty() ? GetTrinityString(LANG_PLAYER_AFK_DEFAULT) : msg;
- sScriptMgr->OnPlayerChat(_player, type, lang, msg);
+ if (_player->isDND())
+ _player->ToggleDND();
+
+ _player->ToggleAFK();
+ }
- _player->ToggleAFK();
- if (_player->isAFK() && _player->isDND())
- _player->ToggleDND();
+ sScriptMgr->OnPlayerChat(_player, type, lang, msg);
}
- } break;
+ break;
+ }
case CHAT_MSG_DND:
{
- if (msg.empty() || !_player->isDND())
+ if (_player->isDND()) // Already DND
{
- if (!_player->isDND())
- {
- if (msg.empty())
- msg = GetTrinityString(LANG_PLAYER_DND_DEFAULT);
- _player->dndMsg = msg;
- }
+ if (msg.empty())
+ _player->ToggleDND(); // Remove DND
+ else
+ _player->autoReplyMsg = msg; // Update message
+ }
+ else // New DND mode
+ {
+ _player->autoReplyMsg = msg.empty() ? GetTrinityString(LANG_PLAYER_DND_DEFAULT) : msg;
- sScriptMgr->OnPlayerChat(_player, type, lang, msg);
+ if (_player->isAFK())
+ _player->ToggleAFK();
_player->ToggleDND();
- if (_player->isDND() && _player->isAFK())
- _player->ToggleAFK();
}
- } break;
+
+ sScriptMgr->OnPlayerChat(_player, type, lang, msg);
+ break;
+ }
default:
sLog->outError(LOG_FILTER_NETWORKIO, "CHAT: unknown message type %u, lang: %u", type, lang);
break;