aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/authserver/CMakeLists.txt40
-rwxr-xr-xsrc/server/authserver/Server/AuthSocket.cpp6
-rwxr-xr-xsrc/server/authserver/Server/RealmSocket.cpp2
-rwxr-xr-xsrc/server/authserver/Server/RealmSocket.h2
-rw-r--r--src/server/collision/CMakeLists.txt29
-rw-r--r--src/server/collision/RegularGrid.h2
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.cpp1
-rw-r--r--src/server/game/Battlefield/Battlefield.h2
-rw-r--r--src/server/game/Battlefield/BattlefieldHandler.cpp12
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.h8
-rw-r--r--src/server/game/CMakeLists.txt29
-rwxr-xr-xsrc/server/game/Chat/Chat.cpp14
-rwxr-xr-xsrc/server/game/Chat/Chat.h2
-rwxr-xr-xsrc/server/game/DataStores/DBCEnums.h280
-rwxr-xr-xsrc/server/game/DungeonFinding/LFG.h2
-rw-r--r--src/server/game/DungeonFinding/LFGGroupData.cpp7
-rw-r--r--src/server/game/DungeonFinding/LFGGroupData.h1
-rwxr-xr-xsrc/server/game/DungeonFinding/LFGMgr.cpp380
-rwxr-xr-xsrc/server/game/DungeonFinding/LFGMgr.h66
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.cpp269
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.h74
-rw-r--r--src/server/game/DungeonFinding/LFGScripts.cpp17
-rwxr-xr-xsrc/server/game/Entities/GameObject/GameObject.cpp4
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp36
-rwxr-xr-xsrc/server/game/Entities/Player/Player.h6
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp2
-rwxr-xr-xsrc/server/game/Groups/Group.cpp15
-rwxr-xr-xsrc/server/game/Guilds/Guild.cpp1135
-rwxr-xr-xsrc/server/game/Guilds/Guild.h368
-rw-r--r--src/server/game/Guilds/GuildMgr.cpp55
-rw-r--r--src/server/game/Guilds/GuildMgr.h5
-rwxr-xr-xsrc/server/game/Handlers/ArenaTeamHandler.cpp4
-rwxr-xr-xsrc/server/game/Handlers/AuctionHouseHandler.cpp80
-rwxr-xr-xsrc/server/game/Handlers/BattleGroundHandler.cpp50
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp739
-rwxr-xr-xsrc/server/game/Handlers/ChatHandler.cpp88
-rwxr-xr-xsrc/server/game/Handlers/CombatHandler.cpp10
-rwxr-xr-xsrc/server/game/Handlers/GroupHandler.cpp90
-rwxr-xr-xsrc/server/game/Handlers/GuildHandler.cpp385
-rwxr-xr-xsrc/server/game/Handlers/ItemHandler.cpp98
-rwxr-xr-xsrc/server/game/Handlers/LFGHandler.cpp159
-rwxr-xr-xsrc/server/game/Handlers/LootHandler.cpp14
-rwxr-xr-xsrc/server/game/Handlers/MailHandler.cpp76
-rwxr-xr-xsrc/server/game/Handlers/MovementHandler.cpp68
-rwxr-xr-xsrc/server/game/Handlers/NPCHandler.cpp60
-rwxr-xr-xsrc/server/game/Handlers/PetHandler.cpp66
-rwxr-xr-xsrc/server/game/Handlers/PetitionsHandler.cpp127
-rwxr-xr-xsrc/server/game/Handlers/QueryHandler.cpp44
-rwxr-xr-xsrc/server/game/Handlers/QuestHandler.cpp48
-rw-r--r--src/server/game/Handlers/ReferAFriendHandler.cpp8
-rwxr-xr-xsrc/server/game/Handlers/SkillHandler.cpp8
-rwxr-xr-xsrc/server/game/Handlers/SpellHandler.cpp18
-rwxr-xr-xsrc/server/game/Handlers/TaxiHandler.cpp26
-rw-r--r--src/server/game/Handlers/VehicleHandler.cpp32
-rwxr-xr-xsrc/server/game/Handlers/VoiceChatHandler.cpp14
-rw-r--r--src/server/game/Maps/MapUpdater.cpp2
-rwxr-xr-xsrc/server/game/Movement/MovementGenerator.h14
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp22
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h8
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp24
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h8
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp8
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/HomeMovementGenerator.h8
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp24
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/PointMovementGenerator.h8
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp10
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/RandomMovementGenerator.h8
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp47
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h14
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp18
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h16
-rw-r--r--src/server/game/Movement/Spline/MoveSpline.cpp5
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.cpp2
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInitArgs.h4
-rwxr-xr-xsrc/server/game/Server/Protocol/Opcodes.cpp2
-rwxr-xr-xsrc/server/game/Server/WorldSession.h340
-rwxr-xr-xsrc/server/game/Server/WorldSocket.cpp11
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/game/Spells/SpellInfo.cpp2
-rwxr-xr-xsrc/server/game/Texts/CreatureTextMgr.cpp6
-rwxr-xr-xsrc/server/game/Texts/CreatureTextMgr.h12
-rwxr-xr-xsrc/server/game/World/World.cpp49
-rwxr-xr-xsrc/server/game/World/World.h9
-rw-r--r--src/server/scripts/CMakeLists.txt28
-rw-r--r--src/server/scripts/Commands/cs_lfg.cpp12
-rw-r--r--src/server/scripts/Commands/cs_wp.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp187
-rw-r--r--src/server/scripts/EasternKingdoms/silverpine_forest.cpp18
-rw-r--r--src/server/scripts/Events/childrens_week.cpp49
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp8
-rw-r--r--src/server/scripts/Northrend/sholazar_basin.cpp5
-rw-r--r--src/server/scripts/Northrend/wintergrasp.cpp2
-rw-r--r--src/server/scripts/World/areatrigger_scripts.cpp2
-rw-r--r--src/server/scripts/World/npc_taxi.cpp8
-rw-r--r--src/server/shared/AutoPtr.h52
-rw-r--r--src/server/shared/CMakeLists.txt24
-rwxr-xr-xsrc/server/shared/Cryptography/BigNumber.cpp4
-rwxr-xr-xsrc/server/shared/Cryptography/BigNumber.h4
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp34
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.h25
-rwxr-xr-xsrc/server/shared/Database/PreparedStatement.h6
-rwxr-xr-xsrc/server/shared/Database/QueryResult.h1
-rw-r--r--src/server/shared/Logging/Appender.cpp2
-rw-r--r--src/server/shared/Logging/Appender.h5
-rw-r--r--src/server/shared/Threading/DelayExecutor.cpp2
-rw-r--r--src/server/shared/Threading/DelayExecutor.h2
-rw-r--r--src/server/worldserver/CMakeLists.txt34
-rwxr-xr-xsrc/server/worldserver/TCSoap/TCSoap.cpp18
-rw-r--r--src/server/worldserver/worldserver.conf.dist10
109 files changed, 3387 insertions, 3023 deletions
diff --git a/src/server/authserver/CMakeLists.txt b/src/server/authserver/CMakeLists.txt
index 0d94dc47407..581b48f571c 100644
--- a/src/server/authserver/CMakeLists.txt
+++ b/src/server/authserver/CMakeLists.txt
@@ -15,15 +15,9 @@ file(GLOB_RECURSE sources_realms Realms/*.cpp Realms/*.h)
file(GLOB_RECURSE sources_server Server/*.cpp Server/*.h)
file(GLOB sources_localdir *.cpp *.h)
-if( USE_COREPCH )
- include_directories(${CMAKE_CURRENT_BINARY_DIR})
-endif()
-
-if ( USE_COREPCH AND MSVC )
- set(authserver_SRCS
- PrecompiledHeaders/authPCH.cpp
- PrecompiledHeaders/authPCH.h
- )
+if (USE_COREPCH)
+ set(authserver_PCH_HDR PrecompiledHeaders/authPCH.h)
+ set(authserver_PCH_SRC PrecompiledHeaders/authPCH.cpp)
endif()
set(authserver_SRCS
@@ -62,34 +56,23 @@ include_directories(
${OPENSSL_INCLUDE_DIR}
)
-set(authserver_LINK_FLAGS "")
-
add_executable(authserver
${authserver_SRCS}
+ ${authserver_PCH_SRC}
)
add_dependencies(authserver revision.h)
if( NOT WIN32 )
- add_definitions(-D_TRINITY_REALM_CONFIG='"${CONF_DIR}/authserver.conf"')
-endif()
-
-if( UNIX )
- set(authserver_LINK_FLAGS "-pthread ${authserver_LINK_FLAGS}")
-endif()
-
-if( CMAKE_SYSTEM_NAME MATCHES "Darwin" )
- set(authserver_LINK_FLAGS "-framework Carbon ${authserver_LINK_FLAGS}")
+ set_target_properties(authserver PROPERTIES
+ COMPILE_DEFINITIONS _TRINITY_REALM_CONFIG="${CONF_DIR}/authserver.conf"
+ )
endif()
-set_target_properties(authserver PROPERTIES LINK_FLAGS "${authserver_LINK_FLAGS}")
-
target_link_libraries(authserver
shared
${MYSQL_LIBRARY}
${OPENSSL_LIBRARIES}
- ${OPENSSL_EXTRA_LIBRARIES}
- ${OSX_LIBS}
)
if( WIN32 )
@@ -108,11 +91,6 @@ elseif( WIN32 )
endif()
# Generate precompiled header
-if( USE_COREPCH )
- if(CMAKE_COMPILER_IS_GNUCXX)
- add_precompiled_header(authserver ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/authPCH.h)
- elseif(MSVC)
- add_native_precompiled_header(authserver ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/authPCH)
- endif()
+if (USE_COREPCH)
+ add_cxx_pch(authserver ${authserver_PCH_HDR} ${authserver_PCH_SRC})
endif()
-
diff --git a/src/server/authserver/Server/AuthSocket.cpp b/src/server/authserver/Server/AuthSocket.cpp
index fc4d4dfcc9b..ed3b3cf4145 100755
--- a/src/server/authserver/Server/AuthSocket.cpp
+++ b/src/server/authserver/Server/AuthSocket.cpp
@@ -280,7 +280,7 @@ void AuthSocket::_SetVSFields(const std::string& rI)
v = g.ModExp(x, N);
// No SQL injection (username escaped)
- const char *v_hex, *s_hex;
+ char *v_hex, *s_hex;
v_hex = v.AsHexStr();
s_hex = s.AsHexStr();
@@ -290,8 +290,8 @@ void AuthSocket::_SetVSFields(const std::string& rI)
stmt->setString(2, _login);
LoginDatabase.Execute(stmt);
- OPENSSL_free((void*)v_hex);
- OPENSSL_free((void*)s_hex);
+ OPENSSL_free(v_hex);
+ OPENSSL_free(s_hex);
}
// Logon Challenge command handler
diff --git a/src/server/authserver/Server/RealmSocket.cpp b/src/server/authserver/Server/RealmSocket.cpp
index c868bb43777..d65431eca44 100755
--- a/src/server/authserver/Server/RealmSocket.cpp
+++ b/src/server/authserver/Server/RealmSocket.cpp
@@ -79,7 +79,7 @@ int RealmSocket::open(void * arg)
return 0;
}
-int RealmSocket::close(int)
+int RealmSocket::close(u_long)
{
shutdown();
diff --git a/src/server/authserver/Server/RealmSocket.h b/src/server/authserver/Server/RealmSocket.h
index c03a0e3ad1e..b093691047c 100755
--- a/src/server/authserver/Server/RealmSocket.h
+++ b/src/server/authserver/Server/RealmSocket.h
@@ -59,7 +59,7 @@ public:
virtual int open(void *);
- virtual int close(int);
+ virtual int close(u_long);
virtual int handle_input(ACE_HANDLE = ACE_INVALID_HANDLE);
virtual int handle_output(ACE_HANDLE = ACE_INVALID_HANDLE);
diff --git a/src/server/collision/CMakeLists.txt b/src/server/collision/CMakeLists.txt
index 9fc696ab19a..3182b20d008 100644
--- a/src/server/collision/CMakeLists.txt
+++ b/src/server/collision/CMakeLists.txt
@@ -17,12 +17,10 @@ file(GLOB_RECURSE sources_Maps Maps/*.cpp Maps/*.h)
file(GLOB_RECURSE sources_Models Models/*.cpp Models/*.h)
file(GLOB sources_localdir *.cpp *.h)
-if( USE_COREPCH AND MSVC )
- set(collision_STAT_SRCS
- PrecompiledHeaders/collisionPCH.cpp
- PrecompiledHeaders/collisionPCH.h
- )
-endif()
+if (USE_COREPCH)
+ set(collision_STAT_PCH_HDR PrecompiledHeaders/collisionPCH.h)
+ set(collision_STAT_PCH_SRC PrecompiledHeaders/collisionPCH.cpp)
+endif ()
set(collision_STAT_SRCS
${collision_STAT_SRCS}
@@ -33,6 +31,7 @@ set(collision_STAT_SRCS
)
include_directories(
+ ${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/dep/g3dlite/include
${CMAKE_SOURCE_DIR}/src/server/shared
${CMAKE_SOURCE_DIR}/src/server/shared/Debugging
@@ -73,20 +72,16 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/Management
${CMAKE_CURRENT_SOURCE_DIR}/Maps
${CMAKE_CURRENT_SOURCE_DIR}/Models
- ${CMAKE_BINARY_DIR}
${ACE_INCLUDE_DIR}
${MYSQL_INCLUDE_DIR}
- ${OPENSSL_INCLUDE_DIR}
)
-add_library(collision STATIC ${collision_STAT_SRCS})
+add_library(collision STATIC
+ ${collision_STAT_SRCS}
+ ${collision_STAT_PCH_SRC}
+)
# Generate precompiled header
-if( USE_COREPCH )
- if(CMAKE_COMPILER_IS_GNUCXX)
- add_precompiled_header(collision ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/collisionPCH.h)
- elseif(MSVC)
- add_native_precompiled_header(collision ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/collisionPCH)
- endif()
-endif()
-
+if (USE_COREPCH)
+ add_cxx_pch(collision ${collision_STAT_PCH_HDR} ${collision_STAT_PCH_SRC})
+endif ()
diff --git a/src/server/collision/RegularGrid.h b/src/server/collision/RegularGrid.h
index 00d7b0cd209..5b7d1d74987 100644
--- a/src/server/collision/RegularGrid.h
+++ b/src/server/collision/RegularGrid.h
@@ -86,7 +86,7 @@ public:
static Cell ComputeCell(float fx, float fy)
{
- Cell c = {fx * (1.f/CELL_SIZE) + (CELL_NUMBER/2), fy * (1.f/CELL_SIZE) + (CELL_NUMBER/2)};
+ Cell c = { int(fx * (1.f/CELL_SIZE) + (CELL_NUMBER/2)), int(fy * (1.f/CELL_SIZE) + (CELL_NUMBER/2)) };
return c;
}
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 0ee133edce9..0504effa651 100755
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -1617,7 +1617,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
case ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE:
case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE:
- case ACHIEVEMENT_CRITERIA_TYPE_TOTAL:
break; // Not implemented yet :(
}
diff --git a/src/server/game/Battlefield/Battlefield.h b/src/server/game/Battlefield/Battlefield.h
index 0752fa88fc1..77525b7d06e 100644
--- a/src/server/game/Battlefield/Battlefield.h
+++ b/src/server/game/Battlefield/Battlefield.h
@@ -79,6 +79,8 @@ class BfCapturePoint
public:
BfCapturePoint(Battlefield* bf);
+ virtual ~BfCapturePoint() { }
+
virtual void FillInitialWorldStates(WorldPacket& /*data*/) {}
// Send world state update to all players present
diff --git a/src/server/game/Battlefield/BattlefieldHandler.cpp b/src/server/game/Battlefield/BattlefieldHandler.cpp
index b852082d582..1ebeb664fb3 100644
--- a/src/server/game/Battlefield/BattlefieldHandler.cpp
+++ b/src/server/game/Battlefield/BattlefieldHandler.cpp
@@ -95,12 +95,12 @@ void WorldSession::SendBfLeaveMessage(uint32 BattleId, BFLeaveReason reason)
}
//Send by client when he click on accept for queue
-void WorldSession::HandleBfQueueInviteResponse(WorldPacket & recv_data)
+void WorldSession::HandleBfQueueInviteResponse(WorldPacket & recvData)
{
uint32 BattleId;
uint8 Accepted;
- recv_data >> BattleId >> Accepted;
+ recvData >> BattleId >> Accepted;
sLog->outError(LOG_FILTER_GENERAL, "HandleQueueInviteResponse: BattleID:%u Accepted:%u", BattleId, Accepted);
Battlefield* Bf = sBattlefieldMgr->GetBattlefieldByBattleId(BattleId);
if (!Bf)
@@ -113,12 +113,12 @@ void WorldSession::HandleBfQueueInviteResponse(WorldPacket & recv_data)
}
//Send by client on clicking in accept or refuse of invitation windows for join game
-void WorldSession::HandleBfEntryInviteResponse(WorldPacket & recv_data)
+void WorldSession::HandleBfEntryInviteResponse(WorldPacket & recvData)
{
uint32 BattleId;
uint8 Accepted;
- recv_data >> BattleId >> Accepted;
+ recvData >> BattleId >> Accepted;
sLog->outError(LOG_FILTER_GENERAL, "HandleBattlefieldInviteResponse: BattleID:%u Accepted:%u", BattleId, Accepted);
Battlefield* Bf = sBattlefieldMgr->GetBattlefieldByBattleId(BattleId);
if (!Bf)
@@ -136,11 +136,11 @@ void WorldSession::HandleBfEntryInviteResponse(WorldPacket & recv_data)
}
}
-void WorldSession::HandleBfExitRequest(WorldPacket & recv_data)
+void WorldSession::HandleBfExitRequest(WorldPacket & recvData)
{
uint32 BattleId;
- recv_data >> BattleId;
+ recvData >> BattleId;
sLog->outError(LOG_FILTER_GENERAL, "HandleBfExitRequest: BattleID:%u ", BattleId);
Battlefield* Bf = sBattlefieldMgr->GetBattlefieldByBattleId(BattleId);
if (!Bf)
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h
index 49ea25a5e04..68072a68249 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldWG.h
+++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h
@@ -153,10 +153,10 @@ class BfGraveyardWG : public BfGraveyard
public:
BfGraveyardWG(BattlefieldWG* Bf);
- void SetTextId(uint32 textid) { m_GossipTextId = textid; }
- uint32 GetTextId() { return m_GossipTextId; }
+ void SetTextId(int32 textid) { m_GossipTextId = textid; }
+ int32 GetTextId() { return m_GossipTextId; }
protected:
- uint32 m_GossipTextId;
+ int32 m_GossipTextId;
};
enum WGGraveyardId
@@ -227,7 +227,7 @@ struct BfWGCoordGY
float o;
uint32 gyid;
uint8 type;
- uint32 textid; // for gossip menu
+ int32 textid; // for gossip menu
TeamId startcontrol;
};
diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt
index 68ae2d8ea38..cf71bb1b2fa 100644
--- a/src/server/game/CMakeLists.txt
+++ b/src/server/game/CMakeLists.txt
@@ -8,10 +8,6 @@
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-if( USE_COREPCH )
- include_directories(${CMAKE_CURRENT_BINARY_DIR})
-endif()
-
file(GLOB_RECURSE sources_Accounts Accounts/*.cpp Accounts/*.h)
file(GLOB_RECURSE sources_Achievements Achievements/*.cpp Achievements/*.h)
file(GLOB_RECURSE sources_Addons Addons/*.cpp Addons/*.h)
@@ -55,12 +51,10 @@ file(GLOB_RECURSE sources_World World/*.cpp World/*.h)
# Create game-libary
-if( USE_COREPCH AND MSVC )
- set(game_STAT_SRCS
- PrecompiledHeaders/gamePCH.cpp
- PrecompiledHeaders/gamePCH.h
- )
-endif()
+if (USE_COREPCH)
+ set(game_STAT_PCH_HDR PrecompiledHeaders/gamePCH.h)
+ set(game_STAT_PCH_SRC PrecompiledHeaders/gamePCH.cpp)
+endif ()
set(game_STAT_SRCS
${game_STAT_SRCS}
@@ -205,15 +199,14 @@ include_directories(
${OPENSSL_INCLUDE_DIR}
)
-add_library(game STATIC ${game_STAT_SRCS})
+add_library(game STATIC
+ ${game_STAT_SRCS}
+ ${game_STAT_PCH_SRC}
+)
add_dependencies(game revision.h)
# Generate precompiled header
-if( USE_COREPCH )
- if(CMAKE_COMPILER_IS_GNUCXX)
- add_precompiled_header(game ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/gamePCH.h)
- elseif(MSVC)
- add_native_precompiled_header(game ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/gamePCH)
- endif()
-endif()
+if (USE_COREPCH)
+ add_cxx_pch(game ${game_STAT_PCH_HDR} ${game_STAT_PCH_SRC})
+endif ()
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index 88c3de274fb..7faf05a577c 100755
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -425,7 +425,7 @@ bool ChatHandler::SetDataForCommandInTable(ChatCommand* table, char const* text,
return false;
}
-int ChatHandler::ParseCommands(char const* text)
+bool ChatHandler::ParseCommands(char const* text)
{
ASSERT(text);
ASSERT(*text);
@@ -433,23 +433,23 @@ int ChatHandler::ParseCommands(char const* text)
std::string fullcmd = text;
if (m_session && AccountMgr::IsPlayerAccount(m_session->GetSecurity()) && !sWorld->getBoolConfig(CONFIG_ALLOW_PLAYER_COMMANDS))
- return 0;
+ return false;
/// chat case (.command or !command format)
if (m_session)
{
if (text[0] != '!' && text[0] != '.')
- return 0;
+ return false;
}
/// ignore single . and ! in line
if (strlen(text) < 2)
- return 0;
+ return false;
// original `text` can't be used. It content destroyed in command code processing.
/// ignore messages staring from many dots.
if ((text[0] == '.' && text[1] == '.') || (text[0] == '!' && text[1] == '!'))
- return 0;
+ return false;
/// skip first . or ! (in console allowed use command with . and ! and without its)
if (text[0] == '!' || text[0] == '.')
@@ -458,11 +458,11 @@ int ChatHandler::ParseCommands(char const* text)
if (!ExecuteCommandInTable(getCommandTable(), text, fullcmd))
{
if (m_session && AccountMgr::IsPlayerAccount(m_session->GetSecurity()))
- return 0;
+ return false;
SendSysMessage(LANG_NO_CMD);
}
- return 1;
+ return true;
}
bool ChatHandler::isValidChatMessage(char const* message)
diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h
index d07f036f780..0c1b22182e1 100755
--- a/src/server/game/Chat/Chat.h
+++ b/src/server/game/Chat/Chat.h
@@ -74,7 +74,7 @@ class ChatHandler
void PSendSysMessage(int32 entry, ...);
std::string PGetParseString(int32 entry, ...) const;
- int ParseCommands(const char* text);
+ bool ParseCommands(const char* text);
static ChatCommand* getCommandTable();
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 12ec7206141..4fa2e3e748e 100755
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -19,18 +19,21 @@
#ifndef DBCENUMS_H
#define DBCENUMS_H
-// Client expected level limitation, like as used in DBC item max levels for "until max player level"
-// use as default max player level, must be fit max level for used client
-// also see MAX_LEVEL and STRONG_MAX_LEVEL define
-#define DEFAULT_MAX_LEVEL 80
-
-// client supported max level for player/pets/etc. Avoid overflow or client stability affected.
-// also see GT_MAX_LEVEL define
-#define MAX_LEVEL 100
-
-// Server side limitation. Base at used code requirements.
-// also see MAX_LEVEL and GT_MAX_LEVEL define
-#define STRONG_MAX_LEVEL 255
+enum LevelLimit
+{
+ // Client expected level limitation, like as used in DBC item max levels for "until max player level"
+ // use as default max player level, must be fit max level for used client
+ // also see MAX_LEVEL and STRONG_MAX_LEVEL define
+ DEFAULT_MAX_LEVEL = 80,
+
+ // client supported max level for player/pets/etc. Avoid overflow or client stability affected.
+ // also see GT_MAX_LEVEL define
+ MAX_LEVEL = 100,
+
+ // Server side limitation. Base at used code requirements.
+ // also see MAX_LEVEL and GT_MAX_LEVEL define
+ STRONG_MAX_LEVEL = 255,
+};
enum BattlegroundBracketId // bracketId for level ranges
{
@@ -58,16 +61,16 @@ enum AchievementFaction
enum AchievementFlags
{
- ACHIEVEMENT_FLAG_COUNTER = 0x00000001, // Just count statistic (never stop and complete)
- ACHIEVEMENT_FLAG_HIDDEN = 0x00000002, // Not sent to client - internal use only
- ACHIEVEMENT_FLAG_STORE_MAX_VALUE = 0x00000004, // Store only max value? used only in "Reach level xx"
- ACHIEVEMENT_FLAG_SUMM = 0x00000008, // Use summ criteria value from all reqirements (and calculate max value)
- ACHIEVEMENT_FLAG_MAX_USED = 0x00000010, // Show max criteria (and calculate max value ??)
- ACHIEVEMENT_FLAG_REQ_COUNT = 0x00000020, // Use not zero req count (and calculate max value)
- ACHIEVEMENT_FLAG_AVERAGE = 0x00000040, // Show as average value (value / time_in_days) depend from other flag (by def use last criteria value)
- ACHIEVEMENT_FLAG_BAR = 0x00000080, // Show as progress bar (value / max vale) depend from other flag (by def use last criteria value)
- ACHIEVEMENT_FLAG_REALM_FIRST_REACH = 0x00000100, //
- ACHIEVEMENT_FLAG_REALM_FIRST_KILL = 0x00000200 //
+ ACHIEVEMENT_FLAG_COUNTER = 0x00000001, // Just count statistic (never stop and complete)
+ ACHIEVEMENT_FLAG_HIDDEN = 0x00000002, // Not sent to client - internal use only
+ ACHIEVEMENT_FLAG_STORE_MAX_VALUE = 0x00000004, // Store only max value? used only in "Reach level xx"
+ ACHIEVEMENT_FLAG_SUMM = 0x00000008, // Use summ criteria value from all requirements (and calculate max value)
+ ACHIEVEMENT_FLAG_MAX_USED = 0x00000010, // Show max criteria (and calculate max value ??)
+ ACHIEVEMENT_FLAG_REQ_COUNT = 0x00000020, // Use not zero req count (and calculate max value)
+ ACHIEVEMENT_FLAG_AVERAGE = 0x00000040, // Show as average value (value / time_in_days) depend from other flag (by def use last criteria value)
+ ACHIEVEMENT_FLAG_BAR = 0x00000080, // Show as progress bar (value / max vale) depend from other flag (by def use last criteria value)
+ ACHIEVEMENT_FLAG_REALM_FIRST_REACH = 0x00000100, //
+ ACHIEVEMENT_FLAG_REALM_FIRST_KILL = 0x00000200 //
};
#define MAX_CRITERIA_REQUIREMENTS 2
@@ -108,124 +111,117 @@ enum AchievementCriteriaTimedTypes
enum AchievementCriteriaTypes
{
- ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE = 0,
- ACHIEVEMENT_CRITERIA_TYPE_WIN_BG = 1,
- ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL = 5,
- ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL = 7,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT = 9,
- // you have to complete a daily quest x times in a row
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY = 10,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11,
- ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE = 13,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST = 14,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND= 15,
- ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP= 16,
- ACHIEVEMENT_CRITERIA_TYPE_DEATH= 17,
- ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON = 18,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID = 19,
- ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE = 20,
- ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER = 23,
- ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING = 24,
- ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM = 26,
- ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST = 27,
- ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET = 28,
- ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL= 29,
- ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30,
- ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31,
- ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA = 32,
- ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA = 33,
- ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL = 34,
- ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL = 35,
- ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM = 36,
- // TODO: the archievements 1162 and 1163 requires a special rating which can't be found in the dbc
- ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39,
- ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
- ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41,
- ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM= 42,
- ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA = 43,
- ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK= 44,
- ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT= 45,
- ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION= 46,
- ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION= 47,
- // noted: rewarded as soon as the player payed, not at taking place at the seat
- ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP= 48,
- ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49,
- // TODO: itemlevel is mentioned in text but not present in dbc
- ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50,
- ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT= 51,
- ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS = 52,
- ACHIEVEMENT_CRITERIA_TYPE_HK_RACE = 53,
- ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54,
- ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE = 55,
- // TODO: in some cases map not present, and in some cases need do without die
- ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS = 56,
- ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM = 57,
- ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS = 59,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS = 60,
- ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS = 61,
- ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD = 62,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING = 63,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER = 65,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL = 66,
- ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY = 67,
- ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT = 68,
- ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2= 69,
- ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL= 70,
- ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72,
- // TODO: title id is not mentioned in dbc
- ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE = 74,
- ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS= 75,
- ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL = 76,
- ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL = 77,
- // TODO: creature type (demon, undead etc.) is not stored in dbc
- ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE = 78,
- ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS= 80,
- ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION= 82,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID= 83,
- ACHIEVEMENT_CRITERIA_TYPE_WON_AUCTIONS= 84,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_SOLD = 85,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED = 86,
- ACHIEVEMENT_CRITERIA_TYPE_GAIN_REVERED_REPUTATION = 87,
- ACHIEVEMENT_CRITERIA_TYPE_GAIN_HONORED_REPUTATION = 88,
- ACHIEVEMENT_CRITERIA_TYPE_KNOWN_FACTIONS = 89,
- ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM = 90,
- ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM = 91,
- ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED = 93,
- ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED = 94,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALTH = 95,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_POWER = 96,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_STAT = 97,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER = 98,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_ARMOR = 99,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_RATING = 100,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT = 101,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_RECEIVED = 102,
- ACHIEVEMENT_CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED = 103,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEAL_CASTED = 104,
- ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED = 105,
- ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED = 106,
- ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED = 107,
- ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108,
- ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109,
- // TODO: target entry is missing
- ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 = 110,
- ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE= 112,
- ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
- ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
- // 0..115 => 116 criteria types total
- ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS = 115,
+ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE = 0,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_BG = 1,
+ ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL = 5,
+ ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL = 7,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT = 9,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY = 10, // you have to complete a daily quest x times in a row
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11,
+ ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE = 13,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST = 14,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15,
+ ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP = 16,
+ ACHIEVEMENT_CRITERIA_TYPE_DEATH = 17,
+ ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON = 18,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID = 19,
+ ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE = 20,
+ ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER = 23,
+ ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING = 24,
+ ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM = 26,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST = 27,
+ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET = 28,
+ ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL = 29,
+ ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30,
+ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA = 32,
+ ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA = 33,
+ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL = 34,
+ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL = 35,
+ ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM = 36,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37, // TODO: the archievements 1162 and 1163 requires a special rating which can't be found in the dbc
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39,
+ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
+ ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41,
+ ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM = 42,
+ ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA = 43,
+ ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK = 44,
+ ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT = 45,
+ ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION = 46,
+ ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION = 47,
+ ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP = 48,
+ ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49,
+ ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50, // TODO: itemlevel is mentioned in text but not present in dbc
+ ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51,
+ ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS = 52,
+ ACHIEVEMENT_CRITERIA_TYPE_HK_RACE = 53,
+ ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54,
+ ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE = 55,
+ ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS = 56, // TODO: in some cases map not present, and in some cases need do without die
+ ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM = 57,
+ ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS = 59,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS = 60,
+ ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS = 61,
+ ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD = 62,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING = 63,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER = 65,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL = 66,
+ ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY = 67,
+ ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT = 68,
+ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2 = 69,
+ ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL = 70,
+ ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72,
+ // TODO 73: Achievements 1515, 1241, 1103 (Name: Mal'Ganis)
+ ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE = 74, // TODO: title id is not mentioned in dbc
+ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL = 76,
+ ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL = 77,
+ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE = 78,
+ ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS = 80,
+ ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION = 82,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID = 83,
+ ACHIEVEMENT_CRITERIA_TYPE_WON_AUCTIONS = 84,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_SOLD = 85,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED = 86,
+ ACHIEVEMENT_CRITERIA_TYPE_GAIN_REVERED_REPUTATION = 87,
+ ACHIEVEMENT_CRITERIA_TYPE_GAIN_HONORED_REPUTATION = 88,
+ ACHIEVEMENT_CRITERIA_TYPE_KNOWN_FACTIONS = 89,
+ ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM = 90,
+ ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM = 91,
+ ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED = 93,
+ ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED = 94,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALTH = 95,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_POWER = 96,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_STAT = 97,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER = 98,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_ARMOR = 99,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_RATING = 100,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT = 101,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_RECEIVED = 102,
+ ACHIEVEMENT_CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED = 103,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEAL_CASTED = 104,
+ ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED = 105,
+ ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED = 106,
+ ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED = 107,
+ ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108,
+ ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109,
+ ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 = 110, // TODO: target entry is missing
+ ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE = 112,
+ ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
+ ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
+ ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS = 115,
ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS = 119,
// 120
// 121
// 122
// 123
// 0..123 => 124 criteria types total
- ACHIEVEMENT_CRITERIA_TYPE_TOTAL = 124
};
+#define ACHIEVEMENT_CRITERIA_TYPE_TOTAL 124
+
enum AchievementCategory
{
CATEGORY_CHILDRENS_WEEK = 163
@@ -286,7 +282,7 @@ enum Difficulty
enum SpawnMask
{
- SPAWNMASK_CONTINENT = (1 << REGULAR_DIFFICULTY), // any any maps without spawn modes
+ SPAWNMASK_CONTINENT = (1 << REGULAR_DIFFICULTY), // any maps without spawn modes
SPAWNMASK_DUNGEON_NORMAL = (1 << DUNGEON_DIFFICULTY_NORMAL),
SPAWNMASK_DUNGEON_HEROIC = (1 << DUNGEON_DIFFICULTY_HEROIC),
@@ -349,19 +345,19 @@ enum ItemEnchantmentType
enum ItemLimitCategoryMode
{
- ITEM_LIMIT_CATEGORY_MODE_HAVE = 0, // limit applied to amount items in inventory/bank
- ITEM_LIMIT_CATEGORY_MODE_EQUIP = 1 // limit applied to amount equipped items (including used gems)
+ ITEM_LIMIT_CATEGORY_MODE_HAVE = 0, // limit applied to amount items in inventory/bank
+ ITEM_LIMIT_CATEGORY_MODE_EQUIP = 1 // limit applied to amount equipped items (including used gems)
};
enum TotemCategoryType
{
- TOTEM_CATEGORY_TYPE_KNIFE = 1,
- TOTEM_CATEGORY_TYPE_TOTEM = 2,
- TOTEM_CATEGORY_TYPE_ROD = 3,
- TOTEM_CATEGORY_TYPE_PICK = 21,
- TOTEM_CATEGORY_TYPE_STONE = 22,
- TOTEM_CATEGORY_TYPE_HAMMER = 23,
- TOTEM_CATEGORY_TYPE_SPANNER = 24
+ TOTEM_CATEGORY_TYPE_KNIFE = 1,
+ TOTEM_CATEGORY_TYPE_TOTEM = 2,
+ TOTEM_CATEGORY_TYPE_ROD = 3,
+ TOTEM_CATEGORY_TYPE_PICK = 21,
+ TOTEM_CATEGORY_TYPE_STONE = 22,
+ TOTEM_CATEGORY_TYPE_HAMMER = 23,
+ TOTEM_CATEGORY_TYPE_SPANNER = 24
};
// SummonProperties.dbc, col 1
diff --git a/src/server/game/DungeonFinding/LFG.h b/src/server/game/DungeonFinding/LFG.h
index abdb0ffa511..6ad30547670 100755
--- a/src/server/game/DungeonFinding/LFG.h
+++ b/src/server/game/DungeonFinding/LFG.h
@@ -49,7 +49,7 @@ enum LfgUpdateType
LFG_UPDATETYPE_GROUP_FOUND = 10,
LFG_UPDATETYPE_ADDED_TO_QUEUE = 12,
LFG_UPDATETYPE_PROPOSAL_BEGIN = 13,
- LFG_UPDATETYPE_CLEAR_LOCK_LIST = 14,
+ LFG_UPDATETYPE_UPDATE_STATUS = 14,
LFG_UPDATETYPE_GROUP_MEMBER_OFFLINE = 15,
LFG_UPDATETYPE_GROUP_DISBAND_UNK16 = 16, // FIXME: Sometimes at group disband
};
diff --git a/src/server/game/DungeonFinding/LFGGroupData.cpp b/src/server/game/DungeonFinding/LFGGroupData.cpp
index 712ae5132b0..a4ee230b5eb 100644
--- a/src/server/game/DungeonFinding/LFGGroupData.cpp
+++ b/src/server/game/DungeonFinding/LFGGroupData.cpp
@@ -93,11 +93,16 @@ LfgState LfgGroupData::GetOldState() const
return m_OldState;
}
-const LfgGuidSet &LfgGroupData::GetPlayers() const
+LfgGuidSet const& LfgGroupData::GetPlayers() const
{
return m_Players;
}
+uint8 LfgGroupData::GetPlayerCount() const
+{
+ return m_Players.size();
+}
+
uint64 LfgGroupData::GetLeader() const
{
return m_Leader;
diff --git a/src/server/game/DungeonFinding/LFGGroupData.h b/src/server/game/DungeonFinding/LFGGroupData.h
index 43cd64f97c3..2054e776282 100644
--- a/src/server/game/DungeonFinding/LFGGroupData.h
+++ b/src/server/game/DungeonFinding/LFGGroupData.h
@@ -54,6 +54,7 @@ class LfgGroupData
LfgState GetState() const;
LfgState GetOldState() const;
LfgGuidSet const& GetPlayers() const;
+ uint8 GetPlayerCount() const;
uint64 GetLeader() const;
// Dungeon
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 2001ddd07b2..c91be00080e 100755
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -40,7 +40,7 @@ LFGMgr::LFGMgr(): m_QueueTimer(0), m_lfgProposalId(1),
LFGMgr::~LFGMgr()
{
- for (LfgRewardMap::iterator itr = m_RewardMap.begin(); itr != m_RewardMap.end(); ++itr)
+ for (LfgRewardContainer::iterator itr = RewardMapStore.begin(); itr != RewardMapStore.end(); ++itr)
delete itr->second;
}
@@ -52,8 +52,9 @@ void LFGMgr::_LoadFromDB(Field* fields, uint64 guid)
if (!IS_GROUP(guid))
return;
- uint32 dungeon = fields[16].GetUInt32();
+ SetLeader(guid, MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER));
+ uint32 dungeon = fields[16].GetUInt32();
uint8 state = fields[17].GetUInt8();
if (!dungeon || !state)
@@ -141,7 +142,7 @@ std::string LFGMgr::GetRolesString(uint8 roles)
return rolesstr;
}
-char const * LFGMgr::GetStateString(LfgState state)
+std::string LFGMgr::GetStateString(LfgState state)
{
int32 entry = LANG_LFG_ERROR;
switch (state)
@@ -171,8 +172,8 @@ char const * LFGMgr::GetStateString(LfgState state)
entry = LANG_LFG_STATE_RAIDBROWSER;
break;
}
- char const * const str = sObjectMgr->GetTrinityStringForDBCLocale(entry);
- return str;
+
+ return std::string(sObjectMgr->GetTrinityStringForDBCLocale(entry));
}
/// Load rewards for completing dungeons
@@ -180,9 +181,9 @@ void LFGMgr::LoadRewards()
{
uint32 oldMSTime = getMSTime();
- for (LfgRewardMap::iterator itr = m_RewardMap.begin(); itr != m_RewardMap.end(); ++itr)
+ for (LfgRewardContainer::iterator itr = RewardMapStore.begin(); itr != RewardMapStore.end(); ++itr)
delete itr->second;
- m_RewardMap.clear();
+ RewardMapStore.clear();
// ORDER BY is very important for GetRandomDungeonReward!
QueryResult result = WorldDatabase.Query("SELECT dungeonId, maxLevel, firstQuestId, firstMoneyVar, firstXPVar, otherQuestId, otherMoneyVar, otherXPVar FROM lfg_dungeon_rewards ORDER BY dungeonId, maxLevel ASC");
@@ -232,7 +233,7 @@ void LFGMgr::LoadRewards()
otherQuestId = 0;
}
- m_RewardMap.insert(LfgRewardMap::value_type(dungeonId, new LfgReward(maxLevel, firstQuestId, firstMoneyVar, firstXPVar, otherQuestId, otherMoneyVar, otherXPVar)));
+ RewardMapStore.insert(LfgRewardContainer::value_type(dungeonId, new LfgReward(maxLevel, firstQuestId, firstMoneyVar, firstXPVar, otherQuestId, otherMoneyVar, otherXPVar)));
++count;
} while (result->NextRow());
@@ -241,23 +242,23 @@ void LFGMgr::LoadRewards()
LFGDungeonData const* LFGMgr::GetLFGDungeon(uint32 id)
{
- LFGDungeonMap::const_iterator itr = m_LfgDungeonMap.find(id);
- if (itr != m_LfgDungeonMap.end())
+ LFGDungeonContainer::const_iterator itr = LfgDungeonStore.find(id);
+ if (itr != LfgDungeonStore.end())
return &(itr->second);
return NULL;
}
-LFGDungeonMap & LFGMgr::GetLFGDungeonMap()
+LFGDungeonContainer & LFGMgr::GetLFGDungeonMap()
{
- return m_LfgDungeonMap;
+ return LfgDungeonStore;
}
void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
{
uint32 oldMSTime = getMSTime();
- m_LfgDungeonMap.clear();
+ LfgDungeonStore.clear();
// Initialize Dungeon map with data from dbcs
for (uint32 i = 0; i < sLFGDungeonStore.GetNumRows(); ++i)
@@ -272,7 +273,7 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
case LFG_TYPE_HEROIC:
case LFG_TYPE_RAID:
case LFG_TYPE_RANDOM:
- m_LfgDungeonMap[dungeon->ID] = LFGDungeonData(dungeon);
+ LfgDungeonStore[dungeon->ID] = LFGDungeonData(dungeon);
break;
}
}
@@ -292,8 +293,8 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
{
Field* fields = result->Fetch();
uint32 dungeonId = fields[0].GetUInt32();
- LFGDungeonMap::iterator dungeonItr = m_LfgDungeonMap.find(dungeonId);
- if (dungeonItr == m_LfgDungeonMap.end())
+ LFGDungeonContainer::iterator dungeonItr = LfgDungeonStore.find(dungeonId);
+ if (dungeonItr == LfgDungeonStore.end())
{
sLog->outError(LOG_FILTER_SQL, "table `lfg_entrances` contains coordinates for wrong dungeon %u", dungeonId);
continue;
@@ -312,7 +313,7 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %u lfg entrance positions in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
// Fill all other teleport coords from areatriggers
- for (LFGDungeonMap::iterator itr = m_LfgDungeonMap.begin(); itr != m_LfgDungeonMap.end(); ++itr)
+ for (LFGDungeonContainer::iterator itr = LfgDungeonStore.begin(); itr != LfgDungeonStore.end(); ++itr)
{
LFGDungeonData& dungeon = itr->second;
@@ -334,15 +335,15 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
}
if (dungeon.type != LFG_TYPE_RANDOM)
- m_CachedDungeonMap[dungeon.group].insert(dungeon.id);
- m_CachedDungeonMap[0].insert(dungeon.id);
+ CachedDungeonMapStore[dungeon.group].insert(dungeon.id);
+ CachedDungeonMapStore[0].insert(dungeon.id);
}
if (reload)
{
- m_CachedDungeonMap.clear();
+ CachedDungeonMapStore.clear();
// Recalculate locked dungeons
- for (LfgPlayerDataMap::const_iterator it = m_Players.begin(); it != m_Players.end(); ++it)
+ for (LfgPlayerDataContainer::const_iterator it = PlayersStore.begin(); it != PlayersStore.end(); ++it)
if (Player* player = ObjectAccessor::FindPlayer(it->first))
InitializeLockedDungeons(player);
}
@@ -356,9 +357,9 @@ void LFGMgr::Update(uint32 diff)
time_t currTime = time(NULL);
// Remove obsolete role checks
- for (LfgRoleCheckMap::iterator it = m_RoleChecks.begin(); it != m_RoleChecks.end();)
+ for (LfgRoleCheckContainer::iterator it = RoleChecksStore.begin(); it != RoleChecksStore.end();)
{
- LfgRoleCheckMap::iterator itRoleCheck = it++;
+ LfgRoleCheckContainer::iterator itRoleCheck = it++;
LfgRoleCheck& roleCheck = itRoleCheck->second;
if (currTime < roleCheck.cancelTime)
continue;
@@ -372,26 +373,26 @@ void LFGMgr::Update(uint32 diff)
if (guid == roleCheck.leader)
SendLfgJoinResult(guid, LfgJoinResultData(LFG_JOIN_FAILED, LFG_ROLECHECK_MISSING_ROLE));
}
- m_RoleChecks.erase(itRoleCheck);
+ RoleChecksStore.erase(itRoleCheck);
}
// Remove obsolete proposals
- for (LfgProposalMap::iterator it = m_Proposals.begin(); it != m_Proposals.end();)
+ for (LfgProposalContainer::iterator it = ProposalsStore.begin(); it != ProposalsStore.end();)
{
- LfgProposalMap::iterator itRemove = it++;
+ LfgProposalContainer::iterator itRemove = it++;
if (itRemove->second.cancelTime < currTime)
RemoveProposal(itRemove, LFG_UPDATETYPE_PROPOSAL_FAILED);
}
// Remove obsolete kicks
- for (LfgPlayerBootMap::iterator it = m_Boots.begin(); it != m_Boots.end();)
+ for (LfgPlayerBootContainer::iterator it = BootsStore.begin(); it != BootsStore.end();)
{
- LfgPlayerBootMap::iterator itBoot = it++;
+ LfgPlayerBootContainer::iterator itBoot = it++;
LfgPlayerBoot& boot = itBoot->second;
if (boot.cancelTime < currTime)
{
boot.inProgress = false;
- for (LfgAnswerMap::const_iterator itVotes = boot.votes.begin(); itVotes != boot.votes.end(); ++itVotes)
+ for (LfgAnswerContainer::const_iterator itVotes = boot.votes.begin(); itVotes != boot.votes.end(); ++itVotes)
{
uint64 pguid = itVotes->first;
if (pguid != boot.victim)
@@ -399,26 +400,26 @@ void LFGMgr::Update(uint32 diff)
SetState(pguid, LFG_STATE_DUNGEON);
}
SetState(itBoot->first, LFG_STATE_DUNGEON);
- m_Boots.erase(itBoot);
+ BootsStore.erase(itBoot);
}
}
uint32 lastProposalId = m_lfgProposalId;
// Check if a proposal can be formed with the new groups being added
- for (LfgQueueMap::iterator it = m_Queues.begin(); it != m_Queues.end(); ++it)
+ for (LfgQueueContainer::iterator it = QueuesStore.begin(); it != QueuesStore.end(); ++it)
if (uint8 newProposals = it->second.FindGroups())
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::Update: Found %u new groups in queue %u", newProposals, it->first);
if (lastProposalId != m_lfgProposalId)
{
// FIXME lastProposalId ? lastProposalId +1 ?
- for (LfgProposalMap::const_iterator itProposal = m_Proposals.find(m_lfgProposalId); itProposal != m_Proposals.end(); ++itProposal)
+ for (LfgProposalContainer::const_iterator itProposal = ProposalsStore.find(m_lfgProposalId); itProposal != ProposalsStore.end(); ++itProposal)
{
uint32 proposalId = itProposal->first;
- LfgProposal& proposal = m_Proposals[proposalId];
+ LfgProposal& proposal = ProposalsStore[proposalId];
uint64 guid = 0;
- for (LfgProposalPlayerMap::const_iterator itPlayers = proposal.players.begin(); itPlayers != proposal.players.end(); ++itPlayers)
+ for (LfgProposalPlayerContainer::const_iterator itPlayers = proposal.players.begin(); itPlayers != proposal.players.end(); ++itPlayers)
{
guid = itPlayers->first;
SetState(guid, LFG_STATE_PROPOSAL);
@@ -442,7 +443,7 @@ void LFGMgr::Update(uint32 diff)
{
m_QueueTimer = 0;
time_t currTime = time(NULL);
- for (LfgQueueMap::iterator it = m_Queues.begin(); it != m_Queues.end(); ++it)
+ for (LfgQueueContainer::iterator it = QueuesStore.begin(); it != QueuesStore.end(); ++it)
it->second.UpdateQueueTimers(currTime);
}
else
@@ -562,7 +563,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
}
else // Remove from queue and rejoin
{
- LfgQueue& queue = GetQueue(gguid);
+ LFGQueue& queue = GetQueue(gguid);
queue.RemoveFromQueue(gguid);
}
}
@@ -673,7 +674,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
if (grp) // Begin rolecheck
{
// Create new rolecheck
- LfgRoleCheck& roleCheck = m_RoleChecks[gguid];
+ LfgRoleCheck& roleCheck = RoleChecksStore[gguid];
roleCheck.cancelTime = time_t(time(NULL)) + LFG_TIME_ROLECHECK;
roleCheck.state = LFG_ROLECHECK_INITIALITING;
roleCheck.leader = guid;
@@ -711,7 +712,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
{
LfgRolesMap rolesMap;
rolesMap[guid] = roles;
- LfgQueue& queue = GetQueue(gguid);
+ LFGQueue& queue = GetQueue(gguid);
queue.AddQueueData(guid, time_t(time(NULL)), dungeons, rolesMap);
if (!isContinue)
@@ -757,7 +758,7 @@ void LFGMgr::LeaveLfg(uint64 guid)
case LFG_STATE_QUEUED:
if (gguid)
{
- LfgQueue& queue = GetQueue(gguid);
+ LFGQueue& queue = GetQueue(gguid);
queue.RemoveFromQueue(gguid);
RestoreState(gguid, "Leave queue");
const LfgGuidSet& players = GetPlayers(gguid);
@@ -770,7 +771,7 @@ void LFGMgr::LeaveLfg(uint64 guid)
}
else
{
- LfgQueue& queue = GetQueue(guid);
+ LFGQueue& queue = GetQueue(guid);
queue.RemoveFromQueue(guid);
SendLfgUpdatePlayer(guid, LfgUpdateData(LFG_UPDATETYPE_REMOVED_FROM_QUEUE));
ClearState(guid, "Leave queue");
@@ -783,11 +784,11 @@ void LFGMgr::LeaveLfg(uint64 guid)
case LFG_STATE_PROPOSAL:
{
// Remove from Proposals
- LfgProposalMap::iterator it = m_Proposals.begin();
+ LfgProposalContainer::iterator it = ProposalsStore.begin();
uint64 pguid = gguid == guid ? GetLeader(gguid) : guid;
- while (it != m_Proposals.end())
+ while (it != ProposalsStore.end())
{
- LfgProposalPlayerMap::iterator itPlayer = it->second.players.find(pguid);
+ LfgProposalPlayerContainer::iterator itPlayer = it->second.players.find(pguid);
if (itPlayer != it->second.players.end())
{
// Mark the player/leader of group who left as didn't accept the proposal
@@ -798,7 +799,7 @@ void LFGMgr::LeaveLfg(uint64 guid)
}
// Remove from queue - if proposal is found, RemoveProposal will call RemoveFromQueue
- if (it != m_Proposals.end())
+ if (it != ProposalsStore.end())
RemoveProposal(it, LFG_UPDATETYPE_PROPOSAL_DECLINED);
break;
}
@@ -820,8 +821,8 @@ void LFGMgr::UpdateRoleCheck(uint64 gguid, uint64 guid /* = 0 */, uint8 roles /*
return;
LfgRolesMap check_roles;
- LfgRoleCheckMap::iterator itRoleCheck = m_RoleChecks.find(gguid);
- if (itRoleCheck == m_RoleChecks.end())
+ LfgRoleCheckContainer::iterator itRoleCheck = RoleChecksStore.find(gguid);
+ if (itRoleCheck == RoleChecksStore.end())
return;
LfgRoleCheck& roleCheck = itRoleCheck->second;
@@ -884,14 +885,14 @@ void LFGMgr::UpdateRoleCheck(uint64 gguid, uint64 guid /* = 0 */, uint8 roles /*
if (roleCheck.state == LFG_ROLECHECK_FINISHED)
{
SetState(gguid, LFG_STATE_QUEUED);
- LfgQueue& queue = GetQueue(gguid);
+ LFGQueue& queue = GetQueue(gguid);
queue.AddQueueData(gguid, time_t(time(NULL)), roleCheck.dungeons, roleCheck.roles);
- m_RoleChecks.erase(itRoleCheck);
+ RoleChecksStore.erase(itRoleCheck);
}
else if (roleCheck.state != LFG_ROLECHECK_INITIALITING)
{
RestoreState(gguid, "Rolecheck Failed");
- m_RoleChecks.erase(itRoleCheck);
+ RoleChecksStore.erase(itRoleCheck);
}
}
@@ -949,19 +950,19 @@ bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles, bool removeLeaderFlag /*= true
if (it->second == PLAYER_ROLE_NONE)
return false;
- if (it->second & PLAYER_ROLE_TANK)
+ if (it->second & PLAYER_ROLE_DAMAGE)
{
- if (it->second != PLAYER_ROLE_TANK)
+ if (it->second != PLAYER_ROLE_DAMAGE)
{
- it->second -= PLAYER_ROLE_TANK;
+ it->second -= PLAYER_ROLE_DAMAGE;
if (CheckGroupRoles(groles, false))
return true;
- it->second += PLAYER_ROLE_TANK;
+ it->second += PLAYER_ROLE_DAMAGE;
}
- else if (tank == LFG_TANKS_NEEDED)
+ else if (damage == LFG_DPS_NEEDED)
return false;
else
- tank++;
+ damage++;
}
if (it->second & PLAYER_ROLE_HEALER)
@@ -979,19 +980,19 @@ bool LFGMgr::CheckGroupRoles(LfgRolesMap& groles, bool removeLeaderFlag /*= true
healer++;
}
- if (it->second & PLAYER_ROLE_DAMAGE)
+ if (it->second & PLAYER_ROLE_TANK)
{
- if (it->second != PLAYER_ROLE_DAMAGE)
+ if (it->second != PLAYER_ROLE_TANK)
{
- it->second -= PLAYER_ROLE_DAMAGE;
+ it->second -= PLAYER_ROLE_TANK;
if (CheckGroupRoles(groles, false))
return true;
- it->second += PLAYER_ROLE_DAMAGE;
+ it->second += PLAYER_ROLE_TANK;
}
- else if (damage == LFG_DPS_NEEDED)
+ else if (tank == LFG_TANKS_NEEDED)
return false;
else
- damage++;
+ tank++;
}
}
return (tank + healer + damage) == uint8(groles.size());
@@ -1006,7 +1007,7 @@ void LFGMgr::MakeNewGroup(const LfgProposal& proposal)
LfgGuidList players;
LfgGuidList playersToTeleport;
- for (LfgProposalPlayerMap::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
+ for (LfgProposalPlayerContainer::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
{
uint64 guid = it->first;
if (guid == proposal.leader)
@@ -1071,7 +1072,7 @@ void LFGMgr::MakeNewGroup(const LfgProposal& proposal)
uint32 LFGMgr::AddProposal(LfgProposal const& proposal)
{
- m_Proposals[++m_lfgProposalId] = proposal;
+ ProposalsStore[++m_lfgProposalId] = proposal;
return m_lfgProposalId;
}
@@ -1085,14 +1086,14 @@ uint32 LFGMgr::AddProposal(LfgProposal const& proposal)
void LFGMgr::UpdateProposal(uint32 proposalId, uint64 guid, bool accept)
{
// Check if the proposal exists
- LfgProposalMap::iterator itProposal = m_Proposals.find(proposalId);
- if (itProposal == m_Proposals.end())
+ LfgProposalContainer::iterator itProposal = ProposalsStore.find(proposalId);
+ if (itProposal == ProposalsStore.end())
return;
LfgProposal& proposal = itProposal->second;
// Check if proposal have the current player
- LfgProposalPlayerMap::iterator itProposalPlayer = proposal.players.find(guid);
+ LfgProposalPlayerContainer::iterator itProposalPlayer = proposal.players.find(guid);
if (itProposalPlayer == proposal.players.end())
return;
@@ -1108,13 +1109,13 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint64 guid, bool accept)
// check if all have answered and reorder players (leader first)
bool allAnswered = true;
- for (LfgProposalPlayerMap::const_iterator itPlayers = proposal.players.begin(); itPlayers != proposal.players.end(); ++itPlayers)
+ for (LfgProposalPlayerContainer::const_iterator itPlayers = proposal.players.begin(); itPlayers != proposal.players.end(); ++itPlayers)
if (itPlayers->second.accept != LFG_ANSWER_AGREE) // No answer (-1) or not accepted (0)
allAnswered = false;
if (!allAnswered)
{
- for (LfgProposalPlayerMap::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
+ for (LfgProposalPlayerContainer::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
{
uint64 guid = it->first;
SendLfgUpdateProposal(guid, proposalId, proposal);
@@ -1126,9 +1127,9 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint64 guid, bool accept)
proposal.state = LFG_PROPOSAL_SUCCESS;
time_t joinTime = time_t(time(NULL));
- LfgQueue& queue = GetQueue(guid);
+ LFGQueue& queue = GetQueue(guid);
LfgUpdateData updateData = LfgUpdateData(LFG_UPDATETYPE_GROUP_FOUND);
- for (LfgProposalPlayerMap::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
+ for (LfgProposalPlayerContainer::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
{
uint64 pguid = it->first;
uint64 gguid = it->second.group;
@@ -1170,7 +1171,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint64 guid, bool accept)
break;
}
- m_teleport.push_back(pguid);
+ teleportStore.push_back(pguid);
SetState(pguid, LFG_STATE_DUNGEON);
}
@@ -1179,7 +1180,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint64 guid, bool accept)
queue.RemoveFromQueue(*it);
MakeNewGroup(proposal);
- m_Proposals.erase(itProposal);
+ ProposalsStore.erase(itProposal);
}
/**
@@ -1188,7 +1189,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint64 guid, bool accept)
@param[in] itProposal Iterator to the proposal to remove
@param[in] type Type of removal (LFG_UPDATETYPE_PROPOSAL_FAILED, LFG_UPDATETYPE_PROPOSAL_DECLINED)
*/
-void LFGMgr::RemoveProposal(LfgProposalMap::iterator itProposal, LfgUpdateType type)
+void LFGMgr::RemoveProposal(LfgProposalContainer::iterator itProposal, LfgUpdateType type)
{
LfgProposal& proposal = itProposal->second;
proposal.state = LFG_PROPOSAL_FAILED;
@@ -1196,13 +1197,13 @@ void LFGMgr::RemoveProposal(LfgProposalMap::iterator itProposal, LfgUpdateType t
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::RemoveProposal: Proposal %u, state FAILED, UpdateType %u", itProposal->first, type);
// Mark all people that didn't answered as no accept
if (type == LFG_UPDATETYPE_PROPOSAL_FAILED)
- for (LfgProposalPlayerMap::iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
+ for (LfgProposalPlayerContainer::iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
if (it->second.accept == LFG_ANSWER_PENDING)
it->second.accept = LFG_ANSWER_DENY;
// Mark players/groups to be removed
LfgGuidSet toRemove;
- for (LfgProposalPlayerMap::iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
+ for (LfgProposalPlayerContainer::iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
{
if (it->second.accept == LFG_ANSWER_AGREE)
continue;
@@ -1217,7 +1218,7 @@ void LFGMgr::RemoveProposal(LfgProposalMap::iterator itProposal, LfgUpdateType t
}
// Notify players
- for (LfgProposalPlayerMap::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
+ for (LfgProposalPlayerContainer::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
{
uint64 guid = it->first;
uint64 gguid = it->second.group ? it->second.group : guid;
@@ -1260,7 +1261,7 @@ void LFGMgr::RemoveProposal(LfgProposalMap::iterator itProposal, LfgUpdateType t
}
}
- LfgQueue& queue = GetQueue(proposal.players.begin()->first);
+ LFGQueue& queue = GetQueue(proposal.players.begin()->first);
// Remove players/groups from queue
for (LfgGuidSet::const_iterator it = toRemove.begin(); it != toRemove.end(); ++it)
{
@@ -1276,7 +1277,7 @@ void LFGMgr::RemoveProposal(LfgProposalMap::iterator itProposal, LfgUpdateType t
queue.AddToQueue(guid);
}
- m_Proposals.erase(itProposal);
+ ProposalsStore.erase(itProposal);
}
/**
@@ -1291,7 +1292,7 @@ void LFGMgr::InitBoot(uint64 gguid, uint64 kicker, uint64 victim, std::string co
{
SetState(gguid, LFG_STATE_BOOT);
- LfgPlayerBoot& boot = m_Boots[gguid];
+ LfgPlayerBoot& boot = BootsStore[gguid];
boot.inProgress = true;
boot.cancelTime = time_t(time(NULL)) + LFG_TIME_BOOT;
boot.reason = reason;
@@ -1327,8 +1328,8 @@ void LFGMgr::UpdateBoot(uint64 guid, bool accept)
if (!gguid)
return;
- LfgPlayerBootMap::iterator itBoot = m_Boots.find(gguid);
- if (itBoot == m_Boots.end())
+ LfgPlayerBootContainer::iterator itBoot = BootsStore.find(gguid);
+ if (itBoot == BootsStore.end())
return;
LfgPlayerBoot& boot = itBoot->second;
@@ -1340,7 +1341,7 @@ void LFGMgr::UpdateBoot(uint64 guid, bool accept)
uint8 votesNum = 0;
uint8 agreeNum = 0;
- for (LfgAnswerMap::const_iterator itVotes = boot.votes.begin(); itVotes != boot.votes.end(); ++itVotes)
+ for (LfgAnswerContainer::const_iterator itVotes = boot.votes.begin(); itVotes != boot.votes.end(); ++itVotes)
{
if (itVotes->second != LFG_ANSWER_PENDING)
{
@@ -1356,7 +1357,7 @@ void LFGMgr::UpdateBoot(uint64 guid, bool accept)
// Send update info to all players
boot.inProgress = false;
- for (LfgAnswerMap::const_iterator itVotes = boot.votes.begin(); itVotes != boot.votes.end(); ++itVotes)
+ for (LfgAnswerContainer::const_iterator itVotes = boot.votes.begin(); itVotes != boot.votes.end(); ++itVotes)
{
uint64 pguid = itVotes->first;
if (pguid != boot.victim)
@@ -1373,7 +1374,7 @@ void LFGMgr::UpdateBoot(uint64 guid, bool accept)
Player::RemoveFromGroup(group, boot.victim, GROUP_REMOVEMETHOD_KICK_LFG);
DecreaseKicksLeft(gguid);
}
- m_Boots.erase(itBoot);
+ BootsStore.erase(itBoot);
}
/**
@@ -1395,9 +1396,9 @@ void LFGMgr::TeleportPlayer(Player* player, bool out, bool fromOpcode /*= false*
{
sLog->outDebug(LOG_FILTER_LFG, "TeleportPlayer: Player %s not in group/lfggroup or dungeon not found!",
player->GetName().c_str());
- player->GetSession()->SendLfgTeleportError(uint8(LFG_TELEPORTERROR_INVALID_LOCATION));
+ player->GetSession()->SendLfgTeleportError(uint8(LFG_TELEPORTERROR_INVALID_LOCATION));
return;
- }
+ }
if (out)
{
@@ -1567,7 +1568,7 @@ const LfgDungeonSet& LFGMgr::GetDungeonsByRandom(uint32 randomdungeon)
{
LFGDungeonData const* dungeon = GetLFGDungeon(randomdungeon);
uint32 group = dungeon ? dungeon->group : 0;
- return m_CachedDungeonMap[group];
+ return CachedDungeonMapStore[group];
}
/**
@@ -1580,8 +1581,8 @@ const LfgDungeonSet& LFGMgr::GetDungeonsByRandom(uint32 randomdungeon)
LfgReward const* LFGMgr::GetRandomDungeonReward(uint32 dungeon, uint8 level)
{
LfgReward const* rew = NULL;
- LfgRewardMapBounds bounds = m_RewardMap.equal_range(dungeon & 0x00FFFFFF);
- for (LfgRewardMap::const_iterator itr = bounds.first; itr != bounds.second; ++itr)
+ LfgRewardContainerBounds bounds = RewardMapStore.equal_range(dungeon & 0x00FFFFFF);
+ for (LfgRewardContainer::const_iterator itr = bounds.first; itr != bounds.second; ++itr)
{
rew = itr->second;
// ordered properly at loading
@@ -1611,9 +1612,9 @@ LfgState LFGMgr::GetState(uint64 guid)
{
LfgState state;
if (IS_GROUP(guid))
- state = m_Groups[guid].GetState();
+ state = GroupsStore[guid].GetState();
else
- state = m_Players[guid].GetState();
+ state = PlayersStore[guid].GetState();
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::GetState: [" UI64FMTD "] = %u", guid, state);
return state;
@@ -1621,29 +1622,41 @@ LfgState LFGMgr::GetState(uint64 guid)
uint32 LFGMgr::GetDungeon(uint64 guid, bool asId /*= true */)
{
- uint32 dungeon = m_Groups[guid].GetDungeon(asId);
+ uint32 dungeon = GroupsStore[guid].GetDungeon(asId);
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::GetDungeon: [" UI64FMTD "] asId: %u = %u", guid, asId, dungeon);
return dungeon;
}
+uint32 LFGMgr::GetDungeonMapId(uint64 guid)
+{
+ uint32 dungeonId = GroupsStore[guid].GetDungeon(true);
+ uint32 mapId = 0;
+ if (dungeonId)
+ if (LFGDungeonData const* dungeon = GetLFGDungeon(dungeonId))
+ mapId = dungeon->map;
+
+ sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::GetDungeonMapId: [" UI64FMTD "] = %u (DungeonId = %u)", guid, mapId, dungeonId);
+ return mapId;
+}
+
uint8 LFGMgr::GetRoles(uint64 guid)
{
- uint8 roles = m_Players[guid].GetRoles();
+ uint8 roles = PlayersStore[guid].GetRoles();
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::GetRoles: [" UI64FMTD "] = %u", guid, roles);
return roles;
}
const std::string& LFGMgr::GetComment(uint64 guid)
{
- sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::GetComment: [" UI64FMTD "] = %s", guid, m_Players[guid].GetComment().c_str());
- return m_Players[guid].GetComment();
+ sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::GetComment: [" UI64FMTD "] = %s", guid, PlayersStore[guid].GetComment().c_str());
+ return PlayersStore[guid].GetComment();
}
bool LFGMgr::IsTeleported(uint64 pguid)
{
- if (std::find(m_teleport.begin(), m_teleport.end(), pguid) != m_teleport.end())
+ if (std::find(teleportStore.begin(), teleportStore.end(), pguid) != teleportStore.end())
{
- m_teleport.remove(pguid);
+ teleportStore.remove(pguid);
return true;
}
return false;
@@ -1652,37 +1665,46 @@ bool LFGMgr::IsTeleported(uint64 pguid)
const LfgDungeonSet& LFGMgr::GetSelectedDungeons(uint64 guid)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::GetSelectedDungeons: [" UI64FMTD "]", guid);
- return m_Players[guid].GetSelectedDungeons();
+ return PlayersStore[guid].GetSelectedDungeons();
}
const LfgLockMap& LFGMgr::GetLockedDungeons(uint64 guid)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::GetLockedDungeons: [" UI64FMTD "]", guid);
- return m_Players[guid].GetLockedDungeons();
+ return PlayersStore[guid].GetLockedDungeons();
}
uint8 LFGMgr::GetKicksLeft(uint64 guid)
{
- uint8 kicks = m_Groups[guid].GetKicksLeft();
+ uint8 kicks = GroupsStore[guid].GetKicksLeft();
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::GetKicksLeft: [" UI64FMTD "] = %u", guid, kicks);
return kicks;
}
void LFGMgr::RestoreState(uint64 guid, char const *debugMsg)
{
- LfgGroupData& data = m_Groups[guid];
- char const * const ps = GetStateString(data.GetState());
- char const * const os = GetStateString(data.GetOldState());
- sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::RestoreState: Group: [" UI64FMTD "] (%s), State: %s, oldState: %s", guid, debugMsg, ps, os);
+ LfgGroupData& data = GroupsStore[guid];
+ if (sLog->ShouldLog(LOG_FILTER_LFG, LOG_LEVEL_DEBUG))
+ {
+ std::string const& ps = GetStateString(data.GetState());
+ std::string const& os = GetStateString(data.GetOldState());
+ sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::RestoreState: Group: [" UI64FMTD "] (%s) State: %s, oldState: %s",
+ guid, debugMsg, ps.c_str(), os.c_str());
+ }
+
data.RestoreState();
}
void LFGMgr::ClearState(uint64 guid, char const *debugMsg)
{
- LfgPlayerData& data = m_Players[guid];
- char const * const ps = GetStateString(data.GetState());
- char const * const os = GetStateString(data.GetOldState());
- sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::ClearState: Player: [" UI64FMTD "] (%s) State: %s, oldState: %s", guid, debugMsg, ps, os);
+ LfgPlayerData& data = PlayersStore[guid];
+ if (sLog->ShouldLog(LOG_FILTER_LFG, LOG_LEVEL_DEBUG))
+ {
+ std::string const& ps = GetStateString(data.GetState());
+ std::string const& os = GetStateString(data.GetOldState());
+ sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::ClearState: Player: [" UI64FMTD "] (%s) State: %s, oldState: %s",
+ guid, debugMsg, ps.c_str(), os.c_str());
+ }
data.ClearState();
}
@@ -1690,20 +1712,28 @@ void LFGMgr::SetState(uint64 guid, LfgState state)
{
if (IS_GROUP(guid))
{
- LfgGroupData& data = m_Groups[guid];
- char const * const ns = GetStateString(state);
- char const * const ps = GetStateString(data.GetState());
- char const * const os = GetStateString(data.GetOldState());
- sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::SetState: Group: [" UI64FMTD "] newState: %s, previous: %s, oldState: %s", guid, ns, ps, os);
+ LfgGroupData& data = GroupsStore[guid];
+ if (sLog->ShouldLog(LOG_FILTER_LFG, LOG_LEVEL_DEBUG))
+ {
+ std::string const& ns = GetStateString(state);
+ std::string const& ps = GetStateString(data.GetState());
+ std::string const& os = GetStateString(data.GetOldState());
+ sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::SetState: Group: [" UI64FMTD "] newState: %s, previous: %s, oldState: %s",
+ guid, ns.c_str(), ps.c_str(), os.c_str());
+ }
data.SetState(state);
}
else
{
- LfgPlayerData& data = m_Players[guid];
- char const * const ns = GetStateString(state);
- char const * const ps = GetStateString(data.GetState());
- char const * const os = GetStateString(data.GetOldState());
- sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::SetState: Player: [" UI64FMTD "] newState: %s, previous: %s, oldState: %s", guid, ns, ps, os);
+ LfgPlayerData& data = PlayersStore[guid];
+ if (sLog->ShouldLog(LOG_FILTER_LFG, LOG_LEVEL_DEBUG))
+ {
+ std::string const& ns = GetStateString(state);
+ std::string const& ps = GetStateString(data.GetState());
+ std::string const& os = GetStateString(data.GetOldState());
+ sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::SetState: Player: [" UI64FMTD "] newState: %s, previous: %s, oldState: %s",
+ guid, ns.c_str(), ps.c_str(), os.c_str());
+ }
data.SetState(state);
}
}
@@ -1711,73 +1741,83 @@ void LFGMgr::SetState(uint64 guid, LfgState state)
void LFGMgr::SetDungeon(uint64 guid, uint32 dungeon)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::SetDungeon: [" UI64FMTD "] dungeon %u", guid, dungeon);
- m_Groups[guid].SetDungeon(dungeon);
+ GroupsStore[guid].SetDungeon(dungeon);
}
void LFGMgr::SetRoles(uint64 guid, uint8 roles)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::SetRoles: [" UI64FMTD "] roles: %u", guid, roles);
- m_Players[guid].SetRoles(roles);
+ PlayersStore[guid].SetRoles(roles);
}
void LFGMgr::SetComment(uint64 guid, const std::string& comment)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::SetComment: [" UI64FMTD "] comment: %s", guid, comment.c_str());
- m_Players[guid].SetComment(comment);
+ PlayersStore[guid].SetComment(comment);
}
void LFGMgr::SetSelectedDungeons(uint64 guid, const LfgDungeonSet& dungeons)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::SetSelectedDungeons: [" UI64FMTD "]", guid);
- m_Players[guid].SetSelectedDungeons(dungeons);
+ PlayersStore[guid].SetSelectedDungeons(dungeons);
}
void LFGMgr::SetLockedDungeons(uint64 guid, const LfgLockMap& lock)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::SetLockedDungeons: [" UI64FMTD "]", guid);
- m_Players[guid].SetLockedDungeons(lock);
+ PlayersStore[guid].SetLockedDungeons(lock);
}
void LFGMgr::DecreaseKicksLeft(uint64 guid)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::DecreaseKicksLeft: [" UI64FMTD "]", guid);
- m_Groups[guid].DecreaseKicksLeft();
+ GroupsStore[guid].DecreaseKicksLeft();
}
void LFGMgr::RemovePlayerData(uint64 guid)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::RemovePlayerData: [" UI64FMTD "]", guid);
- LfgPlayerDataMap::iterator it = m_Players.find(guid);
- if (it != m_Players.end())
- m_Players.erase(it);
+ LfgPlayerDataContainer::iterator it = PlayersStore.find(guid);
+ if (it != PlayersStore.end())
+ PlayersStore.erase(it);
}
void LFGMgr::RemoveGroupData(uint64 guid)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::RemoveGroupData: [" UI64FMTD "]", guid);
- LfgGroupDataMap::iterator it = m_Groups.find(guid);
- if (it != m_Groups.end())
- m_Groups.erase(it);
+ LfgGroupDataContainer::iterator it = GroupsStore.find(guid);
+ if (it == GroupsStore.end())
+ return;
+
+ LfgGuidSet const& players = it->second.GetPlayers();
+ for (LfgGuidSet::const_iterator it = players.begin(); it != players.end(); ++it)
+ {
+ uint64 guid = (*it);
+ ClearState(*it, "Group Disband");
+ SetGroup(*it, 0);
+ SendLfgUpdateParty(guid, LfgUpdateData(LFG_UPDATETYPE_REMOVED_FROM_QUEUE));
+ }
+ GroupsStore.erase(it);
}
uint8 LFGMgr::GetTeam(uint64 guid)
{
- return m_Players[guid].GetTeam();
+ return PlayersStore[guid].GetTeam();
}
uint8 LFGMgr::RemovePlayerFromGroup(uint64 gguid, uint64 guid)
{
- return m_Groups[gguid].RemovePlayer(guid);
+ return GroupsStore[gguid].RemovePlayer(guid);
}
void LFGMgr::AddPlayerToGroup(uint64 gguid, uint64 guid)
{
- m_Groups[gguid].AddPlayer(guid);
+ GroupsStore[gguid].AddPlayer(guid);
}
void LFGMgr::SetLeader(uint64 gguid, uint64 leader)
{
- m_Groups[gguid].SetLeader(leader);
+ GroupsStore[gguid].SetLeader(leader);
}
void LFGMgr::SetTeam(uint64 guid, uint8 team)
@@ -1785,27 +1825,32 @@ void LFGMgr::SetTeam(uint64 guid, uint8 team)
if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
team = 0;
- m_Players[guid].SetTeam(team);
+ PlayersStore[guid].SetTeam(team);
}
uint64 LFGMgr::GetGroup(uint64 guid)
{
- return m_Players[guid].GetGroup();
+ return PlayersStore[guid].GetGroup();
}
void LFGMgr::SetGroup(uint64 guid, uint64 group)
{
- m_Players[guid].SetGroup(group);
+ PlayersStore[guid].SetGroup(group);
+}
+
+LfgGuidSet const& LFGMgr::GetPlayers(uint64 guid)
+{
+ return GroupsStore[guid].GetPlayers();
}
-const LfgGuidSet& LFGMgr::GetPlayers(uint64 guid)
+uint8 LFGMgr::GetPlayerCount(uint64 guid)
{
- return m_Groups[guid].GetPlayers();
+ return GroupsStore[guid].GetPlayerCount();
}
uint64 LFGMgr::GetLeader(uint64 guid)
{
- return m_Groups[guid].GetLeader();
+ return GroupsStore[guid].GetLeader();
}
bool LFGMgr::HasIgnore(uint64 guid1, uint64 guid2)
@@ -1823,43 +1868,43 @@ void LFGMgr::SendLfgRoleChosen(uint64 guid, uint64 pguid, uint8 roles)
player->GetSession()->SendLfgRoleChosen(pguid, roles);
}
-void LFGMgr::SendLfgRoleCheckUpdate(uint64 guid, const LfgRoleCheck& roleCheck)
+void LFGMgr::SendLfgRoleCheckUpdate(uint64 guid, LfgRoleCheck const& roleCheck)
{
if (Player* player = ObjectAccessor::FindPlayer(guid))
player->GetSession()->SendLfgRoleCheckUpdate(roleCheck);
}
-void LFGMgr::SendLfgUpdatePlayer(uint64 guid, const LfgUpdateData& data)
+void LFGMgr::SendLfgUpdatePlayer(uint64 guid, LfgUpdateData const& data)
{
if (Player* player = ObjectAccessor::FindPlayer(guid))
player->GetSession()->SendLfgUpdatePlayer(data);
}
-void LFGMgr::SendLfgUpdateParty(uint64 guid, const LfgUpdateData& data)
+void LFGMgr::SendLfgUpdateParty(uint64 guid, LfgUpdateData const& data)
{
if (Player* player = ObjectAccessor::FindPlayer(guid))
player->GetSession()->SendLfgUpdateParty(data);
}
-void LFGMgr::SendLfgJoinResult(uint64 guid, const LfgJoinResultData& data)
+void LFGMgr::SendLfgJoinResult(uint64 guid, LfgJoinResultData const& data)
{
if (Player* player = ObjectAccessor::FindPlayer(guid))
player->GetSession()->SendLfgJoinResult(data);
}
-void LFGMgr::SendLfgBootProposalUpdate(uint64 guid, const LfgPlayerBoot& boot)
+void LFGMgr::SendLfgBootProposalUpdate(uint64 guid, LfgPlayerBoot const& boot)
{
if (Player* player = ObjectAccessor::FindPlayer(guid))
player->GetSession()->SendLfgBootProposalUpdate(boot);
}
-void LFGMgr::SendLfgUpdateProposal(uint64 guid, uint32 proposalId, const LfgProposal& proposal)
+void LFGMgr::SendLfgUpdateProposal(uint64 guid, uint32 proposalId, LfgProposal const& proposal)
{
if (Player* player = ObjectAccessor::FindPlayer(guid))
player->GetSession()->SendLfgUpdateProposal(proposalId, proposal);
}
-void LFGMgr::SendLfgQueueStatus(uint64 guid, const LfgQueueStatusData& data)
+void LFGMgr::SendLfgQueueStatus(uint64 guid, LfgQueueStatusData const& data)
{
if (Player* player = ObjectAccessor::FindPlayer(guid))
player->GetSession()->SendLfgQueueStatus(data);
@@ -1867,10 +1912,10 @@ void LFGMgr::SendLfgQueueStatus(uint64 guid, const LfgQueueStatusData& data)
bool LFGMgr::IsLfgGroup(uint64 guid)
{
- return guid && IS_GROUP(guid) && m_Groups[guid].IsLfgGroup();
+ return guid && IS_GROUP(guid) && GroupsStore[guid].IsLfgGroup();
}
-LfgQueue& LFGMgr::GetQueue(uint64 guid)
+LFGQueue& LFGMgr::GetQueue(uint64 guid)
{
uint8 queueId = 0;
if (IS_GROUP(guid))
@@ -1882,10 +1927,10 @@ LfgQueue& LFGMgr::GetQueue(uint64 guid)
}
else
queueId = GetTeam(guid);
- return m_Queues[queueId];
+ return QueuesStore[queueId];
}
-bool LFGMgr::AllQueued(const LfgGuidList& check)
+bool LFGMgr::AllQueued(LfgGuidList const& check)
{
if (check.empty())
return false;
@@ -1899,7 +1944,7 @@ bool LFGMgr::AllQueued(const LfgGuidList& check)
// Only for debugging purposes
void LFGMgr::Clean()
{
- m_Queues.clear();
+ QueuesStore.clear();
}
bool LFGMgr::isOptionEnabled(uint32 option)
@@ -1917,6 +1962,13 @@ void LFGMgr::SetOptions(uint32 options)
m_options = options;
}
+LfgState LFGMgr::GetLfgStatus(uint64 guid, LfgUpdateData& data)
+{
+ LfgPlayerData& playerData = PlayersStore[guid];
+ data.dungeons = playerData.GetSelectedDungeons();
+ return playerData.GetState();
+}
+
bool LFGMgr::IsSeasonActive(uint32 dungeonId)
{
switch (dungeonId)
@@ -1933,24 +1985,28 @@ bool LFGMgr::IsSeasonActive(uint32 dungeonId)
return false;
}
-std::string LFGMgr::DumpQueueInfo(bool /*full*/)
+std::string LFGMgr::DumpQueueInfo(bool full)
{
- uint32 size = uint32(m_Queues.size());
+ uint32 size = uint32(QueuesStore.size());
std::ostringstream o;
o << "Number of Queues: " << size << "\n";
- for (LfgQueueMap::const_iterator itr = m_Queues.begin(); itr != m_Queues.end(); ++itr)
+ for (LfgQueueContainer::const_iterator itr = QueuesStore.begin(); itr != QueuesStore.end(); ++itr)
{
std::string const& queued = itr->second.DumpQueueInfo();
- std::string const& compatibles = itr->second.DumpCompatibleInfo();
+ std::string const& compatibles = itr->second.DumpCompatibleInfo(full);
o << queued << compatibles;
- /*
- if (full)
- {
- LfgCompatibleMap const& compatibles = itr->second.GetCompatibleMap();
- }
- */
}
return o.str();
}
+
+void LFGMgr::SetupGroupMember(uint64 guid, uint64 gguid)
+{
+ LfgDungeonSet dungeons;
+ dungeons.insert(GetDungeon(gguid));
+ SetSelectedDungeons(guid, dungeons);
+ SetState(guid, GetState(gguid));
+ SetGroup(guid, gguid);
+ AddPlayerToGroup(gguid, guid);
+}
diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h
index a7d2d826a09..ba1cc251278 100755
--- a/src/server/game/DungeonFinding/LFGMgr.h
+++ b/src/server/game/DungeonFinding/LFGMgr.h
@@ -129,18 +129,18 @@ struct LfgProposal;
struct LfgProposalPlayer;
struct LfgPlayerBoot;
-typedef std::map<uint8, LfgQueue> LfgQueueMap;
-typedef std::multimap<uint32, LfgReward const*> LfgRewardMap;
-typedef std::pair<LfgRewardMap::const_iterator, LfgRewardMap::const_iterator> LfgRewardMapBounds;
-typedef std::map<uint8, LfgDungeonSet> LfgCachedDungeonMap;
-typedef std::map<uint64, LfgAnswer> LfgAnswerMap;
-typedef std::map<uint64, LfgRoleCheck> LfgRoleCheckMap;
-typedef std::map<uint32, LfgProposal> LfgProposalMap;
-typedef std::map<uint64, LfgProposalPlayer> LfgProposalPlayerMap;
-typedef std::map<uint64, LfgPlayerBoot> LfgPlayerBootMap;
-typedef std::map<uint64, LfgGroupData> LfgGroupDataMap;
-typedef std::map<uint64, LfgPlayerData> LfgPlayerDataMap;
-typedef UNORDERED_MAP<uint32, LFGDungeonData> LFGDungeonMap;
+typedef std::map<uint8, LFGQueue> LfgQueueContainer;
+typedef std::multimap<uint32, LfgReward const*> LfgRewardContainer;
+typedef std::pair<LfgRewardContainer::const_iterator, LfgRewardContainer::const_iterator> LfgRewardContainerBounds;
+typedef std::map<uint8, LfgDungeonSet> LfgCachedDungeonContainer;
+typedef std::map<uint64, LfgAnswer> LfgAnswerContainer;
+typedef std::map<uint64, LfgRoleCheck> LfgRoleCheckContainer;
+typedef std::map<uint32, LfgProposal> LfgProposalContainer;
+typedef std::map<uint64, LfgProposalPlayer> LfgProposalPlayerContainer;
+typedef std::map<uint64, LfgPlayerBoot> LfgPlayerBootContainer;
+typedef std::map<uint64, LfgGroupData> LfgGroupDataContainer;
+typedef std::map<uint64, LfgPlayerData> LfgPlayerDataContainer;
+typedef UNORDERED_MAP<uint32, LFGDungeonData> LFGDungeonContainer;
// Data needed by SMSG_LFG_JOIN_RESULT
struct LfgJoinResultData
@@ -231,7 +231,7 @@ struct LfgProposal
uint32 encounters; ///< Dungeon Encounters
bool isNew; ///< Determines if it's new group or not
LfgGuidList queues; ///< Queue Ids to remove/readd
- LfgProposalPlayerMap players; ///< Players data
+ LfgProposalPlayerContainer players; ///< Players data
};
/// Stores all rolecheck info of a group that wants to join
@@ -250,7 +250,7 @@ struct LfgPlayerBoot
{
time_t cancelTime; ///< Time left to vote
bool inProgress; ///< Vote in progress
- LfgAnswerMap votes; ///< Player votes (-1 not answer | 0 Not agree | 1 agree)
+ LfgAnswerContainer votes; ///< Player votes (-1 not answer | 0 Not agree | 1 agree)
uint64 victim; ///< Player guid to be kicked (can't vote)
std::string reason; ///< kick reason
};
@@ -328,7 +328,6 @@ class LFGMgr
void SetGroup(uint64 guid, uint64 group);
void SetLeader(uint64 gguid, uint64 leader);
void SetState(uint64 guid, LfgState state);
- void SetSelectedDungeons(uint64 guid, LfgDungeonSet const& dungeons);
void _LoadFromDB(Field* fields, uint64 guid);
void _SaveToDB(uint64 guid, uint32 db_guid);
@@ -341,6 +340,7 @@ class LFGMgr
LfgLockMap const& GetLockedDungeons(uint64 guid);
LfgDungeonSet const& GetSelectedDungeons(uint64 guid);
uint32 GetDungeon(uint64 guid, bool asId = true);
+ uint32 GetDungeonMapId(uint64 guid);
LfgState GetState(uint64 guid);
uint8 GetKicksLeft(uint64 gguid);
uint64 GetLeader(uint64 guid);
@@ -348,6 +348,7 @@ class LFGMgr
uint8 GetRoles(uint64 guid);
std::string const& GetComment(uint64 gguid);
LfgGuidSet const& GetPlayers(uint64 guid);
+ uint8 GetPlayerCount(uint64 guid);
bool IsTeleported(uint64 guid);
@@ -360,32 +361,35 @@ class LFGMgr
bool isOptionEnabled(uint32 option);
uint32 GetOptions();
void SetOptions(uint32 options);
+ LfgState GetLfgStatus(uint64 guid, LfgUpdateData& data);
bool IsSeasonActive(uint32 dungeonId);
std::string DumpQueueInfo(bool full = false);
static std::string ConcatenateDungeons(LfgDungeonSet const& dungeons);
static std::string GetRolesString(uint8 roles);
- static char const * GetStateString(LfgState state);
+ static std::string GetStateString(LfgState state);
void LoadLFGDungeons(bool reload = false);
LFGDungeonData const* GetLFGDungeon(uint32 id);
- LFGDungeonMap& GetLFGDungeonMap();
- private:
+ LFGDungeonContainer& GetLFGDungeonMap();
+ void SetupGroupMember(uint64 guid, uint64 gguid);
+ uint64 GetGroup(uint64 guid);
+ private:
uint8 GetTeam(uint64 guid);
- uint64 GetGroup(uint64 guid);
void RestoreState(uint64 guid, char const *debugMsg);
void ClearState(uint64 guid, char const *debugMsg);
void SetDungeon(uint64 guid, uint32 dungeon);
+ void SetSelectedDungeons(uint64 guid, LfgDungeonSet const& dungeons);
void SetLockedDungeons(uint64 guid, LfgLockMap const& lock);
void DecreaseKicksLeft(uint64 guid);
// Proposals
- void RemoveProposal(LfgProposalMap::iterator itProposal, LfgUpdateType type);
+ void RemoveProposal(LfgProposalContainer::iterator itProposal, LfgUpdateType type);
void MakeNewGroup(LfgProposal const& proposal);
// Generic
- LfgQueue &GetQueue(uint64 guid);
+ LFGQueue &GetQueue(uint64 guid);
LfgDungeonSet const& GetDungeonsByRandom(uint32 randomdungeon);
LfgType GetDungeonType(uint32 dungeon);
@@ -402,18 +406,18 @@ class LFGMgr
uint32 m_lfgProposalId; ///< used as internal counter for proposals
uint32 m_options; ///< Stores config options
- LfgQueueMap m_Queues; ///< Queues
- LfgCachedDungeonMap m_CachedDungeonMap; ///< Stores all dungeons by groupType
+ LfgQueueContainer QueuesStore; ///< Queues
+ LfgCachedDungeonContainer CachedDungeonMapStore; ///< Stores all dungeons by groupType
// Reward System
- LfgRewardMap m_RewardMap; ///< Stores rewards for random dungeons
- LFGDungeonMap m_LfgDungeonMap;
+ LfgRewardContainer RewardMapStore; ///< Stores rewards for random dungeons
+ LFGDungeonContainer LfgDungeonStore;
// Rolecheck - Proposal - Vote Kicks
- LfgRoleCheckMap m_RoleChecks; ///< Current Role checks
- LfgProposalMap m_Proposals; ///< Current Proposals
- LfgPlayerBootMap m_Boots; ///< Current player kicks
- LfgPlayerDataMap m_Players; ///< Player data
- LfgGroupDataMap m_Groups; ///< Group data
- LfgGuidList m_teleport; ///< Players being teleported
+ LfgRoleCheckContainer RoleChecksStore; ///< Current Role checks
+ LfgProposalContainer ProposalsStore; ///< Current Proposals
+ LfgPlayerBootContainer BootsStore; ///< Current player kicks
+ LfgPlayerDataContainer PlayersStore; ///< Player data
+ LfgGroupDataContainer GroupsStore; ///< Group data
+ LfgGuidList teleportStore; ///< Players being teleported
};
#define sLFGMgr ACE_Singleton<LFGMgr, ACE_Null_Mutex>::instance()
diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp
index 131a3e7a992..3bcd1ee5643 100644
--- a/src/server/game/DungeonFinding/LFGQueue.cpp
+++ b/src/server/game/DungeonFinding/LFGQueue.cpp
@@ -51,7 +51,7 @@ std::string ConcatenateGuids(LfgGuidList const& check)
return o.str();
}
-char const * GetCompatibleString(LfgCompatibility compatibles)
+char const* GetCompatibleString(LfgCompatibility compatibles)
{
switch (compatibles)
{
@@ -80,83 +80,102 @@ char const * GetCompatibleString(LfgCompatibility compatibles)
}
}
-void LfgQueue::AddToQueue(uint64 guid)
+void LFGQueue::AddToQueue(uint64 guid)
{
- LfgQueueDataMap::iterator itQueue = m_QueueDataMap.find(guid);
- if (itQueue == m_QueueDataMap.end())
+ LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(guid);
+ if (itQueue == QueueDataStore.end())
{
- sLog->outError(LOG_FILTER_LFG, "LfgQueue::AddToQueue: Queue data not found for [" UI64FMTD "]", guid);
+ sLog->outError(LOG_FILTER_LFG, "LFGQueue::AddToQueue: Queue data not found for [" UI64FMTD "]", guid);
return;
}
AddToNewQueue(guid);
}
-void LfgQueue::RemoveFromQueue(uint64 guid)
+void LFGQueue::RemoveFromQueue(uint64 guid)
{
RemoveFromNewQueue(guid);
RemoveFromCurrentQueue(guid);
RemoveFromCompatibles(guid);
- RemoveQueueData(guid);
+
+ std::ostringstream o;
+ o << guid;
+ std::string sguid = o.str();
+
+ LfgQueueDataContainer::iterator itDelete = QueueDataStore.end();
+ for (LfgQueueDataContainer::iterator itr = QueueDataStore.begin(); itr != QueueDataStore.end(); ++itr)
+ if (itr->first != guid)
+ {
+ if (std::string::npos != itr->second.bestCompatible.find(sguid))
+ {
+ itr->second.bestCompatible.clear();
+ FindBestCompatibleInQueue(itr);
+ }
+ }
+ else
+ itDelete = itr;
+
+ if (itDelete != QueueDataStore.end())
+ QueueDataStore.erase(itDelete);
}
-void LfgQueue::AddToNewQueue(uint64 guid)
+void LFGQueue::AddToNewQueue(uint64 guid)
{
- m_newToQueue.push_back(guid);
+ newToQueueStore.push_back(guid);
}
-void LfgQueue::RemoveFromNewQueue(uint64 guid)
+void LFGQueue::RemoveFromNewQueue(uint64 guid)
{
- m_newToQueue.remove(guid);
+ newToQueueStore.remove(guid);
}
-void LfgQueue::AddToCurrentQueue(uint64 guid)
+void LFGQueue::AddToCurrentQueue(uint64 guid)
{
- m_currentQueue.push_back(guid);
+ currentQueueStore.push_back(guid);
}
-void LfgQueue::RemoveFromCurrentQueue(uint64 guid)
+void LFGQueue::RemoveFromCurrentQueue(uint64 guid)
{
- m_currentQueue.remove(guid);
+ currentQueueStore.remove(guid);
}
-void LfgQueue::AddQueueData(uint64 guid, time_t joinTime, const LfgDungeonSet &dungeons, const LfgRolesMap &rolesMap)
+void LFGQueue::AddQueueData(uint64 guid, time_t joinTime, const LfgDungeonSet &dungeons, const LfgRolesMap &rolesMap)
{
- m_QueueDataMap[guid] = LfgQueueData(joinTime, dungeons, rolesMap);
+ QueueDataStore[guid] = LfgQueueData(joinTime, dungeons, rolesMap);
AddToQueue(guid);
}
-void LfgQueue::RemoveQueueData(uint64 guid)
+void LFGQueue::RemoveQueueData(uint64 guid)
{
- LfgQueueDataMap::iterator it = m_QueueDataMap.find(guid);
- if (it != m_QueueDataMap.end())
- m_QueueDataMap.erase(it);
+ LfgQueueDataContainer::iterator it = QueueDataStore.find(guid);
+ if (it != QueueDataStore.end())
+ QueueDataStore.erase(it);
}
-void LfgQueue::UpdateWaitTimeAvg(int32 waitTime, uint32 dungeonId)
+void LFGQueue::UpdateWaitTimeAvg(int32 waitTime, uint32 dungeonId)
{
- LfgWaitTime &wt = m_waitTimesAvg[dungeonId];
+ LfgWaitTime &wt = waitTimesAvgStore[dungeonId];
uint32 old_number = wt.number++;
wt.time = int32((wt.time * old_number + waitTime) / wt.number);
}
-void LfgQueue::UpdateWaitTimeTank(int32 waitTime, uint32 dungeonId)
+void LFGQueue::UpdateWaitTimeTank(int32 waitTime, uint32 dungeonId)
{
- LfgWaitTime &wt = m_waitTimesTank[dungeonId];
+ LfgWaitTime &wt = waitTimesTankStore[dungeonId];
uint32 old_number = wt.number++;
wt.time = int32((wt.time * old_number + waitTime) / wt.number);
}
-void LfgQueue::UpdateWaitTimeHealer(int32 waitTime, uint32 dungeonId)
+void LFGQueue::UpdateWaitTimeHealer(int32 waitTime, uint32 dungeonId)
{
- LfgWaitTime &wt = m_waitTimesHealer[dungeonId];
+ LfgWaitTime &wt = waitTimesHealerStore[dungeonId];
uint32 old_number = wt.number++;
wt.time = int32((wt.time * old_number + waitTime) / wt.number);
}
-void LfgQueue::UpdateWaitTimeDps(int32 waitTime, uint32 dungeonId)
+void LFGQueue::UpdateWaitTimeDps(int32 waitTime, uint32 dungeonId)
{
- LfgWaitTime &wt = m_waitTimesDps[dungeonId];
+ LfgWaitTime &wt = waitTimesDpsStore[dungeonId];
uint32 old_number = wt.number++;
wt.time = int32((wt.time * old_number + waitTime) / wt.number);
}
@@ -166,61 +185,76 @@ void LfgQueue::UpdateWaitTimeDps(int32 waitTime, uint32 dungeonId)
@param[in] guid Guid to remove from compatible cache
*/
-void LfgQueue::RemoveFromCompatibles(uint64 guid)
+void LFGQueue::RemoveFromCompatibles(uint64 guid)
{
std::stringstream out;
out << guid;
std::string strGuid = out.str();
- sLog->outDebug(LOG_FILTER_LFG, "LfgQueue::RemoveFromCompatibles: Removing [" UI64FMTD "]", guid);
- for (LfgCompatibleMap::iterator itNext = m_CompatibleMap.begin(); itNext != m_CompatibleMap.end();)
+ sLog->outDebug(LOG_FILTER_LFG, "LFGQueue::RemoveFromCompatibles: Removing [" UI64FMTD "]", guid);
+ for (LfgCompatibleContainer::iterator itNext = CompatibleMapStore.begin(); itNext != CompatibleMapStore.end();)
{
- LfgCompatibleMap::iterator it = itNext++;
- if (it->first.find(strGuid) != std::string::npos) // Found, remove it
- m_CompatibleMap.erase(it);
+ LfgCompatibleContainer::iterator it = itNext++;
+ if (std::string::npos != it->first.find(strGuid))
+ CompatibleMapStore.erase(it);
}
}
-
/**
Stores the compatibility of a list of guids
@param[in] key String concatenation of guids (| used as separator)
@param[in] compatibles type of compatibility
*/
-void LfgQueue::SetCompatibles(const std::string &key, LfgCompatibility compatibles)
+void LFGQueue::SetCompatibles(std::string const& key, LfgCompatibility compatibles)
+{
+ LfgCompatibilityData& data = CompatibleMapStore[key];
+ data.compatibility = compatibles;
+}
+
+void LFGQueue::SetCompatibilityData(std::string const& key, LfgCompatibilityData const& data)
{
- m_CompatibleMap[key] = compatibles;
+ CompatibleMapStore[key] = data;
}
+
/**
Get the compatibility of a group of guids
@param[in] key String concatenation of guids (| used as separator)
@return LfgCompatibility type of compatibility
*/
-LfgCompatibility LfgQueue::GetCompatibles(std::string const& key)
+LfgCompatibility LFGQueue::GetCompatibles(std::string const& key)
{
- LfgCompatibleMap::iterator it = m_CompatibleMap.find(key);
- if (it != m_CompatibleMap.end())
- return it->second;
+ LfgCompatibleContainer::iterator itr = CompatibleMapStore.find(key);
+ if (itr != CompatibleMapStore.end())
+ return itr->second.compatibility;
return LFG_COMPATIBILITY_PENDING;
}
-uint8 LfgQueue::FindGroups()
+LfgCompatibilityData* LFGQueue::GetCompatibilityData(std::string const& key)
+{
+ LfgCompatibleContainer::iterator itr = CompatibleMapStore.find(key);
+ if (itr != CompatibleMapStore.end())
+ return &(itr->second);
+
+ return NULL;
+}
+
+uint8 LFGQueue::FindGroups()
{
uint8 proposals = 0;
LfgGuidList firstNew;
- while (!m_newToQueue.empty())
+ while (!newToQueueStore.empty())
{
- uint64 frontguid = m_newToQueue.front();
- sLog->outDebug(LOG_FILTER_LFG, "LfgQueue::FindGroups: checking [" UI64FMTD "] newToQueue(%u), currentQueue(%u)", frontguid, uint32(m_newToQueue.size()), uint32(m_currentQueue.size()));
+ uint64 frontguid = newToQueueStore.front();
+ sLog->outDebug(LOG_FILTER_LFG, "LFGQueue::FindGroups: checking [" UI64FMTD "] newToQueue(%u), currentQueue(%u)", frontguid, uint32(newToQueueStore.size()), uint32(currentQueueStore.size()));
firstNew.clear();
firstNew.push_back(frontguid);
RemoveFromNewQueue(frontguid);
- LfgGuidList temporalList = m_currentQueue;
+ LfgGuidList temporalList = currentQueueStore;
LfgCompatibility compatibles = FindNewGroups(firstNew, temporalList);
if (compatibles == LFG_COMPATIBLES_MATCH)
@@ -238,15 +272,22 @@ uint8 LfgQueue::FindGroups()
@param[in] all List of all other guids in main queue to match against
@return LfgCompatibility type of compatibility between groups
*/
-LfgCompatibility LfgQueue::FindNewGroups(LfgGuidList& check, LfgGuidList& all)
+LfgCompatibility LFGQueue::FindNewGroups(LfgGuidList& check, LfgGuidList& all)
{
std::string strGuids = ConcatenateGuids(check);
LfgCompatibility compatibles = GetCompatibles(strGuids);
sLog->outDebug(LOG_FILTER_LFG, "LFGQueue::FindNewGroup: (%s): %s - all(%s)", strGuids.c_str(), GetCompatibleString(compatibles), ConcatenateGuids(all).c_str());
- if (compatibles == LFG_COMPATIBILITY_PENDING || compatibles == LFG_COMPATIBLES_BAD_STATES) // Not previously cached, calculate
+ if (compatibles == LFG_COMPATIBILITY_PENDING) // Not previously cached, calculate
compatibles = CheckCompatibility(check);
+ if (compatibles == LFG_COMPATIBLES_BAD_STATES && sLFGMgr->AllQueued(check))
+ {
+ sLog->outDebug(LOG_FILTER_LFG, "LFGQueue::FindNewGroup: (%s) compatibles (cached) changed from bad states to match", strGuids.c_str());
+ SetCompatibles(strGuids, LFG_COMPATIBLES_MATCH);
+ return LFG_COMPATIBLES_MATCH;
+ }
+
if (compatibles != LFG_COMPATIBLES_WITH_LESS_PLAYERS)
return compatibles;
@@ -269,7 +310,7 @@ LfgCompatibility LfgQueue::FindNewGroups(LfgGuidList& check, LfgGuidList& all)
@param[in] check List of guids to check compatibilities
@return LfgCompatibility type of compatibility
*/
-LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
+LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
{
std::string strGuids = ConcatenateGuids(check);
LfgProposal proposal;
@@ -284,10 +325,6 @@ LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
return LFG_INCOMPATIBLES_WRONG_GROUP_SIZE;
}
- // Player joining alone always compatible
- if (check.size() == 1 && IS_PLAYER_GUID(check.front()))
- return LFG_COMPATIBLES_WITH_LESS_PLAYERS;
-
// Check all-but-new compatiblitity
if (check.size() > 2)
{
@@ -311,8 +348,8 @@ LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
for (LfgGuidList::const_iterator it = check.begin(); it != check.end() && numLfgGroups < 2 && numPlayers <= MAXGROUPSIZE; ++it)
{
uint64 guid = (*it);
- LfgQueueDataMap::iterator itQueue = m_QueueDataMap.find(guid);
- if (itQueue == m_QueueDataMap.end())
+ LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(guid);
+ if (itQueue == QueueDataStore.end())
{
sLog->outError(LOG_FILTER_LFG, "LFGQueue::CheckCompatibility: [" UI64FMTD "] is not queued but listed as queued!", guid);
RemoveFromQueue(guid);
@@ -337,6 +374,14 @@ LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
if (check.size() == 1 && numPlayers != MAXGROUPSIZE)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGQueue::CheckCompatibility: (%s) sigle group. Compatibles", strGuids.c_str());
+ LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(check.front());
+
+ LfgCompatibilityData data(LFG_COMPATIBLES_WITH_LESS_PLAYERS);
+ data.roles = itQueue->second.roles;
+ LFGMgr::CheckGroupRoles(data.roles);
+
+ UpdateBestCompatibleInQueue(itQueue, strGuids, data.roles);
+ SetCompatibilityData(strGuids, data);
return LFG_COMPATIBLES_WITH_LESS_PLAYERS;
}
@@ -359,14 +404,14 @@ LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
{
for (LfgGuidList::const_iterator it = check.begin(); it != check.end(); ++it)
{
- const LfgRolesMap &roles = m_QueueDataMap[(*it)].roles;
+ const LfgRolesMap &roles = QueueDataStore[(*it)].roles;
for (LfgRolesMap::const_iterator itRoles = roles.begin(); itRoles != roles.end(); ++itRoles)
{
LfgRolesMap::const_iterator itPlayer;
for (itPlayer = proposalRoles.begin(); itPlayer != proposalRoles.end(); ++itPlayer)
{
if (itRoles->first == itPlayer->first)
- sLog->outDebug(LOG_FILTER_LFG, "LFGQueue::CheckCompatibility: ERROR! Player multiple times in queue! [" UI64FMTD "]", itRoles->first);
+ sLog->outError(LOG_FILTER_LFG, "LFGQueue::CheckCompatibility: ERROR! Player multiple times in queue! [" UI64FMTD "]", itRoles->first);
else if (sLFGMgr->HasIgnore(itRoles->first, itPlayer->first))
break;
}
@@ -382,7 +427,7 @@ LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
return LFG_INCOMPATIBLES_HAS_IGNORES;
}
- LfgRolesMap debugRoles = proposalRoles; // DEBUG
+ LfgRolesMap debugRoles = proposalRoles;
if (!LFGMgr::CheckGroupRoles(proposalRoles))
{
std::ostringstream o;
@@ -395,13 +440,13 @@ LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
}
LfgGuidList::iterator itguid = check.begin();
- proposalDungeons = m_QueueDataMap[*itguid].dungeons;
+ proposalDungeons = QueueDataStore[*itguid].dungeons;
std::ostringstream o;
o << ", " << *itguid << ": (" << sLFGMgr->ConcatenateDungeons(proposalDungeons) << ")";
for (++itguid; itguid != check.end(); ++itguid)
{
LfgDungeonSet temporal;
- LfgDungeonSet &dungeons = m_QueueDataMap[*itguid].dungeons;
+ LfgDungeonSet &dungeons = QueueDataStore[*itguid].dungeons;
o << ", " << *itguid << ": (" << sLFGMgr->ConcatenateDungeons(dungeons) << ")";
std::set_intersection(proposalDungeons.begin(), proposalDungeons.end(), dungeons.begin(), dungeons.end(), std::inserter(temporal, temporal.begin()));
proposalDungeons = temporal;
@@ -417,7 +462,7 @@ LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
else
{
uint64 gguid = *check.begin();
- const LfgQueueData &queue = m_QueueDataMap[gguid];
+ const LfgQueueData &queue = QueueDataStore[gguid];
proposalDungeons = queue.dungeons;
proposalRoles = queue.roles;
LFGMgr::CheckGroupRoles(proposalRoles); // assing new roles
@@ -427,7 +472,13 @@ LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
if (numPlayers != MAXGROUPSIZE)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGQueue::CheckCompatibility: (%s) Compatibles but not enough players(%u)", strGuids.c_str(), numPlayers);
- SetCompatibles(strGuids, LFG_COMPATIBLES_WITH_LESS_PLAYERS);
+ LfgCompatibilityData data(LFG_COMPATIBLES_WITH_LESS_PLAYERS);
+ data.roles = proposalRoles;
+
+ for (LfgGuidList::const_iterator itr = check.begin(); itr != check.end(); ++itr)
+ UpdateBestCompatibleInQueue(QueueDataStore.find(*itr), strGuids, data.roles);
+
+ SetCompatibilityData(strGuids, data);
return LFG_COMPATIBLES_WITH_LESS_PLAYERS;
}
@@ -488,19 +539,20 @@ LfgCompatibility LfgQueue::CheckCompatibility(LfgGuidList check)
return LFG_COMPATIBLES_MATCH;
}
-void LfgQueue::UpdateQueueTimers(time_t currTime)
+void LFGQueue::UpdateQueueTimers(time_t currTime)
{
- for (LfgQueueDataMap::const_iterator itQueue = m_QueueDataMap.begin(); itQueue != m_QueueDataMap.end(); ++itQueue)
+ sLog->outTrace(LOG_FILTER_LFG, "Updating queue timers...");
+ for (LfgQueueDataContainer::iterator itQueue = QueueDataStore.begin(); itQueue != QueueDataStore.end(); ++itQueue)
{
- const LfgQueueData &queueinfo = itQueue->second;
+ LfgQueueData& queueinfo = itQueue->second;
uint32 dungeonId = (*queueinfo.dungeons.begin());
uint32 queuedTime = uint32(currTime - queueinfo.joinTime);
uint8 role = PLAYER_ROLE_NONE;
int32 waitTime = -1;
- int32 wtTank = m_waitTimesTank[dungeonId].time;
- int32 wtHealer = m_waitTimesHealer[dungeonId].time;
- int32 wtDps = m_waitTimesDps[dungeonId].time;
- int32 wtAvg = m_waitTimesAvg[dungeonId].time;
+ int32 wtTank = waitTimesTankStore[dungeonId].time;
+ int32 wtHealer = waitTimesHealerStore[dungeonId].time;
+ int32 wtDps = waitTimesDpsStore[dungeonId].time;
+ int32 wtAvg = waitTimesAvgStore[dungeonId].time;
for (LfgRolesMap::const_iterator itPlayer = queueinfo.roles.begin(); itPlayer != queueinfo.roles.end(); ++itPlayer)
role |= itPlayer->second;
@@ -525,6 +577,9 @@ void LfgQueue::UpdateQueueTimers(time_t currTime)
break;
}
+ if (queueinfo.bestCompatible.empty())
+ FindBestCompatibleInQueue(itQueue);
+
LfgQueueStatusData queueData(dungeonId, waitTime, wtAvg, wtTank, wtHealer, wtDps, queuedTime, queueinfo.tanks, queueinfo.healers, queueinfo.dps);
for (LfgRolesMap::const_iterator itPlayer = queueinfo.roles.begin(); itPlayer != queueinfo.roles.end(); ++itPlayer)
{
@@ -534,17 +589,12 @@ void LfgQueue::UpdateQueueTimers(time_t currTime)
}
}
-time_t LfgQueue::GetJoinTime(uint64 guid)
+time_t LFGQueue::GetJoinTime(uint64 guid)
{
- return m_QueueDataMap[guid].joinTime;
+ return QueueDataStore[guid].joinTime;
}
-LfgCompatibleMap const& LfgQueue::GetCompatibleMap()
-{
- return m_CompatibleMap;
-}
-
-std::string LfgQueue::DumpQueueInfo() const
+std::string LFGQueue::DumpQueueInfo() const
{
uint32 players = 0;
uint32 groups = 0;
@@ -552,30 +602,77 @@ std::string LfgQueue::DumpQueueInfo() const
for (uint8 i = 0; i < 2; ++i)
{
- LfgGuidList const& queue = i ? m_newToQueue : m_currentQueue;
+ LfgGuidList const& queue = i ? newToQueueStore : currentQueueStore;
for (LfgGuidList::const_iterator it = queue.begin(); it != queue.end(); ++it)
{
uint64 guid = *it;
if (IS_GROUP(guid))
{
groups++;
- if (Group const* group = sGroupMgr->GetGroupByGUID(GUID_LOPART(guid)))
- playersInGroup += group->GetMembersCount();
- else
- playersInGroup += 2; // Shouldn't happen but just in case
+ playersInGroup += sLFGMgr->GetPlayerCount(guid);
}
else
players++;
}
}
std::ostringstream o;
- o << "Queued Players: " << players << "(in group: " << playersInGroup << ") Groups: " << groups << "\n";
+ o << "Queued Players: " << players << " (in group: " << playersInGroup << ") Groups: " << groups << "\n";
return o.str();
}
-std::string LfgQueue::DumpCompatibleInfo() const
+std::string LFGQueue::DumpCompatibleInfo(bool full /* = false */) const
{
std::ostringstream o;
- o << "Compatible Map size: " << m_CompatibleMap.size() << "\n";
+ o << "Compatible Map size: " << CompatibleMapStore.size() << "\n";
+ if (full)
+ for (LfgCompatibleContainer::const_iterator itr = CompatibleMapStore.begin(); itr != CompatibleMapStore.end(); ++itr)
+ o << "(" << itr->first << "): " << GetCompatibleString(itr->second.compatibility) << "\n";
+
return o.str();
}
+
+void LFGQueue::FindBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQueue)
+{
+ sLog->outDebug(LOG_FILTER_LFG, "LFGQueue::FindBestCompatibleInQueue: " UI64FMTD, itrQueue->first);
+ std::ostringstream o;
+ o << itrQueue->first;
+ std::string sguid = o.str();
+
+ for (LfgCompatibleContainer::const_iterator itr = CompatibleMapStore.begin(); itr != CompatibleMapStore.end(); ++itr)
+ if (itr->second.compatibility == LFG_COMPATIBLES_WITH_LESS_PLAYERS &&
+ std::string::npos != itr->first.find(sguid))
+ {
+ UpdateBestCompatibleInQueue(itrQueue, itr->first, itr->second.roles);
+ }
+}
+
+void LFGQueue::UpdateBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQueue, std::string const& key, LfgRolesMap const& roles)
+{
+ LfgQueueData& queueData = itrQueue->second;
+
+ uint8 storedSize = queueData.bestCompatible.empty() ? 0 :
+ std::count(queueData.bestCompatible.begin(), queueData.bestCompatible.end(), '|') + 1;
+
+ uint8 size = std::count(key.begin(), key.end(), '|') + 1;
+
+ if (size <= storedSize)
+ return;
+
+ sLog->outDebug(LOG_FILTER_LFG, "LFGQueue::UpdateBestCompatibleInQueue: Changed (%s) to (%s) as best compatible group for " UI64FMTD,
+ queueData.bestCompatible.c_str(), key.c_str(), itrQueue->first);
+
+ queueData.bestCompatible = key;
+ queueData.tanks = LFG_TANKS_NEEDED;
+ queueData.healers = LFG_HEALERS_NEEDED;
+ queueData.dps = LFG_DPS_NEEDED;
+ for (LfgRolesMap::const_iterator it = roles.begin(); it != roles.end(); ++it)
+ {
+ uint8 role = it->second;
+ if (role & PLAYER_ROLE_TANK)
+ --queueData.tanks;
+ else if (role & PLAYER_ROLE_HEALER)
+ --queueData.healers;
+ else
+ --queueData.dps;
+ }
+}
diff --git a/src/server/game/DungeonFinding/LFGQueue.h b/src/server/game/DungeonFinding/LFGQueue.h
index f08199d725a..e6ba038a9e6 100644
--- a/src/server/game/DungeonFinding/LFGQueue.h
+++ b/src/server/game/DungeonFinding/LFGQueue.h
@@ -34,6 +34,17 @@ enum LfgCompatibility
LFG_COMPATIBLES_MATCH // Must be the last one
};
+struct LfgCompatibilityData
+{
+ LfgCompatibilityData(): compatibility(LFG_COMPATIBILITY_PENDING) { }
+ LfgCompatibilityData(LfgCompatibility _compatibility): compatibility(_compatibility) { }
+ LfgCompatibilityData(LfgCompatibility _compatibility, LfgRolesMap const& _roles):
+ compatibility(_compatibility), roles(_roles) { }
+
+ LfgCompatibility compatibility;
+ LfgRolesMap roles;
+};
+
/// Stores player or group queue info
struct LfgQueueData
{
@@ -41,26 +52,10 @@ struct LfgQueueData
healers(LFG_HEALERS_NEEDED), dps(LFG_DPS_NEEDED)
{ }
- LfgQueueData(time_t _joinTime, const LfgDungeonSet &_dungeons, const LfgRolesMap &_roles)
- {
- joinTime = _joinTime;
- dungeons = _dungeons;
- roles = _roles;
- tanks = LFG_TANKS_NEEDED;
- healers = LFG_HEALERS_NEEDED;
- dps = LFG_DPS_NEEDED;
-
- for (LfgRolesMap::const_iterator it = roles.begin(); it != roles.end(); ++it)
- {
- uint8 role = it->second;
- if (role & PLAYER_ROLE_TANK)
- --tanks;
- else if (role & PLAYER_ROLE_HEALER)
- --healers;
- else
- --dps;
- }
- }
+ LfgQueueData(time_t _joinTime, const LfgDungeonSet &_dungeons, LfgRolesMap const& _roles):
+ joinTime(_joinTime), tanks(LFG_TANKS_NEEDED), healers(LFG_HEALERS_NEEDED),
+ dps(LFG_DPS_NEEDED), dungeons(_dungeons), roles(_roles)
+ { }
time_t joinTime; ///< Player queue join time (to calculate wait times)
uint8 tanks; ///< Tanks needed
@@ -68,6 +63,7 @@ struct LfgQueueData
uint8 dps; ///< Dps needed
LfgDungeonSet dungeons; ///< Selected Player/Group Dungeon/s
LfgRolesMap roles; ///< Selected Player Role/s
+ std::string bestCompatible; ///< Best compatible combination of people queued
};
struct LfgWaitTime
@@ -77,14 +73,14 @@ struct LfgWaitTime
uint32 number; ///< Number of people used to get that wait time
};
-typedef std::map<uint32, LfgWaitTime> LfgWaitTimesMap;
-typedef std::map<std::string, LfgCompatibility> LfgCompatibleMap;
-typedef std::map<uint64, LfgQueueData> LfgQueueDataMap;
+typedef std::map<uint32, LfgWaitTime> LfgWaitTimesContainer;
+typedef std::map<std::string, LfgCompatibilityData> LfgCompatibleContainer;
+typedef std::map<uint64, LfgQueueData> LfgQueueDataContainer;
/**
Stores all data related to queue
*/
-class LfgQueue
+class LFGQueue
{
public:
@@ -108,10 +104,13 @@ class LfgQueue
uint8 FindGroups();
// Just for debugging purposes
- LfgCompatibleMap const& GetCompatibleMap();
std::string DumpQueueInfo() const;
- std::string DumpCompatibleInfo() const;
+ std::string DumpCompatibleInfo(bool full = false) const;
+
private:
+ void SetQueueUpdateData(std::string const& strGuids, LfgRolesMap const& proposalRoles);
+ LfgRolesMap const& RemoveFromQueueUpdateData(uint64 guid);
+
void AddToNewQueue(uint64 guid);
void AddToCurrentQueue(uint64 guid);
void RemoveFromNewQueue(uint64 guid);
@@ -121,19 +120,24 @@ class LfgQueue
LfgCompatibility GetCompatibles(std::string const& key);
void RemoveFromCompatibles(uint64 guid);
+ void SetCompatibilityData(std::string const& key, LfgCompatibilityData const& compatibles);
+ LfgCompatibilityData* GetCompatibilityData(std::string const& key);
+ void FindBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQueue);
+ void UpdateBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQueue, std::string const& key, LfgRolesMap const& roles);
+
LfgCompatibility FindNewGroups(LfgGuidList& check, LfgGuidList& all);
LfgCompatibility CheckCompatibility(LfgGuidList check);
// Queue
- LfgQueueDataMap m_QueueDataMap; ///< Queued groups
- LfgCompatibleMap m_CompatibleMap; ///< Compatible dungeons
-
- LfgWaitTimesMap m_waitTimesAvg; ///< Average wait time to find a group queuing as multiple roles
- LfgWaitTimesMap m_waitTimesTank; ///< Average wait time to find a group queuing as tank
- LfgWaitTimesMap m_waitTimesHealer; ///< Average wait time to find a group queuing as healer
- LfgWaitTimesMap m_waitTimesDps; ///< Average wait time to find a group queuing as dps
- LfgGuidList m_currentQueue; ///< Ordered list. Used to find groups
- LfgGuidList m_newToQueue; ///< New groups to add to queue
+ LfgQueueDataContainer QueueDataStore; ///< Queued groups
+ LfgCompatibleContainer CompatibleMapStore; ///< Compatible dungeons
+
+ LfgWaitTimesContainer waitTimesAvgStore; ///< Average wait time to find a group queuing as multiple roles
+ LfgWaitTimesContainer waitTimesTankStore; ///< Average wait time to find a group queuing as tank
+ LfgWaitTimesContainer waitTimesHealerStore; ///< Average wait time to find a group queuing as healer
+ LfgWaitTimesContainer waitTimesDpsStore; ///< Average wait time to find a group queuing as dps
+ LfgGuidList currentQueueStore; ///< Ordered list. Used to find groups
+ LfgGuidList newToQueueStore; ///< New groups to add to queue
};
#endif
diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp
index 522ded70550..91314e64285 100644
--- a/src/server/game/DungeonFinding/LFGScripts.cpp
+++ b/src/server/game/DungeonFinding/LFGScripts.cpp
@@ -60,6 +60,21 @@ void LFGPlayerScript::OnLogin(Player* player)
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER))
return;
+ // Temporal: Trying to determine when group data and LFG data gets desynched
+ uint64 guid = player->GetGUID();
+ uint64 gguid = sLFGMgr->GetGroup(guid);
+
+ if (Group const* group = player->GetGroup())
+ {
+ uint64 gguid2 = group->GetGUID();
+ if (gguid != gguid2)
+ {
+ sLog->outError(LOG_FILTER_LFG, "%s on group %u but LFG has group %u saved... Fixing.",
+ player->GetSession()->GetPlayerInfo().c_str(), GUID_LOPART(gguid2), GUID_LOPART(gguid));
+ sLFGMgr->SetupGroupMember(guid, group->GetGUID());
+ }
+ }
+
sLFGMgr->InitializeLockedDungeons(player);
sLFGMgr->SetTeam(player->GetGUID(), player->GetTeam());
// TODO - Restore LfgPlayerData and send proper status to player if it was in a group
@@ -94,7 +109,7 @@ void LFGGroupScript::OnAddMember(Group* group, uint64 guid)
LfgState gstate = sLFGMgr->GetState(gguid);
LfgState state = sLFGMgr->GetState(guid);
sLog->outDebug(LOG_FILTER_LFG, "LFGScripts::OnAddMember [" UI64FMTD "]: added [" UI64FMTD "] leader " UI64FMTD "] gstate: %u, state: %u", gguid, guid, leader, gstate, state);
- LfgUpdateData updateData = LfgUpdateData(LFG_UPDATETYPE_CLEAR_LOCK_LIST);
+ LfgUpdateData updateData = LfgUpdateData(LFG_UPDATETYPE_UPDATE_STATUS);
for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
{
if (Player* plrg = itr->getSource())
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 3b3120d1cf9..214df2672cb 100755
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -359,7 +359,7 @@ void GameObject::Update(uint32 diff)
Unit* caster = GetOwner();
if (caster && caster->GetTypeId() == TYPEID_PLAYER)
{
- caster->FinishSpell(CURRENT_CHANNELED_SPELL);
+ caster->ToPlayer()->RemoveGameObject(this, false);
WorldPacket data(SMSG_FISH_ESCAPED, 0);
caster->ToPlayer()->GetSession()->SendPacket(&data);
@@ -1360,6 +1360,8 @@ void GameObject::Use(Unit* user)
player->SendLoot(GetGUID(), LOOT_FISHING);
}
// TODO: else: junk
+ else
+ m_respawnTime = time(NULL);
break;
}
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 973eba5da25..46110a2cc11 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1577,7 +1577,7 @@ void Player::Update(uint32 p_time)
// check every second
if (now > m_Last_tick + 1)
UpdateSoulboundTradeItems();
-
+
// If mute expired, remove it from the DB
if (GetSession()->m_muteTime && GetSession()->m_muteTime < now)
{
@@ -3022,6 +3022,9 @@ void Player::GiveLevel(uint8 level)
if (level == oldLevel)
return;
+ if (Guild* guild = GetGuild())
+ guild->UpdateMemberData(this, GUILD_MEMBER_DATA_LEVEL, level);
+
PlayerLevelInfo info;
sObjectMgr->GetPlayerLevelInfo(getRace(), getClass(), level, &info);
@@ -7446,6 +7449,8 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea)
sBattlefieldMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId);
sBattlefieldMgr->HandlePlayerEnterZone(this, newZone);
SendInitWorldStates(newZone, newArea); // only if really enters to new zone, not just area change, works strange...
+ if (Guild* guild = GetGuild())
+ guild->UpdateMemberData(this, GUILD_MEMBER_DATA_ZONEID, newZone);
}
// group update
@@ -15714,7 +15719,7 @@ void Player::SetQuestStatus(uint32 quest_id, QuestStatus status)
}
uint32 zone = 0, area = 0;
-
+
SpellAreaForQuestMapBounds saBounds = sSpellMgr->GetSpellAreaForQuestMapBounds(quest_id);
if (saBounds.first != saBounds.second)
{
@@ -15725,7 +15730,7 @@ void Player::SetQuestStatus(uint32 quest_id, QuestStatus status)
if (!HasAura(itr->second->spellId))
CastSpell(this, itr->second->spellId, true);
}
-
+
saBounds = sSpellMgr->GetSpellAreaForQuestEndMapBounds(quest_id);
if (saBounds.first != saBounds.second)
{
@@ -21517,7 +21522,7 @@ void Player::ToggleMetaGemsActive(uint8 exceptslot, bool apply)
//cycle all equipped items
for (int slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot)
{
- //enchants for the slot being socketed are handled by WorldSession::HandleSocketOpcode(WorldPacket& recv_data)
+ //enchants for the slot being socketed are handled by WorldSession::HandleSocketOpcode(WorldPacket& recvData)
if (slot == exceptslot)
continue;
@@ -23507,11 +23512,15 @@ WorldObject* Player::GetViewpoint() const
bool Player::CanUseBattlegroundObject(GameObject* gameobject)
{
- FactionTemplateEntry const* playerFaction = getFactionTemplateEntry();
- FactionTemplateEntry const* faction = sFactionTemplateStore.LookupEntry(gameobject->GetUInt32Value(GAMEOBJECT_FACTION));
+ // It is possible to call this method with a null pointer, only skipping faction check.
+ if (gameobject)
+ {
+ FactionTemplateEntry const* playerFaction = getFactionTemplateEntry();
+ FactionTemplateEntry const* faction = sFactionTemplateStore.LookupEntry(gameobject->GetUInt32Value(GAMEOBJECT_FACTION));
- if (playerFaction && faction && !playerFaction->IsFriendlyTo(*faction))
- return false;
+ if (playerFaction && faction && !playerFaction->IsFriendlyTo(*faction))
+ return false;
+ }
// BUG: sometimes when player clicks on flag in AB - client won't send gameobject_use, only gameobject_report_use packet
// Note: Mount, stealth and invisibility will be removed when used
@@ -23523,9 +23532,8 @@ bool Player::CanUseBattlegroundObject(GameObject* gameobject)
bool Player::CanCaptureTowerPoint()
{
return (!HasStealthAura() && // not stealthed
- !HasInvisibilityAura() && // not invisible
- isAlive() // live player
-);
+ !HasInvisibilityAura() && // not invisible
+ isAlive()); // live player
}
uint32 Player::GetBarberShopCost(uint8 newhairstyle, uint8 newhaircolor, uint8 newfacialhair, BarberShopStyleEntry const* newSkin)
@@ -25580,3 +25588,9 @@ void Player::SendMovementSetFeatherFall(bool apply)
data << uint32(0); //! movement counter
SendDirectMessage(&data);
}
+
+Guild* Player::GetGuild()
+{
+ uint32 guildId = GetGuildId();
+ return guildId ? sGuildMgr->GetGuildById(guildId) : NULL;
+}
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 21c31c720e7..fe1d1a5b798 100755
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -46,6 +46,7 @@ class Channel;
class Creature;
class DynamicObject;
class Group;
+class Guild;
class OutdoorPvP;
class Pet;
class PlayerMenu;
@@ -1819,9 +1820,10 @@ class Player : public Unit, public GridObject<Player>
void SetInGuild(uint32 GuildId) { SetUInt32Value(PLAYER_GUILDID, GuildId); }
void SetRank(uint8 rankId) { SetUInt32Value(PLAYER_GUILDRANK, rankId); }
- uint8 GetRank() { return uint8(GetUInt32Value(PLAYER_GUILDRANK)); }
+ uint8 GetRank() const { return uint8(GetUInt32Value(PLAYER_GUILDRANK)); }
void SetGuildIdInvited(uint32 GuildId) { m_GuildIdInvited = GuildId; }
- uint32 GetGuildId() { return GetUInt32Value(PLAYER_GUILDID); }
+ uint32 GetGuildId() const { return GetUInt32Value(PLAYER_GUILDID); }
+ Guild* GetGuild();
static uint32 GetGuildIdFromDB(uint64 guid);
static uint8 GetRankFromDB(uint64 guid);
int GetGuildIdInvited() { return m_GuildIdInvited; }
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 743d622e8c9..f8de93afc6d 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -6672,7 +6672,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
victim->CastCustomSpell(beaconTarget, triggered_spell_id, &basepoints0, NULL, NULL, true, 0, triggeredByAura);
return true;
}
-
+
return false;
}
// Judgements of the Wise
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp
index 59759b19ef5..45473f792c4 100755
--- a/src/server/game/Groups/Group.cpp
+++ b/src/server/game/Groups/Group.cpp
@@ -112,6 +112,7 @@ bool Group::Create(Player* leader)
if (!isLFGGroup())
m_lootMethod = GROUP_LOOT;
+
m_lootThreshold = ITEM_QUALITY_UNCOMMON;
m_looterGuid = leaderGuid;
@@ -221,13 +222,7 @@ void Group::LoadMemberFromDB(uint32 guidLow, uint8 memberFlags, uint8 subgroup,
SubGroupCounterIncrease(subgroup);
- if (isLFGGroup())
- {
- LfgDungeonSet Dungeons;
- Dungeons.insert(sLFGMgr->GetDungeon(GetGUID()));
- sLFGMgr->SetSelectedDungeons(member.guid, Dungeons);
- sLFGMgr->SetState(member.guid, sLFGMgr->GetState(GetGUID()));
- }
+ sLFGMgr->SetupGroupMember(member.guid, GetGUID());
}
void Group::ConvertToLFG()
@@ -601,9 +596,9 @@ bool Group::RemoveMember(uint64 guid, const RemoveMethod &method /*= GROUP_REMOV
if (isLFGGroup() && GetMembersCount() == 1)
{
- Player* Leader = ObjectAccessor::FindPlayer(GetLeaderGUID());
- LFGDungeonData const* dungeon = sLFGMgr->GetLFGDungeon(sLFGMgr->GetDungeon(GetGUID()));
- if ((Leader && dungeon && Leader->isAlive() && Leader->GetMapId() != uint32(dungeon->map)) || !dungeon)
+ Player* leader = ObjectAccessor::FindPlayer(GetLeaderGUID());
+ uint32 mapId = sLFGMgr->GetDungeonMapId(GetGUID());
+ if (!mapId || !leader || (leader->isAlive() && leader->GetMapId() != mapId))
{
Disband();
return false;
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 7ab356ac318..4db293f0e89 100755
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -29,6 +29,56 @@
#define MAX_GUILD_BANK_TAB_TEXT_LEN 500
#define EMBLEM_PRICE 10 * GOLD
+std::string _GetGuildEventString(GuildEvents event)
+{
+ switch (event)
+ {
+ case GE_PROMOTION:
+ return "Member promotion";
+ case GE_DEMOTION:
+ return "Member demotion";
+ case GE_MOTD:
+ return "Guild MOTD";
+ case GE_JOINED:
+ return "Member joined";
+ case GE_LEFT:
+ return "Member left";
+ case GE_REMOVED:
+ return "Member removed";
+ case GE_LEADER_IS:
+ return "Leader is";
+ case GE_LEADER_CHANGED:
+ return "Leader changed";
+ case GE_DISBANDED:
+ return "Guild disbanded";
+ case GE_TABARDCHANGE:
+ return "Tabard change";
+ case GE_RANK_UPDATED:
+ return "Rank updated";
+ case GE_RANK_DELETED:
+ return "Rank deleted";
+ case GE_SIGNED_ON:
+ return "Member signed on";
+ case GE_SIGNED_OFF:
+ return "Member signed off";
+ case GE_GUILDBANKBAGSLOTS_CHANGED:
+ return "Bank bag slots changed";
+ case GE_BANK_TAB_PURCHASED:
+ return "Bank tab purchased";
+ case GE_BANK_TAB_UPDATED:
+ return "Bank tab updated";
+ case GE_BANK_MONEY_SET:
+ return "Bank money set";
+ case GE_BANK_MONEY_CHANGED:
+ return "Bank money changed";
+ case GE_BANK_TEXT_CHANGED:
+ return "Bank tab text changed";
+ default:
+ break;
+ }
+ return "<None>";
+}
+
inline uint32 _GetGuildBankTabPrice(uint8 tabId)
{
switch (tabId)
@@ -43,7 +93,7 @@ inline uint32 _GetGuildBankTabPrice(uint8 tabId)
}
}
-void Guild::SendCommandResult(WorldSession* session, GuildCommandType type, GuildCommandError errCode, const std::string& param)
+void Guild::SendCommandResult(WorldSession* session, GuildCommandType type, GuildCommandError errCode, std::string const& param)
{
WorldPacket data(SMSG_GUILD_COMMAND_RESULT, 8 + param.size() + 1);
data << uint32(type);
@@ -51,7 +101,8 @@ void Guild::SendCommandResult(WorldSession* session, GuildCommandType type, Guil
data << uint32(errCode);
session->SendPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_COMMAND_RESULT)");
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_COMMAND_RESULT [%s]: Type: %u, code: %u, param: %s"
+ , session->GetPlayerInfo().c_str(), type, errCode, param.c_str());
}
void Guild::SendSaveEmblemResult(WorldSession* session, GuildEmblemError errCode)
@@ -60,7 +111,7 @@ void Guild::SendSaveEmblemResult(WorldSession* session, GuildEmblemError errCode
data << uint32(errCode);
session->SendPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (MSG_SAVE_GUILD_EMBLEM)");
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_SAVE_GUILD_EMBLEM [%s] Code: %u", session->GetPlayerInfo().c_str(), errCode);
}
// LogHolder
@@ -115,13 +166,10 @@ inline uint32 Guild::LogHolder::GetNextGUID()
return m_nextGUID;
}
-///////////////////////////////////////////////////////////////////////////////
// EventLogEntry
void Guild::EventLogEntry::SaveToDB(SQLTransaction& trans) const
{
- PreparedStatement* stmt = NULL;
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG);
stmt->setUInt32(0, m_guildId);
stmt->setUInt32(1, m_guid);
CharacterDatabase.ExecuteOrAppend(trans, stmt);
@@ -154,14 +202,12 @@ void Guild::EventLogEntry::WritePacket(WorldPacket& data) const
data << uint32(::time(NULL) - m_timestamp);
}
-///////////////////////////////////////////////////////////////////////////////
// BankEventLogEntry
void Guild::BankEventLogEntry::SaveToDB(SQLTransaction& trans) const
{
- PreparedStatement* stmt = NULL;
uint8 index = 0;
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_EVENTLOG);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_EVENTLOG);
stmt->setUInt32( index, m_guildId);
stmt->setUInt32(++index, m_guid);
stmt->setUInt8 (++index, m_bankTabId);
@@ -185,19 +231,27 @@ void Guild::BankEventLogEntry::WritePacket(WorldPacket& data) const
{
data << uint8(m_eventType);
data << uint64(MAKE_NEW_GUID(m_playerGuid, 0, HIGHGUID_PLAYER));
- data << uint32(m_itemOrMoney);
- // if ( m_eventType != 4 || m_eventType != 5 || m_eventType != 6 || m_eventType != 8 || m_eventType != 9 )
- if (m_eventType < GUILD_BANK_LOG_DEPOSIT_MONEY)
- {
- data << uint32(m_itemStackCount);
- if (m_eventType == GUILD_BANK_LOG_MOVE_ITEM || m_eventType == GUILD_BANK_LOG_MOVE_ITEM2)
+
+ switch(m_eventType)
+ {
+ case GUILD_BANK_LOG_DEPOSIT_ITEM:
+ case GUILD_BANK_LOG_WITHDRAW_ITEM:
+ data << uint32(m_itemOrMoney);
+ data << uint32(m_itemStackCount);
+ break;
+ case GUILD_BANK_LOG_MOVE_ITEM:
+ case GUILD_BANK_LOG_MOVE_ITEM2:
+ data << uint32(m_itemOrMoney);
+ data << uint32(m_itemStackCount);
data << uint8(m_destTabId);
+ break;
+ default:
+ data << uint64(m_itemOrMoney);
}
data << uint32(time(NULL) - m_timestamp);
}
-///////////////////////////////////////////////////////////////////////////////
// RankInfo
void Guild::RankInfo::LoadFromDB(Field* fields)
{
@@ -219,18 +273,46 @@ void Guild::RankInfo::SaveToDB(SQLTransaction& trans) const
CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
+void Guild::RankInfo::CreateMissingTabsIfNeeded(uint8 tabs, SQLTransaction& trans, bool logOnCreate /* = false */)
+{
+ for (uint8 i = 0; i < tabs; ++i)
+ {
+ GuildBankRightsAndSlots& rightsAndSlots = m_bankTabRightsAndSlots[i];
+ if (rightsAndSlots.GetTabId() == i)
+ continue;
+
+ rightsAndSlots.SetTabId(i);
+ if (m_rankId == GR_GUILDMASTER)
+ rightsAndSlots.SetGuildMasterValues();
+
+ if (logOnCreate)
+ sLog->outError(LOG_FILTER_GUILD, "Guild %u has broken Tab %u for rank %u. Created default tab.", m_guildId, i, m_rankId);
+
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_RIGHT);
+ stmt->setUInt32(0, m_guildId);
+ stmt->setUInt8(1, i);
+ stmt->setUInt8(2, m_rankId);
+ stmt->setUInt8(3, rightsAndSlots.GetRights());
+ stmt->setUInt32(4, rightsAndSlots.GetSlots());
+ trans->Append(stmt);
+ }
+}
+
void Guild::RankInfo::WritePacket(WorldPacket& data) const
{
data << uint32(m_rights);
- data << uint32(m_bankMoneyPerDay); // In game set in gold, in packet set in bronze.
+ if (m_bankMoneyPerDay == GUILD_WITHDRAW_MONEY_UNLIMITED)
+ data << uint32(GUILD_WITHDRAW_MONEY_UNLIMITED);
+ else
+ data << uint32(m_bankMoneyPerDay);
for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; ++i)
{
- data << uint32(m_bankTabRightsAndSlots[i].rights);
- data << uint32(m_bankTabRightsAndSlots[i].slots);
+ data << uint32(m_bankTabRightsAndSlots[i].GetRights());
+ data << uint32(m_bankTabRightsAndSlots[i].GetSlots());
}
}
-void Guild::RankInfo::SetName(const std::string& name)
+void Guild::RankInfo::SetName(std::string const& name)
{
if (m_name == name)
return;
@@ -271,62 +353,39 @@ void Guild::RankInfo::SetBankMoneyPerDay(uint32 money)
m_bankMoneyPerDay = money;
- PreparedStatement* stmt = NULL;
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_RANK_BANK_MONEY);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_RANK_BANK_MONEY);
stmt->setUInt32(0, money);
stmt->setUInt8 (1, m_rankId);
stmt->setUInt32(2, m_guildId);
CharacterDatabase.Execute(stmt);
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_RANK_BANK_RESET_TIME);
- stmt->setUInt32(0, m_guildId);
- stmt->setUInt8 (1, m_rankId);
- CharacterDatabase.Execute(stmt);
}
-void Guild::RankInfo::SetBankTabSlotsAndRights(uint8 tabId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB)
+void Guild::RankInfo::SetBankTabSlotsAndRights(GuildBankRightsAndSlots rightsAndSlots, bool saveToDB)
{
if (m_rankId == GR_GUILDMASTER) // Prevent loss of leader rights
rightsAndSlots.SetGuildMasterValues();
- if (m_bankTabRightsAndSlots[tabId].IsEqual(rightsAndSlots))
- return;
-
- m_bankTabRightsAndSlots[tabId] = rightsAndSlots;
+ GuildBankRightsAndSlots& guildBR = m_bankTabRightsAndSlots[rightsAndSlots.GetTabId()];
+ guildBR = rightsAndSlots;
if (saveToDB)
{
- PreparedStatement* stmt = NULL;
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_RIGHT);
- stmt->setUInt32(0, m_guildId);
- stmt->setUInt8 (1, tabId);
- stmt->setUInt8 (2, m_rankId);
- CharacterDatabase.Execute(stmt);
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_RIGHT);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_RIGHT);
stmt->setUInt32(0, m_guildId);
- stmt->setUInt8 (1, tabId);
+ stmt->setUInt8 (1, guildBR.GetTabId());
stmt->setUInt8 (2, m_rankId);
- stmt->setUInt8 (3, m_bankTabRightsAndSlots[tabId].rights);
- stmt->setUInt32(4, m_bankTabRightsAndSlots[tabId].slots);
- CharacterDatabase.Execute(stmt);
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_RANK_BANK_TIME0 + tabId);
- stmt->setUInt32(0, m_guildId);
- stmt->setUInt8 (1, m_rankId);
+ stmt->setUInt8 (3, guildBR.GetRights());
+ stmt->setUInt32(4, guildBR.GetSlots());
CharacterDatabase.Execute(stmt);
}
}
-///////////////////////////////////////////////////////////////////////////////
// BankTab
-bool Guild::BankTab::LoadFromDB(Field* fields)
+void Guild::BankTab::LoadFromDB(Field* fields)
{
m_name = fields[2].GetString();
m_icon = fields[3].GetString();
m_text = fields[4].GetString();
- return true;
}
bool Guild::BankTab::LoadItemFromDB(Field* fields)
@@ -352,7 +411,7 @@ bool Guild::BankTab::LoadItemFromDB(Field* fields)
{
sLog->outError(LOG_FILTER_GUILD, "Item (GUID %u, id: %u) not found in item_instance, deleting from guild bank!", itemGuid, itemEntry);
- PreparedStatement *stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM);
stmt->setUInt32(0, m_guildId);
stmt->setUInt8 (1, m_tabId);
stmt->setUInt8 (2, slotId);
@@ -383,26 +442,41 @@ void Guild::BankTab::Delete(SQLTransaction& trans, bool removeItemsFromDB)
inline void Guild::BankTab::WritePacket(WorldPacket& data) const
{
- data << uint8(GUILD_BANK_MAX_SLOTS);
+ uint8 count = 0;
+
+ size_t pos = data.wpos();
+ data << uint8(0);
+
for (uint8 slotId = 0; slotId < GUILD_BANK_MAX_SLOTS; ++slotId)
- WriteSlotPacket(data, slotId);
+ if (WriteSlotPacket(data, slotId))
+ ++count;
+
+ data.put<uint8>(pos, count);
}
// Writes information about contents of specified slot into packet.
-void Guild::BankTab::WriteSlotPacket(WorldPacket& data, uint8 slotId) const
+bool Guild::BankTab::WriteSlotPacket(WorldPacket& data, uint8 slotId, bool ignoreEmpty /* = true */) const
{
Item* pItem = GetItem(slotId);
uint32 itemEntry = pItem ? pItem->GetEntry() : 0;
+ if (!itemEntry && ignoreEmpty)
+ return false;
+
data << uint8(slotId);
data << uint32(itemEntry);
if (itemEntry)
{
data << uint32(0); // 3.3.0 (0x00018020, 0x00018000)
- data << uint32(pItem->GetItemRandomPropertyId()); // Random item property id
- if (pItem->GetItemRandomPropertyId())
+
+ if (uint32 random = pItem->GetItemRandomPropertyId())
+ {
+ data << uint32(random); // Random item property id
data << uint32(pItem->GetItemSuffixFactor()); // SuffixFactor
+ }
+ else
+ data << uint32(0);
data << uint32(pItem->GetCount()); // ITEM_FIELD_STACK_COUNT
data << uint32(0);
@@ -421,9 +495,10 @@ void Guild::BankTab::WriteSlotPacket(WorldPacket& data, uint8 slotId) const
}
data.put<uint8>(enchCountPos, enchCount);
}
+ return true;
}
-void Guild::BankTab::SetInfo(const std::string& name, const std::string& icon)
+void Guild::BankTab::SetInfo(std::string const& name, std::string const& icon)
{
if (m_name == name && m_icon == icon)
return;
@@ -439,7 +514,7 @@ void Guild::BankTab::SetInfo(const std::string& name, const std::string& icon)
CharacterDatabase.Execute(stmt);
}
-void Guild::BankTab::SetText(const std::string& text)
+void Guild::BankTab::SetText(std::string const& text)
{
if (m_text == text)
return;
@@ -456,51 +531,55 @@ void Guild::BankTab::SetText(const std::string& text)
// Sets/removes contents of specified slot.
// If pItem == NULL contents are removed.
-bool Guild::BankTab::SetItem(SQLTransaction& trans, uint8 slotId, Item* pItem)
+bool Guild::BankTab::SetItem(SQLTransaction& trans, uint8 slotId, Item* item)
{
if (slotId >= GUILD_BANK_MAX_SLOTS)
return false;
- m_items[slotId] = pItem;
+ m_items[slotId] = item;
- PreparedStatement* stmt = NULL;
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_ITEM);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_ITEM);
stmt->setUInt32(0, m_guildId);
stmt->setUInt8 (1, m_tabId);
stmt->setUInt8 (2, slotId);
CharacterDatabase.ExecuteOrAppend(trans, stmt);
- if (pItem)
+ if (item)
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_ITEM);
stmt->setUInt32(0, m_guildId);
stmt->setUInt8 (1, m_tabId);
stmt->setUInt8 (2, slotId);
- stmt->setUInt32(3, pItem->GetGUIDLow());
+ stmt->setUInt32(3, item->GetGUIDLow());
CharacterDatabase.ExecuteOrAppend(trans, stmt);
- pItem->SetUInt64Value(ITEM_FIELD_CONTAINED, 0);
- pItem->SetUInt64Value(ITEM_FIELD_OWNER, 0);
- pItem->FSetState(ITEM_NEW);
- pItem->SaveToDB(trans); // Not in inventory and can be saved standalone
+ item->SetUInt64Value(ITEM_FIELD_CONTAINED, 0);
+ item->SetUInt64Value(ITEM_FIELD_OWNER, 0);
+ item->FSetState(ITEM_NEW);
+ item->SaveToDB(trans); // Not in inventory and can be saved standalone
}
return true;
}
-void Guild::BankTab::SendText(const Guild* guild, WorldSession* session) const
+void Guild::BankTab::SendText(Guild const* guild, WorldSession* session) const
{
WorldPacket data(MSG_QUERY_GUILD_BANK_TEXT, 1 + m_text.size() + 1);
data << uint8(m_tabId);
data << m_text;
if (session)
+ {
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_QUERY_GUILD_BANK_TEXT [%s]: Tabid: %u, Text: %s"
+ , session->GetPlayerInfo().c_str(), m_tabId, m_text.c_str());
session->SendPacket(&data);
+ }
else
+ {
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_QUERY_GUILD_BANK_TEXT [Broadcast]: Tabid: %u, Text: %s", m_tabId, m_text.c_str());
guild->BroadcastPacket(&data);
+ }
}
-///////////////////////////////////////////////////////////////////////////////
// Member
void Guild::Member::SetStats(Player* player)
{
@@ -511,7 +590,7 @@ void Guild::Member::SetStats(Player* player)
m_accountId = player->GetSession()->GetAccountId();
}
-void Guild::Member::SetStats(const std::string& name, uint8 level, uint8 _class, uint32 zoneId, uint32 accountId)
+void Guild::Member::SetStats(std::string const& name, uint8 level, uint8 _class, uint32 zoneId, uint32 accountId)
{
m_name = name;
m_level = level;
@@ -520,7 +599,7 @@ void Guild::Member::SetStats(const std::string& name, uint8 level, uint8 _class,
m_accountId = accountId;
}
-void Guild::Member::SetPublicNote(const std::string& publicNote)
+void Guild::Member::SetPublicNote(std::string const& publicNote)
{
if (m_publicNote == publicNote)
return;
@@ -533,7 +612,7 @@ void Guild::Member::SetPublicNote(const std::string& publicNote)
CharacterDatabase.Execute(stmt);
}
-void Guild::Member::SetOfficerNote(const std::string& officerNote)
+void Guild::Member::SetOfficerNote(std::string const& officerNote)
{
if (m_officerNote == officerNote)
return;
@@ -576,22 +655,18 @@ void Guild::Member::SaveToDB(SQLTransaction& trans) const
// In this case member has to be removed from guild.
bool Guild::Member::LoadFromDB(Field* fields)
{
- m_publicNote = fields[3].GetString();
- m_officerNote = fields[4].GetString();
- m_bankRemaining[GUILD_BANK_MAX_TABS].resetTime = fields[5].GetUInt32();
- m_bankRemaining[GUILD_BANK_MAX_TABS].value = fields[6].GetUInt32();
- for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; ++i)
- {
- m_bankRemaining[i].resetTime = fields[7 + i * 2].GetUInt32();
- m_bankRemaining[i].value = fields[8 + i * 2].GetUInt32();
- }
+ m_publicNote = fields[3].GetString();
+ m_officerNote = fields[4].GetString();
+
+ for (uint8 i = 0; i <= GUILD_BANK_MAX_TABS; ++i)
+ m_bankWithdraw[i] = fields[5 + i].GetUInt32();
- SetStats(fields[19].GetString(),
- fields[20].GetUInt8(), // characters.level
- fields[21].GetUInt8(), // characters.class
- fields[22].GetUInt16(), // characters.zone
- fields[23].GetUInt32()); // characters.account
- m_logoutTime = fields[24].GetUInt32(); // characters.logout_time
+ SetStats(fields[12].GetString(),
+ fields[13].GetUInt8(), // characters.level
+ fields[14].GetUInt8(), // characters.class
+ fields[15].GetUInt16(), // characters.zone
+ fields[16].GetUInt32()); // characters.account
+ m_logoutTime = fields[17].GetUInt32(); // characters.logout_time
if (!CheckStats())
return false;
@@ -601,6 +676,7 @@ bool Guild::Member::LoadFromDB(Field* fields)
sLog->outError(LOG_FILTER_GUILD, "Player (GUID: %u) has broken zone-data", GUID_LOPART(m_guid));
m_zoneId = Player::GetZoneIdFromDB(m_guid);
}
+ ResetFlags();
return true;
}
@@ -612,6 +688,7 @@ bool Guild::Member::CheckStats() const
sLog->outError(LOG_FILTER_GUILD, "Player (GUID: %u) has a broken data in field `characters`.`level`, deleting him from guild!", GUID_LOPART(m_guid));
return false;
}
+
if (m_class < CLASS_WARRIOR || m_class >= MAX_CLASSES)
{
sLog->outError(LOG_FILTER_GUILD, "Player (GUID: %u) has a broken data in field `characters`.`class`, deleting him from guild!", GUID_LOPART(m_guid));
@@ -622,100 +699,64 @@ bool Guild::Member::CheckStats() const
void Guild::Member::WritePacket(WorldPacket& data) const
{
- if (Player* player = FindPlayer())
- {
- data << uint64(player->GetGUID());
- data << uint8(1);
- data << player->GetName();
- data << uint32(m_rankId);
- data << uint8(player->getLevel());
- data << uint8(player->getClass());
- data << uint8(0); // new 2.4.0
- data << uint32(player->GetZoneId());
- }
- else
- {
- data << m_guid;
- data << uint8(0);
- data << m_name;
- data << uint32(m_rankId);
- data << uint8(m_level);
- data << uint8(m_class);
- data << uint8(0); // new 2.4.0
- data << uint32(m_zoneId);
+ data << uint64(m_guid)
+ << uint8(m_flags)
+ << m_name
+ << uint32(m_rankId)
+ << uint8(m_level)
+ << uint8(m_class)
+ << uint8(0)
+ << uint32(m_zoneId);
+
+ if (!m_flags)
data << float(float(::time(NULL) - m_logoutTime) / DAY);
- }
- data << m_publicNote;
- data << m_officerNote;
+
+ data << m_publicNote
+ << m_officerNote;
}
// Decreases amount of money/slots left for today.
// If (tabId == GUILD_BANK_MAX_TABS) decrease money amount.
// Otherwise decrease remaining items amount for specified tab.
-void Guild::Member::DecreaseBankRemainingValue(SQLTransaction& trans, uint8 tabId, uint32 amount)
+void Guild::Member::UpdateBankWithdrawValue(SQLTransaction& trans, uint8 tabId, uint32 amount)
{
- m_bankRemaining[tabId].value -= amount;
+ m_bankWithdraw[tabId] += amount;
+
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_MEMBER_WITHDRAW);
+ stmt->setUInt32(0, GUID_LOPART(m_guid));
+ for (uint8 i = 0; i <= GUILD_BANK_MAX_TABS;)
+ {
+ uint32 withdraw = m_bankWithdraw[i++];
+ stmt->setUInt32(i, withdraw);
+ }
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(
- tabId == GUILD_BANK_MAX_TABS ?
- CHAR_UPD_GUILD_MEMBER_BANK_REM_MONEY :
- CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS0 + tabId);
- stmt->setUInt32(0, m_bankRemaining[tabId].value);
- stmt->setUInt32(1, m_guildId);
- stmt->setUInt32(2, GUID_LOPART(m_guid));
CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
+void Guild::Member::ResetValues()
+{
+ for (uint8 tabId = 0; tabId <= GUILD_BANK_MAX_TABS; ++tabId)
+ m_bankWithdraw[tabId] = 0;
+}
+
// Get amount of money/slots left for today.
// If (tabId == GUILD_BANK_MAX_TABS) return money amount.
// Otherwise return remaining items amount for specified tab.
-// If reset time was more than 24 hours ago, renew reset time and reset amount to maximum value.
-uint32 Guild::Member::GetBankRemainingValue(uint8 tabId, const Guild* guild) const
+int32 Guild::Member::GetBankWithdrawValue(uint8 tabId) const
{
// Guild master has unlimited amount.
if (IsRank(GR_GUILDMASTER))
return tabId == GUILD_BANK_MAX_TABS ? GUILD_WITHDRAW_MONEY_UNLIMITED : GUILD_WITHDRAW_SLOT_UNLIMITED;
- // Check rights for non-money tab.
- if (tabId != GUILD_BANK_MAX_TABS)
- if ((guild->_GetRankBankTabRights(m_rankId, tabId) & GUILD_BANK_RIGHT_VIEW_TAB) != GUILD_BANK_RIGHT_VIEW_TAB)
- return 0;
-
- uint32 curTime = uint32(::time(NULL) / MINUTE); // minutes
- if (curTime > m_bankRemaining[tabId].resetTime + 24 * HOUR / MINUTE)
- {
- RemainingValue& rv = const_cast <RemainingValue&> (m_bankRemaining[tabId]);
- rv.resetTime = curTime;
- rv.value = tabId == GUILD_BANK_MAX_TABS ?
- guild->_GetRankBankMoneyPerDay(m_rankId) :
- guild->_GetRankBankTabSlotsPerDay(m_rankId, tabId);
-
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(
- tabId == GUILD_BANK_MAX_TABS ?
- CHAR_UPD_GUILD_MEMBER_BANK_TIME_MONEY :
- CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS0 + tabId);
- stmt->setUInt32(0, m_bankRemaining[tabId].resetTime);
- stmt->setUInt32(1, m_bankRemaining[tabId].value);
- stmt->setUInt32(2, m_guildId);
- stmt->setUInt32(3, GUID_LOPART(m_guid));
- CharacterDatabase.Execute(stmt);
- }
- return m_bankRemaining[tabId].value;
-}
-
-inline void Guild::Member::ResetTabTimes()
-{
- for (uint8 tabId = 0; tabId < GUILD_BANK_MAX_TABS; ++tabId)
- m_bankRemaining[tabId].resetTime = 0;
+ return m_bankWithdraw[tabId];
}
-inline void Guild::Member::ResetMoneyTime()
+// EmblemInfo
+void EmblemInfo::ReadPacket(WorldPacket& recv)
{
- m_bankRemaining[GUILD_BANK_MAX_TABS].resetTime = 0;
+ recv >> m_style >> m_color >> m_borderStyle >> m_borderColor >> m_backgroundColor;
}
-///////////////////////////////////////////////////////////////////////////////
-// EmblemInfo
void EmblemInfo::LoadFromDB(Field* fields)
{
m_style = fields[3].GetUInt8();
@@ -746,7 +787,6 @@ void EmblemInfo::SaveToDB(uint32 guildId) const
CharacterDatabase.Execute(stmt);
}
-///////////////////////////////////////////////////////////////////////////////
// MoveItemData
bool Guild::MoveItemData::CheckItem(uint32& splitedAmount)
{
@@ -794,7 +834,6 @@ inline void Guild::MoveItemData::CopySlots(SlotIds& ids) const
ids.insert(uint8(itr->pos));
}
-///////////////////////////////////////////////////////////////////////////////
// PlayerMoveItemData
bool Guild::PlayerMoveItemData::InitItem()
{
@@ -854,7 +893,6 @@ inline InventoryResult Guild::PlayerMoveItemData::CanStore(Item* pItem, bool swa
return m_pPlayer->CanStoreItem(m_container, m_slotId, m_vec, pItem, swap);
}
-///////////////////////////////////////////////////////////////////////////////
// BankMoveItemData
bool Guild::BankMoveItemData::InitItem()
{
@@ -877,7 +915,12 @@ bool Guild::BankMoveItemData::HasWithdrawRights(MoveItemData* pOther) const
// Do not check rights if item is being swapped within the same bank tab
if (pOther->IsBank() && pOther->GetContainer() == m_container)
return true;
- return (m_pGuild->_GetMemberRemainingSlots(m_pPlayer->GetGUID(), m_container) != 0);
+
+ int32 slots = 0;
+ if (Member const* member = m_pGuild->GetMember(m_pPlayer->GetGUID()))
+ slots = m_pGuild->_GetMemberRemainingSlots(member, m_container);
+
+ return slots != 0;
}
void Guild::BankMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData* pOther, uint32 splitedAmount)
@@ -896,7 +939,7 @@ void Guild::BankMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData* pO
}
// Decrease amount of player's remaining items (if item is moved to different tab or to player)
if (!pOther->IsBank() || pOther->GetContainer() != m_container)
- m_pGuild->_DecreaseMemberRemainingSlots(trans, m_pPlayer->GetGUID(), m_container);
+ m_pGuild->_UpdateMemberWithdrawSlots(trans, m_pPlayer->GetGUID(), m_container);
}
Item* Guild::BankMoveItemData::StoreItem(SQLTransaction& trans, Item* pItem)
@@ -1067,9 +1110,14 @@ InventoryResult Guild::BankMoveItemData::CanStore(Item* pItem, bool swap)
return EQUIP_ERR_BANK_FULL;
}
-///////////////////////////////////////////////////////////////////////////////
// Guild
-Guild::Guild() : m_id(0), m_leaderGuid(0), m_createdDate(0), m_accountsNumber(0), m_bankMoney(0), m_eventLog(NULL)
+Guild::Guild():
+ m_id(0),
+ m_leaderGuid(0),
+ m_createdDate(0),
+ m_accountsNumber(0),
+ m_bankMoney(0),
+ m_eventLog(NULL)
{
memset(&m_bankEventLog, 0, (GUILD_BANK_MAX_TABS + 1) * sizeof(LogHolder*));
}
@@ -1080,17 +1128,24 @@ Guild::~Guild()
_DeleteBankItems(temp);
// Cleanup
- if (m_eventLog)
- delete m_eventLog;
+ delete m_eventLog;
+ m_eventLog = NULL;
+
for (uint8 tabId = 0; tabId <= GUILD_BANK_MAX_TABS; ++tabId)
- if (m_bankEventLog[tabId])
- delete m_bankEventLog[tabId];
+ {
+ delete m_bankEventLog[tabId];
+ m_bankEventLog[tabId] = NULL;
+ }
+
for (Members::iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
+ {
delete itr->second;
+ itr->second = NULL;
+ }
}
// Creates new guild with default data and saves it to database.
-bool Guild::Create(Player* pLeader, const std::string& name)
+bool Guild::Create(Player* pLeader, std::string const& name)
{
// Check if guild with such name already exists
if (sGuildMgr->GetGuildByName(name))
@@ -1112,10 +1167,9 @@ bool Guild::Create(Player* pLeader, const std::string& name)
sLog->outDebug(LOG_FILTER_GUILD, "GUILD: creating guild [%s] for leader %s (%u)",
name.c_str(), pLeader->GetName().c_str(), GUID_LOPART(m_leaderGuid));
- PreparedStatement* stmt = NULL;
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBERS);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBERS);
stmt->setUInt32(0, m_id);
trans->Append(stmt);
@@ -1136,12 +1190,10 @@ bool Guild::Create(Player* pLeader, const std::string& name)
trans->Append(stmt);
CharacterDatabase.CommitTransaction(trans);
- // Create default ranks
- _CreateDefaultGuildRanks(pLeaderSession->GetSessionDbLocaleIndex());
- // Add guildmaster
- bool ret = AddMember(m_leaderGuid, GR_GUILDMASTER);
+ _CreateDefaultGuildRanks(pLeaderSession->GetSessionDbLocaleIndex()); // Create default ranks
+ bool ret = AddMember(m_leaderGuid, GR_GUILDMASTER); // Add guildmaster
+
if (ret)
- // Call scripts on successful create
sScriptMgr->OnGuildCreate(this, pLeader, name);
return ret;
@@ -1161,9 +1213,9 @@ void Guild::Disband()
DeleteMember(itr->second->GetGUID(), true);
}
- PreparedStatement* stmt = NULL;
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD);
+
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD);
stmt->setUInt32(0, m_id);
trans->Append(stmt);
@@ -1198,8 +1250,36 @@ void Guild::Disband()
sGuildMgr->RemoveGuild(m_id);
}
-///////////////////////////////////////////////////////////////////////////////
-// HANDLE CLIENT COMMANDS
+void Guild::UpdateMemberData(Player* player, uint8 dataid, uint32 value)
+{
+ if (Member* member = GetMember(player->GetGUID()))
+ {
+ switch (dataid)
+ {
+ case GUILD_MEMBER_DATA_ZONEID:
+ member->SetZoneID(value);
+ break;
+ case GUILD_MEMBER_DATA_LEVEL:
+ member->SetLevel(value);
+ break;
+ default:
+ sLog->outError(LOG_FILTER_GUILD, "Guild::UpdateMemberData: Called with incorrect DATAID %u (value %u)", dataid, value);
+ return;
+ }
+ //HandleRoster();
+ }
+}
+
+void Guild::OnPlayerStatusChange(Player* player, uint32 flag, bool state)
+{
+ if (Member* member = GetMember(player->GetGUID()))
+ {
+ if (state)
+ member->AddFlag(flag);
+ else member->RemFlag(flag);
+ }
+}
+
void Guild::HandleRoster(WorldSession* session /*= NULL*/)
{
// Guess size
@@ -1216,10 +1296,15 @@ void Guild::HandleRoster(WorldSession* session /*= NULL*/)
itr->second->WritePacket(data);
if (session)
+ {
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_ROSTER [%s]", session->GetPlayerInfo().c_str());
session->SendPacket(&data);
+ }
else
+ {
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_ROSTER [Broadcast]");
BroadcastPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_ROSTER)");
+ }
}
void Guild::HandleQuery(WorldSession* session)
@@ -1228,6 +1313,7 @@ void Guild::HandleQuery(WorldSession* session)
data << uint32(m_id);
data << m_name;
+ // Rank name
for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i) // Always show 10 ranks
{
if (i < _GetRanksSize())
@@ -1237,20 +1323,20 @@ void Guild::HandleQuery(WorldSession* session)
}
m_emblemInfo.WritePacket(data);
- data << uint32(_GetRanksSize()); // Amount of ranks
- session->SendPacket(&data);
+ data << uint32(_GetRanksSize()); // Number of ranks used
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_QUERY_RESPONSE)");
+ session->SendPacket(&data);
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_QUERY_RESPONSE [%s]", session->GetPlayerInfo().c_str());
}
-void Guild::HandleSetMOTD(WorldSession* session, const std::string& motd)
+void Guild::HandleSetMOTD(WorldSession* session, std::string const& motd)
{
if (m_motd == motd)
return;
// Player must have rights to set MOTD
if (!_HasRankRight(session->GetPlayer(), GR_RIGHT_SETMOTD))
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
+ SendCommandResult(session, GUILD_COMMAND_EDIT_MOTD, ERR_GUILD_PERMISSIONS);
else
{
m_motd = motd;
@@ -1266,15 +1352,13 @@ void Guild::HandleSetMOTD(WorldSession* session, const std::string& motd)
}
}
-void Guild::HandleSetInfo(WorldSession* session, const std::string& info)
+void Guild::HandleSetInfo(WorldSession* session, std::string const& info)
{
if (m_info == info)
return;
// Player must have rights to set guild's info
- if (!_HasRankRight(session->GetPlayer(), GR_RIGHT_MODIFY_GUILD_INFO))
- SendCommandResult(session, GUILD_CREATE_S, ERR_GUILD_PERMISSIONS);
- else
+ if (_HasRankRight(session->GetPlayer(), GR_RIGHT_MODIFY_GUILD_INFO))
{
m_info = info;
@@ -1291,11 +1375,9 @@ void Guild::HandleSetEmblem(WorldSession* session, const EmblemInfo& emblemInfo)
{
Player* player = session->GetPlayer();
if (!_IsLeader(player))
- // "Only guild leaders can create emblems."
- SendSaveEmblemResult(session, ERR_GUILDEMBLEM_NOTGUILDMASTER);
+ SendSaveEmblemResult(session, ERR_GUILDEMBLEM_NOTGUILDMASTER); // "Only guild leaders can create emblems."
else if (!player->HasEnoughMoney(EMBLEM_PRICE))
- // "You can't afford to do that."
- SendSaveEmblemResult(session, ERR_GUILDEMBLEM_NOTENOUGHMONEY);
+ SendSaveEmblemResult(session, ERR_GUILDEMBLEM_NOTENOUGHMONEY); // "You can't afford to do that."
else
{
player->ModifyMoney(-int32(EMBLEM_PRICE));
@@ -1303,84 +1385,99 @@ void Guild::HandleSetEmblem(WorldSession* session, const EmblemInfo& emblemInfo)
m_emblemInfo = emblemInfo;
m_emblemInfo.SaveToDB(m_id);
- // "Guild Emblem saved."
- SendSaveEmblemResult(session, ERR_GUILDEMBLEM_SUCCESS);
+ SendSaveEmblemResult(session, ERR_GUILDEMBLEM_SUCCESS); // "Guild Emblem saved."
HandleQuery(session);
}
}
-void Guild::HandleSetLeader(WorldSession* session, const std::string& name)
+void Guild::HandleSetLeader(WorldSession* session, std::string const& name)
{
Player* player = session->GetPlayer();
// Only leader can assign new leader
if (!_IsLeader(player))
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
+ SendCommandResult(session, GUILD_COMMAND_CHANGE_LEADER, ERR_GUILD_PERMISSIONS);
// Old leader must be a member of guild
else if (Member* pOldLeader = GetMember(player->GetGUID()))
{
// New leader must be a member of guild
- if (Member* pNewLeader = GetMember(session, name))
+ if (Member* pNewLeader = GetMember(name))
{
_SetLeaderGUID(pNewLeader);
pOldLeader->ChangeRank(GR_OFFICER);
_BroadcastEvent(GE_LEADER_CHANGED, 0, player->GetName().c_str(), name.c_str());
}
}
- else
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
}
-void Guild::HandleSetBankTabInfo(WorldSession* session, uint8 tabId, const std::string& name, const std::string& icon)
+void Guild::HandleSetBankTabInfo(WorldSession* session, uint8 tabId, std::string const& name, std::string const& icon)
{
- if (BankTab* pTab = GetBankTab(tabId))
+ BankTab* tab = GetBankTab(tabId);
+ if (!tab)
{
- pTab->SetInfo(name, icon);
- SendBankTabsInfo(session);
- _SendBankContent(session, tabId);
+ sLog->outError(LOG_FILTER_GUILD, "Guild::HandleSetBankTabInfo: Player %s trying to change bank tab info from unexisting tab %d.",
+ session->GetPlayerInfo().c_str(), tabId);
+ return;
}
+
+ char aux[2];
+ sprintf(aux, "%u", tabId);
+
+ tab->SetInfo(name, icon);
+ _BroadcastEvent(GE_BANK_TAB_UPDATED, 0, aux, name.c_str(), icon.c_str());
}
-void Guild::HandleSetMemberNote(WorldSession* session, const std::string& name, const std::string& note, bool officer)
+void Guild::HandleSetMemberNote(WorldSession* session, std::string const& name, std::string const& note, bool isPublic)
{
// Player must have rights to set public/officer note
- if (!_HasRankRight(session->GetPlayer(), officer ? GR_RIGHT_EOFFNOTE : GR_RIGHT_EPNOTE))
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
- // Noted player must be a member of guild
- else if (Member* member = GetMember(session, name))
+ if (!_HasRankRight(session->GetPlayer(), isPublic ? GR_RIGHT_EPNOTE : GR_RIGHT_EOFFNOTE))
+ SendCommandResult(session, GUILD_COMMAND_PUBLIC_NOTE, ERR_GUILD_PERMISSIONS);
+ else if (Member* member = GetMember(name))
{
- if (officer)
- member->SetOfficerNote(note);
- else
+ if (isPublic)
member->SetPublicNote(note);
+ else
+ member->SetOfficerNote(note);
+
HandleRoster(session);
}
}
-void Guild::HandleSetRankInfo(WorldSession* session, uint8 rankId, const std::string& name, uint32 rights, uint32 moneyPerDay, GuildBankRightsAndSlotsVec rightsAndSlots)
+void Guild::HandleSetRankInfo(WorldSession* session, uint8 rankId, std::string const& name, uint32 rights, uint32 moneyPerDay, GuildBankRightsAndSlotsVec rightsAndSlots)
{
// Only leader can modify ranks
if (!_IsLeader(session->GetPlayer()))
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
+ SendCommandResult(session, GUILD_COMMAND_CHANGE_RANK, ERR_GUILD_PERMISSIONS);
else if (RankInfo* rankInfo = GetRankInfo(rankId))
{
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Changed RankName to '%s', rights to 0x%08X", name.c_str(), rights);
+ sLog->outDebug(LOG_FILTER_GUILD, "Changed RankName to '%s', rights to 0x%08X", name.c_str(), rights);
rankInfo->SetName(name);
rankInfo->SetRights(rights);
_SetRankBankMoneyPerDay(rankId, moneyPerDay);
- uint8 tabId = 0;
for (GuildBankRightsAndSlotsVec::const_iterator itr = rightsAndSlots.begin(); itr != rightsAndSlots.end(); ++itr)
- _SetRankBankTabRightsAndSlots(rankId, tabId++, *itr);
+ _SetRankBankTabRightsAndSlots(rankId, *itr);
- HandleQuery(session);
- HandleRoster(); // Broadcast for tab rights update
+ char aux[2];
+ sprintf(aux, "%u", rankId);
+ _BroadcastEvent(GE_RANK_UPDATED, 0, aux, name.c_str());
}
}
void Guild::HandleBuyBankTab(WorldSession* session, uint8 tabId)
{
+ Player* player = session->GetPlayer();
+ if (!player)
+ return;
+
+ Member const* member = GetMember(player->GetGUID());
+ if (!member)
+ return;
+
+ if (_GetPurchasedTabsSize() >= GUILD_BANK_MAX_TABS)
+ return;
+
if (tabId != _GetPurchasedTabsSize())
return;
@@ -1388,18 +1485,14 @@ void Guild::HandleBuyBankTab(WorldSession* session, uint8 tabId)
if (!tabCost)
return;
- Player* player = session->GetPlayer();
if (!player->HasEnoughMoney(tabCost)) // Should not happen, this is checked by client
return;
- if (!_CreateNewBankTab())
- return;
-
player->ModifyMoney(-int32(tabCost));
- _SetRankBankMoneyPerDay(player->GetRank(), uint32(GUILD_WITHDRAW_MONEY_UNLIMITED));
- _SetRankBankTabRightsAndSlots(player->GetRank(), tabId, GuildBankRightsAndSlots(GUILD_BANK_RIGHT_FULL, uint32(GUILD_WITHDRAW_SLOT_UNLIMITED)));
- HandleRoster(); // Broadcast for tab rights update
- SendBankTabsInfo(session);
+
+ _CreateNewBankTab();
+ _BroadcastEvent(GE_BANK_TAB_PURCHASED, 0);
+ SendPermissions(session); /// Hack to force client to update permissions
}
void Guild::HandleInviteMember(WorldSession* session, std::string const& name)
@@ -1407,7 +1500,7 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name)
Player* pInvitee = sObjectAccessor->FindPlayerByName(name);
if (!pInvitee)
{
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PLAYER_NOT_FOUND_S, name);
+ SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_PLAYER_NOT_FOUND_S, name);
return;
}
@@ -1415,30 +1508,33 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name)
// Do not show invitations from ignored players
if (pInvitee->GetSocial()->HasIgnore(player->GetGUIDLow()))
return;
+
if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && pInvitee->GetTeam() != player->GetTeam())
{
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_NOT_ALLIED, name);
+ SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_NOT_ALLIED, name);
return;
}
// Invited player cannot be in another guild
if (pInvitee->GetGuildId())
{
- SendCommandResult(session, GUILD_INVITE_S, ERR_ALREADY_IN_GUILD_S, name);
+ SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_ALREADY_IN_GUILD_S, name);
return;
}
// Invited player cannot be invited
if (pInvitee->GetGuildIdInvited())
{
- SendCommandResult(session, GUILD_INVITE_S, ERR_ALREADY_INVITED_TO_GUILD_S, name);
+ SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_ALREADY_INVITED_TO_GUILD_S, name);
return;
}
// Inviting player must have rights to invite
if (!_HasRankRight(player, GR_RIGHT_INVITE))
{
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
+ SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_PERMISSIONS);
return;
}
+ SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_COMMAND_SUCCESS, name);
+
sLog->outDebug(LOG_FILTER_GUILD, "Player %s invited %s to join his Guild", player->GetName().c_str(), name.c_str());
pInvitee->SetGuildIdInvited(m_id);
@@ -1448,8 +1544,7 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name)
data << player->GetName();
data << m_name;
pInvitee->GetSession()->SendPacket(&data);
-
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_INVITE)");
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_INVITE [%s]", pInvitee->GetName().c_str());
}
void Guild::HandleAcceptMember(WorldSession* session)
@@ -1459,11 +1554,7 @@ void Guild::HandleAcceptMember(WorldSession* session)
player->GetTeam() != sObjectMgr->GetPlayerTeamByGUID(GetLeaderGUID()))
return;
- if (AddMember(player->GetGUID()))
- {
- _LogEvent(GUILD_EVENT_LOG_JOIN_GUILD, player->GetGUIDLow());
- _BroadcastEvent(GE_JOINED, player->GetGUID(), player->GetName().c_str());
- }
+ AddMember(player->GetGUID());
}
void Guild::HandleLeaveMember(WorldSession* session)
@@ -1474,7 +1565,7 @@ void Guild::HandleLeaveMember(WorldSession* session)
{
if (m_members.size() > 1)
// Leader cannot leave if he is not the last member
- SendCommandResult(session, GUILD_QUIT_S, ERR_GUILD_LEADER_LEAVE);
+ SendCommandResult(session, GUILD_COMMAND_QUIT, ERR_GUILD_LEADER_LEAVE);
else
// Guild is disbanded if leader leaves.
Disband();
@@ -1486,79 +1577,84 @@ void Guild::HandleLeaveMember(WorldSession* session)
_LogEvent(GUILD_EVENT_LOG_LEAVE_GUILD, player->GetGUIDLow());
_BroadcastEvent(GE_LEFT, player->GetGUID(), player->GetName().c_str());
- SendCommandResult(session, GUILD_QUIT_S, ERR_PLAYER_NO_MORE_IN_GUILD, m_name);
+ SendCommandResult(session, GUILD_COMMAND_QUIT, ERR_GUILD_COMMAND_SUCCESS, m_name);
}
}
-void Guild::HandleRemoveMember(WorldSession* session, const std::string& name)
+void Guild::HandleRemoveMember(WorldSession* session, std::string const& name)
{
Player* player = session->GetPlayer();
// Player must have rights to remove members
if (!_HasRankRight(player, GR_RIGHT_REMOVE))
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
- // Removed player must be a member of guild
- else if (Member* member = GetMember(session, name))
+ SendCommandResult(session, GUILD_COMMAND_REMOVE, ERR_GUILD_PERMISSIONS);
+ else if (Member* member = GetMember(name))
{
- // Leader cannot be removed
+ // Guild masters cannot be removed
if (member->IsRank(GR_GUILDMASTER))
- SendCommandResult(session, GUILD_QUIT_S, ERR_GUILD_LEADER_LEAVE);
+ SendCommandResult(session, GUILD_COMMAND_REMOVE, ERR_GUILD_LEADER_LEAVE);
// Do not allow to remove player with the same rank or higher
- else if (member->IsRankNotLower(player->GetRank()))
- SendCommandResult(session, GUILD_QUIT_S, ERR_GUILD_RANK_TOO_HIGH_S, name);
else
{
- uint64 guid = member->GetGUID();
- // After call to DeleteMember pointer to member becomes invalid
- DeleteMember(guid, false, true);
- _LogEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, player->GetGUIDLow(), GUID_LOPART(guid));
- _BroadcastEvent(GE_REMOVED, 0, name.c_str(), player->GetName().c_str());
+ Member const* memberMe = GetMember(player->GetGUID());
+ if (!memberMe || member->IsRankNotLower(memberMe->GetRankId()))
+ SendCommandResult(session, GUILD_COMMAND_REMOVE, ERR_GUILD_RANK_TOO_HIGH_S, name);
+ else
+ {
+ uint64 guid = member->GetGUID();
+ // After call to DeleteMember pointer to member becomes invalid
+ DeleteMember(guid, false, true);
+ _LogEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, player->GetGUIDLow(), GUID_LOPART(guid));
+ _BroadcastEvent(GE_REMOVED, 0, name.c_str(), player->GetName().c_str());
+ }
}
}
}
-void Guild::HandleUpdateMemberRank(WorldSession* session, const std::string& name, bool demote)
+void Guild::HandleUpdateMemberRank(WorldSession* session, std::string const& name, bool demote)
{
Player* player = session->GetPlayer();
+ GuildCommandType type = demote ? GUILD_COMMAND_DEMOTE : GUILD_COMMAND_PROMOTE;
// Player must have rights to promote
if (!_HasRankRight(player, demote ? GR_RIGHT_DEMOTE : GR_RIGHT_PROMOTE))
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
+ SendCommandResult(session, type, ERR_GUILD_PERMISSIONS);
// Promoted player must be a member of guild
- else if (Member* member = GetMember(session, name))
+ else if (Member* member = GetMember(name))
{
// Player cannot promote himself
if (member->IsSamePlayer(player->GetGUID()))
{
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_NAME_INVALID);
+ SendCommandResult(session, type, ERR_GUILD_NAME_INVALID);
return;
}
+ Member const* memberMe = GetMember(player->GetGUID());
+ uint8 rankId = memberMe->GetRankId();
if (demote)
{
// Player can demote only lower rank members
- if (member->IsRankNotLower(player->GetRank()))
+ if (member->IsRankNotLower(rankId))
{
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_RANK_TOO_HIGH_S, name);
+ SendCommandResult(session, type, ERR_GUILD_RANK_TOO_HIGH_S, name);
return;
}
// Lowest rank cannot be demoted
if (member->GetRankId() >= _GetLowestRankId())
{
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_RANK_TOO_LOW_S, name);
+ SendCommandResult(session, type, ERR_GUILD_RANK_TOO_LOW_S, name);
return;
}
}
else
{
// Allow to promote only to lower rank than member's rank
- // member->GetRank() + 1 is the highest rank that current player can promote to
- if (member->IsRankNotLower(player->GetRank() + 1))
+ // member->GetRankId() + 1 is the highest rank that current player can promote to
+ if (member->IsRankNotLower(rankId + 1))
{
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_RANK_TOO_HIGH_S, name);
+ SendCommandResult(session, type, ERR_GUILD_RANK_TOO_HIGH_S, name);
return;
}
}
- // When promoting player, rank is decreased, when demoting - increased
uint32 newRankId = member->GetRankId() + (demote ? 1 : -1);
member->ChangeRank(newRankId);
_LogEvent(demote ? GUILD_EVENT_LOG_DEMOTE_PLAYER : GUILD_EVENT_LOG_PROMOTE_PLAYER, player->GetGUIDLow(), GUID_LOPART(member->GetGUID()), newRankId);
@@ -1566,50 +1662,47 @@ void Guild::HandleUpdateMemberRank(WorldSession* session, const std::string& nam
}
}
-void Guild::HandleAddNewRank(WorldSession* session, const std::string& name)
+void Guild::HandleAddNewRank(WorldSession* session, std::string const& name)
{
- if (_GetRanksSize() >= GUILD_RANKS_MAX_COUNT)
+ uint8 size = _GetRanksSize();
+ if (size >= GUILD_RANKS_MAX_COUNT)
return;
// Only leader can add new rank
- if (!_IsLeader(session->GetPlayer()))
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
- else
- {
- _CreateRank(name, GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK);
- HandleQuery(session);
- HandleRoster(); // Broadcast for tab rights update
- }
+ if (_IsLeader(session->GetPlayer()))
+ if (_CreateRank(name, GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK))
+ {
+ char aux[2];
+ sprintf(aux, "%u", size);
+ _BroadcastEvent(GE_RANK_UPDATED, 0, aux, name.c_str());
+ }
}
void Guild::HandleRemoveLowestRank(WorldSession* session)
{
- // Cannot remove rank if total count is minimum allowed by the client
- if (_GetRanksSize() <= GUILD_RANKS_MIN_COUNT)
+ HandleRemoveRank(session, _GetLowestRankId());
+}
+
+void Guild::HandleRemoveRank(WorldSession* session, uint8 rankId)
+{
+ // Cannot remove rank if total count is minimum allowed by the client or is not leader
+ if (_GetRanksSize() <= GUILD_RANKS_MIN_COUNT || rankId >= _GetRanksSize() || !_IsLeader(session->GetPlayer()))
return;
- // Only leader can delete ranks
- if (!_IsLeader(session->GetPlayer()))
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
- else
- {
- uint8 rankId = _GetLowestRankId();
- // Delete bank rights for rank
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_RIGHTS_FOR_RANK);
- stmt->setUInt32(0, m_id);
- stmt->setUInt8 (1, rankId);
- CharacterDatabase.Execute(stmt);
- // Delete rank
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_LOWEST_RANK);
- stmt->setUInt32(0, m_id);
- stmt->setUInt8 (1, rankId);
- CharacterDatabase.Execute(stmt);
+ // Delete bank rights for rank
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_RIGHTS_FOR_RANK);
+ stmt->setUInt32(0, m_id);
+ stmt->setUInt8(1, rankId);
+ CharacterDatabase.Execute(stmt);
+ // Delete rank
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_LOWEST_RANK);
+ stmt->setUInt32(0, m_id);
+ stmt->setUInt8(1, rankId);
+ CharacterDatabase.Execute(stmt);
- m_ranks.pop_back();
+ m_ranks.pop_back();
- HandleQuery(session);
- HandleRoster(); // Broadcast for tab rights update
- }
+ _BroadcastEvent(GE_RANK_DELETED, 0);
}
void Guild::HandleMemberDepositMoney(WorldSession* session, uint32 amount)
@@ -1620,26 +1713,23 @@ void Guild::HandleMemberDepositMoney(WorldSession* session, uint32 amount)
sScriptMgr->OnGuildMemberDepositMoney(this, player, amount);
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- // Add money to bank
_ModifyBankMoney(trans, amount, true);
- // Remove money from player
+
player->ModifyMoney(-int32(amount));
player->SaveGoldToDB(trans);
- // Log GM action (TODO: move to scripts)
+ _LogBankEvent(trans, GUILD_BANK_LOG_DEPOSIT_MONEY, uint8(0), player->GetGUIDLow(), amount);
+
+ CharacterDatabase.CommitTransaction(trans);
+
+ std::string aux = ByteArrayToHexStr(reinterpret_cast<uint8*>(&amount), 8, true);
+ _BroadcastEvent(GE_BANK_MONEY_CHANGED, 0, aux.c_str());
+
if (!AccountMgr::IsPlayerAccount(player->GetSession()->GetSecurity()) && sWorld->getBoolConfig(CONFIG_GM_LOG_TRADE))
{
sLog->outCommand(player->GetSession()->GetAccountId(),
"GM %s (Account: %u) deposit money (Amount: %u) to guild bank (Guild ID %u)",
player->GetName().c_str(), player->GetSession()->GetAccountId(), amount, m_id);
}
- // Log guild bank event
- _LogBankEvent(trans, GUILD_BANK_LOG_DEPOSIT_MONEY, uint8(0), player->GetGUIDLow(), amount);
-
- CharacterDatabase.CommitTransaction(trans);
-
- SendBankTabsInfo(session);
- _SendBankContent(session, 0);
- _SendBankMoneyUpdate(session);
}
bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool repair)
@@ -1648,24 +1738,20 @@ bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool
return false;
Player* player = session->GetPlayer();
- if (!_HasRankRight(player, repair ? GR_RIGHT_WITHDRAW_REPAIR : GR_RIGHT_WITHDRAW_GOLD))
- return false;
- uint32 remainingMoney = _GetMemberRemainingMoney(player->GetGUID());
- if (!remainingMoney)
+ Member* member = GetMember(player->GetGUID());
+ if (!member)
return false;
- if (remainingMoney < amount)
- return false;
+ if (uint32(_GetMemberRemainingMoney(member)) < amount) // Check if we have enough slot/money today
+ return false;
// Call script after validation and before money transfer.
sScriptMgr->OnGuildMemberWitdrawMoney(this, player, amount, repair);
SQLTransaction trans = CharacterDatabase.BeginTransaction();
// Update remaining money amount
- if (remainingMoney < uint32(GUILD_WITHDRAW_MONEY_UNLIMITED))
- if (Member* member = GetMember(player->GetGUID()))
- member->DecreaseBankRemainingValue(trans, GUILD_BANK_MAX_TABS, amount);
+ member->UpdateBankWithdrawValue(trans, GUILD_BANK_MAX_TABS, amount);
// Remove money from bank
_ModifyBankMoney(trans, amount, false);
// Add money to player (if required)
@@ -1678,13 +1764,8 @@ bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool
_LogBankEvent(trans, repair ? GUILD_BANK_LOG_REPAIR_MONEY : GUILD_BANK_LOG_WITHDRAW_MONEY, uint8(0), player->GetGUIDLow(), amount);
CharacterDatabase.CommitTransaction(trans);
- SendMoneyInfo(session);
- if (!repair)
- {
- SendBankTabsInfo(session);
- _SendBankContent(session, 0);
- _SendBankMoneyUpdate(session);
- }
+ std::string aux = ByteArrayToHexStr(reinterpret_cast<uint8*>(&amount), 8, true);
+ _BroadcastEvent(GE_BANK_MONEY_CHANGED, 0, aux.c_str());
return true;
}
@@ -1695,6 +1776,7 @@ void Guild::HandleMemberLogout(WorldSession* session)
{
member->SetStats(player);
member->UpdateLogoutTime();
+ member->ResetFlags();
}
_BroadcastEvent(GE_SIGNED_OFF, player->GetGUID(), player->GetName().c_str());
}
@@ -1702,16 +1784,13 @@ void Guild::HandleMemberLogout(WorldSession* session)
void Guild::HandleDisband(WorldSession* session)
{
// Only leader can disband guild
- if (!_IsLeader(session->GetPlayer()))
- Guild::SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PERMISSIONS);
- else
+ if (_IsLeader(session->GetPlayer()))
{
Disband();
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Guild Successfully Disbanded");
+ sLog->outDebug(LOG_FILTER_GUILD, "Guild Successfully Disbanded");
}
}
-///////////////////////////////////////////////////////////////////////////////
// Send data to client
void Guild::SendInfo(WorldSession* session) const
{
@@ -1722,7 +1801,7 @@ void Guild::SendInfo(WorldSession* session) const
data << m_accountsNumber; // Number of accounts
session->SendPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_INFO)");
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_INFO [%s]", session->GetPlayerInfo().c_str());
}
void Guild::SendEventLog(WorldSession* session) const
@@ -1730,7 +1809,7 @@ void Guild::SendEventLog(WorldSession* session) const
WorldPacket data(MSG_GUILD_EVENT_LOG_QUERY, 1 + m_eventLog->GetSize() * (1 + 8 + 4));
m_eventLog->WritePacket(data);
session->SendPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (MSG_GUILD_EVENT_LOG_QUERY)");
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_GUILD_EVENT_LOG_QUERY [%s]", session->GetPlayerInfo().c_str());
}
void Guild::SendBankLog(WorldSession* session, uint8 tabId) const
@@ -1743,87 +1822,87 @@ void Guild::SendBankLog(WorldSession* session, uint8 tabId) const
data << uint8(tabId);
pLog->WritePacket(data);
session->SendPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (MSG_GUILD_BANK_LOG_QUERY)");
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_GUILD_BANK_LOG_QUERY [%s]", session->GetPlayerInfo().c_str());
}
}
void Guild::SendBankTabData(WorldSession* session, uint8 tabId) const
{
if (tabId < _GetPurchasedTabsSize())
- {
- SendMoneyInfo(session);
_SendBankContent(session, tabId);
- }
}
-void Guild::SendBankTabsInfo(WorldSession* session) const
+void Guild::SendBankTabsInfo(WorldSession* session, bool sendAllSlots /*= false*/) const
{
- WorldPacket data(SMSG_GUILD_BANK_LIST, 500);
-
- data << uint64(m_bankMoney);
- data << uint8(0); // TabInfo packet must be for tabId 0
- data << uint32(_GetMemberRemainingSlots(session->GetPlayer()->GetGUID(), 0));
- data << uint8(1); // Tell client that this packet includes tab info
-
- data << uint8(_GetPurchasedTabsSize()); // Number of tabs
- for (uint8 i = 0; i < _GetPurchasedTabsSize(); ++i)
- m_bankTabs[i]->WriteInfoPacket(data);
-
- data << uint8(0); // Do not send tab content
- session->SendPacket(&data);
-
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_BANK_LIST)");
+ _SendBankList(session, 0, sendAllSlots);
}
void Guild::SendBankTabText(WorldSession* session, uint8 tabId) const
{
- if (const BankTab* pTab = GetBankTab(tabId))
- pTab->SendText(this, session);
+ if (BankTab const* tab = GetBankTab(tabId))
+ tab->SendText(this, session);
}
void Guild::SendPermissions(WorldSession* session) const
{
- uint64 guid = session->GetPlayer()->GetGUID();
- uint8 rankId = session->GetPlayer()->GetRank();
+ Member const* member = GetMember(session->GetPlayer()->GetGUID());
+ if (!member)
+ return;
+
+ uint8 rankId = member->GetRankId();
WorldPacket data(MSG_GUILD_PERMISSIONS, 4 * 15 + 1);
data << uint32(rankId);
data << uint32(_GetRankRights(rankId));
- data << uint32(_GetMemberRemainingMoney(guid));
- data << uint8 (_GetPurchasedTabsSize());
- // Why sending all info when not all tabs are purchased???
+ data << uint32(_GetMemberRemainingMoney(member));
+ data << uint8(_GetPurchasedTabsSize());
for (uint8 tabId = 0; tabId < GUILD_BANK_MAX_TABS; ++tabId)
{
data << uint32(_GetRankBankTabRights(rankId, tabId));
- data << uint32(_GetMemberRemainingSlots(guid, tabId));
+ data << uint32(_GetMemberRemainingSlots(member, tabId));
}
+
session->SendPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (MSG_GUILD_PERMISSIONS)");
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_GUILD_PERMISSIONS [%s] Rank: %u", session->GetPlayerInfo().c_str(), rankId);
}
void Guild::SendMoneyInfo(WorldSession* session) const
{
+ Member const* member = GetMember(session->GetPlayer()->GetGUID());
+ if (!member)
+ return;
+
+ int32 amount = _GetMemberRemainingMoney(member);
WorldPacket data(MSG_GUILD_BANK_MONEY_WITHDRAWN, 4);
- data << uint32(_GetMemberRemainingMoney(session->GetPlayer()->GetGUID()));
+ data << int32(amount);
session->SendPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent MSG_GUILD_BANK_MONEY_WITHDRAWN");
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_GUILD_BANK_MONEY_WITHDRAWN [%s] Money: %u", session->GetPlayerInfo().c_str(), amount);
}
-void Guild::SendLoginInfo(WorldSession* session) const
+void Guild::SendLoginInfo(WorldSession* session)
{
WorldPacket data(SMSG_GUILD_EVENT, 1 + 1 + m_motd.size() + 1);
data << uint8(GE_MOTD);
data << uint8(1);
data << m_motd;
session->SendPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent guild MOTD (SMSG_GUILD_EVENT)");
+
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_EVENT [%s] MOTD", session->GetPlayerInfo().c_str());
SendBankTabsInfo(session);
- _BroadcastEvent(GE_SIGNED_ON, session->GetPlayer()->GetGUID(), session->GetPlayer()->GetName().c_str());
+ Player* player = session->GetPlayer();
+
+ HandleRoster(session);
+ _BroadcastEvent(GE_SIGNED_ON, player->GetGUID(), player->GetName().c_str());
+
+ if (Member* member = GetMember(player->GetGUID()))
+ {
+ member->SetStats(player);
+ member->AddFlag(GUILDMEMBER_STATUS_ONLINE);
+ }
}
-///////////////////////////////////////////////////////////////////////////////
// Loading methods
bool Guild::LoadFromDB(Field* fields)
{
@@ -1873,10 +1952,10 @@ bool Guild::LoadMemberFromDB(Field* fields)
void Guild::LoadBankRightFromDB(Field* fields)
{
- // rights slots
- GuildBankRightsAndSlots rightsAndSlots(fields[3].GetUInt8(), fields[4].GetUInt32());
- // rankId tabId
- _SetRankBankTabRightsAndSlots(fields[2].GetUInt8(), fields[1].GetUInt8(), rightsAndSlots, false);
+ // tabId rights slots
+ GuildBankRightsAndSlots rightsAndSlots(fields[1].GetUInt8(), fields[3].GetUInt8(), fields[4].GetUInt32());
+ // rankId
+ _SetRankBankTabRightsAndSlots(fields[2].GetUInt8(), rightsAndSlots, false);
}
bool Guild::LoadEventLogFromDB(Field* fields)
@@ -1936,15 +2015,13 @@ bool Guild::LoadBankEventLogFromDB(Field* fields)
return true;
}
-bool Guild::LoadBankTabFromDB(Field* fields)
+void Guild::LoadBankTabFromDB(Field* fields)
{
uint8 tabId = fields[1].GetUInt8();
if (tabId >= _GetPurchasedTabsSize())
- {
sLog->outError(LOG_FILTER_GUILD, "Invalid tab (tabId: %u) in guild bank, skipped.", tabId);
- return false;
- }
- return m_bankTabs[tabId]->LoadFromDB(fields);
+ else
+ m_bankTabs[tabId]->LoadFromDB(fields);
}
bool Guild::LoadBankItemFromDB(Field* fields)
@@ -1968,14 +2045,15 @@ bool Guild::Validate()
// Between ranks in sequence cannot be gaps - so 0, 1, 2, 4 is impossible
// Min ranks count is 5 and max is 10.
bool broken_ranks = false;
- if (_GetRanksSize() < GUILD_RANKS_MIN_COUNT || _GetRanksSize() > GUILD_RANKS_MAX_COUNT)
+ uint8 ranks = _GetRanksSize();
+ if (ranks < GUILD_RANKS_MIN_COUNT || ranks > GUILD_RANKS_MAX_COUNT)
{
sLog->outError(LOG_FILTER_GUILD, "Guild %u has invalid number of ranks, creating new...", m_id);
broken_ranks = true;
}
else
{
- for (uint8 rankId = 0; rankId < _GetRanksSize(); ++rankId)
+ for (uint8 rankId = 0; rankId < ranks; ++rankId)
{
RankInfo* rankInfo = GetRankInfo(rankId);
if (rankInfo->GetId() != rankId)
@@ -1983,6 +2061,12 @@ bool Guild::Validate()
sLog->outError(LOG_FILTER_GUILD, "Guild %u has broken rank id %u, creating default set of ranks...", m_id, rankId);
broken_ranks = true;
}
+ else
+ {
+ SQLTransaction trans = CharacterDatabase.BeginTransaction();
+ rankInfo->CreateMissingTabsIfNeeded(_GetPurchasedTabsSize(), trans, true);
+ CharacterDatabase.CommitTransaction(trans);
+ }
}
}
@@ -2024,9 +2108,8 @@ bool Guild::Validate()
return true;
}
-///////////////////////////////////////////////////////////////////////////////
// Broadcasts
-void Guild::BroadcastToGuild(WorldSession* session, bool officerOnly, const std::string& msg, uint32 language) const
+void Guild::BroadcastToGuild(WorldSession* session, bool officerOnly, std::string const& msg, uint32 language) const
{
if (session && session->GetPlayer() && _HasRankRight(session->GetPlayer(), officerOnly ? GR_RIGHT_OFFCHATSPEAK : GR_RIGHT_GCHATSPEAK))
{
@@ -2055,7 +2138,6 @@ void Guild::BroadcastPacket(WorldPacket* packet) const
player->GetSession()->SendPacket(packet);
}
-///////////////////////////////////////////////////////////////////////////////
// Members handling
bool Guild::AddMember(uint64 guid, uint8 rankId)
{
@@ -2075,15 +2157,26 @@ bool Guild::AddMember(uint64 guid, uint8 rankId)
uint32 lowguid = GUID_LOPART(guid);
- // If rank was not passed, assing lowest possible rank
+ // If rank was not passed, assign lowest possible rank
if (rankId == GUILD_RANK_NONE)
rankId = _GetLowestRankId();
Member* member = new Member(m_id, guid, rankId);
+ std::string name;
if (player)
+ {
+ m_members[lowguid] = member;
+ player->SetInGuild(m_id);
+ player->SetGuildIdInvited(0);
+ player->SetRank(rankId);
member->SetStats(player);
+ SendLoginInfo(player->GetSession());
+ name = player->GetName();
+ }
else
{
+ member->ResetFlags();
+
bool ok = false;
// Player must exist
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_DATA_FOR_GUILD);
@@ -2091,8 +2184,9 @@ bool Guild::AddMember(uint64 guid, uint8 rankId)
if (PreparedQueryResult result = CharacterDatabase.Query(stmt))
{
Field* fields = result->Fetch();
+ name = fields[0].GetString();
member->SetStats(
- fields[0].GetString(),
+ name,
fields[1].GetUInt8(),
fields[2].GetUInt8(),
fields[3].GetUInt16(),
@@ -2105,20 +2199,15 @@ bool Guild::AddMember(uint64 guid, uint8 rankId)
delete member;
return false;
}
+ m_members[lowguid] = member;
}
- m_members[lowguid] = member;
SQLTransaction trans(NULL);
member->SaveToDB(trans);
- // If player not in game data in will be loaded from guild tables, so no need to update it!
- if (player)
- {
- player->SetInGuild(m_id);
- player->SetRank(rankId);
- player->SetGuildIdInvited(0);
- }
_UpdateAccountsNumber();
+ _LogEvent(GUILD_EVENT_LOG_JOIN_GUILD, lowguid);
+ _BroadcastEvent(GE_JOINED, guid, name.c_str());
// Call scripts if member was succesfully added (and stored to database)
sScriptMgr->OnGuildAddMember(this, player, rankId);
@@ -2144,6 +2233,7 @@ void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked)
else if (!newLeader || newLeader->GetRankId() > i->second->GetRankId())
newLeader = i->second;
}
+
if (!newLeader)
{
Disband();
@@ -2163,7 +2253,7 @@ void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked)
_BroadcastEvent(GE_LEFT, guid, oldLeader->GetName().c_str());
}
}
- // Call script on remove before member is acutally removed from guild (and database)
+ // Call script on remove before member is actually removed from guild (and database)
sScriptMgr->OnGuildRemoveMember(this, player, isDisbanding, isKicked);
if (Member* member = GetMember(guid))
@@ -2193,7 +2283,6 @@ bool Guild::ChangeMemberRank(uint64 guid, uint8 newRank)
return false;
}
-///////////////////////////////////////////////////////////////////////////////
// Bank (items move)
void Guild::SwapItems(Player* player, uint8 tabId, uint8 slotId, uint8 destTabId, uint8 destSlotId, uint32 splitedAmount)
{
@@ -2222,9 +2311,8 @@ void Guild::SwapItemsWithInventory(Player* player, bool toChar, uint8 tabId, uin
_MoveItems(&charData, &bankData, splitedAmount);
}
-///////////////////////////////////////////////////////////////////////////////
// Bank tabs
-void Guild::SetBankTabText(uint8 tabId, const std::string& text)
+void Guild::SetBankTabText(uint8 tabId, std::string const& text)
{
if (BankTab* pTab = GetBankTab(tabId))
{
@@ -2233,7 +2321,6 @@ void Guild::SetBankTabText(uint8 tabId, const std::string& text)
}
}
-///////////////////////////////////////////////////////////////////////////////
// Private methods
void Guild::_CreateLogHolders()
{
@@ -2242,18 +2329,14 @@ void Guild::_CreateLogHolders()
m_bankEventLog[tabId] = new LogHolder(m_id, sWorld->getIntConfig(CONFIG_GUILD_BANK_EVENT_LOG_COUNT));
}
-bool Guild::_CreateNewBankTab()
+void Guild::_CreateNewBankTab()
{
- if (_GetPurchasedTabsSize() >= GUILD_BANK_MAX_TABS)
- return false;
-
uint8 tabId = _GetPurchasedTabsSize(); // Next free id
m_bankTabs.push_back(new BankTab(m_id, tabId));
- PreparedStatement* stmt = NULL;
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_TAB);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_TAB);
stmt->setUInt32(0, m_id);
stmt->setUInt8 (1, tabId);
trans->Append(stmt);
@@ -2263,15 +2346,16 @@ bool Guild::_CreateNewBankTab()
stmt->setUInt8 (1, tabId);
trans->Append(stmt);
+ ++tabId;
+ for (Ranks::iterator itr = m_ranks.begin(); itr != m_ranks.end(); ++itr)
+ (*itr).CreateMissingTabsIfNeeded(tabId, trans, false);
+
CharacterDatabase.CommitTransaction(trans);
- return true;
}
void Guild::_CreateDefaultGuildRanks(LocaleConstant loc)
{
- PreparedStatement* stmt = NULL;
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_RANKS);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_RANKS);
stmt->setUInt32(0, m_id);
CharacterDatabase.Execute(stmt);
@@ -2286,29 +2370,22 @@ void Guild::_CreateDefaultGuildRanks(LocaleConstant loc)
_CreateRank(sObjectMgr->GetTrinityString(LANG_GUILD_INITIATE, loc), GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK);
}
-void Guild::_CreateRank(const std::string& name, uint32 rights)
+bool Guild::_CreateRank(std::string const& name, uint32 rights)
{
- if (_GetRanksSize() >= GUILD_RANKS_MAX_COUNT)
- return;
-
- // Ranks represent sequence 0, 1, 2, ... where 0 means guildmaster
uint8 newRankId = _GetRanksSize();
+ if (newRankId >= GUILD_RANKS_MAX_COUNT)
+ return false;
+ // Ranks represent sequence 0, 1, 2, ... where 0 means guildmaster
RankInfo info(m_id, newRankId, name, rights, 0);
m_ranks.push_back(info);
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- for (uint8 i = 0; i < _GetPurchasedTabsSize(); ++i)
- {
- // Create bank rights with default values
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_RIGHT_DEFAULT);
- stmt->setUInt32(0, m_id);
- stmt->setUInt8 (1, i);
- stmt->setUInt8 (2, newRankId);
- trans->Append(stmt);
- }
+ info.CreateMissingTabsIfNeeded(_GetPurchasedTabsSize(), trans);
info.SaveToDB(trans);
CharacterDatabase.CommitTransaction(trans);
+
+ return true;
}
// Updates the number of accounts that are in the guild
@@ -2382,28 +2459,16 @@ void Guild::_SetLeaderGUID(Member* pLeader)
void Guild::_SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay)
{
if (RankInfo* rankInfo = GetRankInfo(rankId))
- {
- for (Members::iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
- if (itr->second->IsRank(rankId))
- itr->second->ResetMoneyTime();
-
rankInfo->SetBankMoneyPerDay(moneyPerDay);
- }
}
-void Guild::_SetRankBankTabRightsAndSlots(uint8 rankId, uint8 tabId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB)
+void Guild::_SetRankBankTabRightsAndSlots(uint8 rankId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB)
{
- if (tabId >= _GetPurchasedTabsSize())
+ if (rightsAndSlots.GetTabId() >= _GetPurchasedTabsSize())
return;
if (RankInfo* rankInfo = GetRankInfo(rankId))
- {
- for (Members::iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
- if (itr->second->IsRank(rankId))
- itr->second->ResetTabTimes();
-
- rankInfo->SetBankTabSlotsAndRights(tabId, rightsAndSlots, saveToDB);
- }
+ rankInfo->SetBankTabSlotsAndRights(rightsAndSlots, saveToDB);
}
inline std::string Guild::_GetRankName(uint8 rankId) const
@@ -2420,14 +2485,14 @@ inline uint32 Guild::_GetRankRights(uint8 rankId) const
return 0;
}
-inline uint32 Guild::_GetRankBankMoneyPerDay(uint8 rankId) const
+inline int32 Guild::_GetRankBankMoneyPerDay(uint8 rankId) const
{
if (const RankInfo* rankInfo = GetRankInfo(rankId))
return rankInfo->GetBankMoneyPerDay();
return 0;
}
-inline uint32 Guild::_GetRankBankTabSlotsPerDay(uint8 rankId, uint8 tabId) const
+inline int32 Guild::_GetRankBankTabSlotsPerDay(uint8 rankId, uint8 tabId) const
{
if (tabId < _GetPurchasedTabsSize())
if (const RankInfo* rankInfo = GetRankInfo(rankId))
@@ -2435,35 +2500,57 @@ inline uint32 Guild::_GetRankBankTabSlotsPerDay(uint8 rankId, uint8 tabId) const
return 0;
}
-inline uint8 Guild::_GetRankBankTabRights(uint8 rankId, uint8 tabId) const
+inline int8 Guild::_GetRankBankTabRights(uint8 rankId, uint8 tabId) const
{
if (const RankInfo* rankInfo = GetRankInfo(rankId))
return rankInfo->GetBankTabRights(tabId);
return 0;
}
-inline uint32 Guild::_GetMemberRemainingSlots(uint64 guid, uint8 tabId) const
+inline int32 Guild::_GetMemberRemainingSlots(Member const* member, uint8 tabId) const
{
- if (const Member* member = GetMember(guid))
- return member->GetBankRemainingValue(tabId, this);
+ if (member)
+ {
+ uint8 rankId = member->GetRankId();
+ if (rankId == GR_GUILDMASTER)
+ return GUILD_WITHDRAW_SLOT_UNLIMITED;
+ if ((_GetRankBankTabRights(rankId, tabId) & GUILD_BANK_RIGHT_VIEW_TAB) != GR_RIGHT_EMPTY)
+ {
+ int32 remaining = _GetRankBankTabSlotsPerDay(rankId, tabId) - member->GetBankWithdrawValue(tabId);
+ if (remaining > 0)
+ return remaining;
+ }
+ }
return 0;
}
-inline uint32 Guild::_GetMemberRemainingMoney(uint64 guid) const
+inline int32 Guild::_GetMemberRemainingMoney(Member const* member) const
{
- if (const Member* member = GetMember(guid))
- return member->GetBankRemainingValue(GUILD_BANK_MAX_TABS, this);
+ if (member)
+ {
+ uint8 rankId = member->GetRankId();
+ if (rankId == GR_GUILDMASTER)
+ return GUILD_WITHDRAW_MONEY_UNLIMITED;
+
+ if ((_GetRankRights(rankId) & (GR_RIGHT_WITHDRAW_REPAIR | GR_RIGHT_WITHDRAW_GOLD)) != GR_RIGHT_EMPTY)
+ {
+ int32 remaining = _GetRankBankMoneyPerDay(rankId) - member->GetBankWithdrawValue(GUILD_BANK_MAX_TABS);
+ if (remaining > 0)
+ return remaining;
+ }
+ }
return 0;
}
-inline void Guild::_DecreaseMemberRemainingSlots(SQLTransaction& trans, uint64 guid, uint8 tabId)
+inline void Guild::_UpdateMemberWithdrawSlots(SQLTransaction& trans, uint64 guid, uint8 tabId)
{
- // Remaining slots must be more then 0
- if (uint32 remainingSlots = _GetMemberRemainingSlots(guid, tabId))
- // Ignore guild master
- if (remainingSlots < uint32(GUILD_WITHDRAW_SLOT_UNLIMITED))
- if (Member* member = GetMember(guid))
- member->DecreaseBankRemainingValue(trans, tabId, 1);
+ if (Member* member = GetMember(guid))
+ {
+ uint8 rankId = member->GetRankId();
+ if (rankId != GR_GUILDMASTER
+ && member->GetBankWithdrawValue(tabId) < _GetRankBankTabSlotsPerDay(rankId, tabId))
+ member->UpdateBankWithdrawValue(trans, tabId, 1);
+ }
}
inline bool Guild::_MemberHasTabRights(uint64 guid, uint8 tabId, uint32 rights) const
@@ -2494,6 +2581,10 @@ void Guild::_LogBankEvent(SQLTransaction& trans, GuildBankEventLogTypes eventTyp
if (tabId > GUILD_BANK_MAX_TABS)
return;
+ // not logging moves within the same tab
+ if (eventType == GUILD_BANK_LOG_MOVE_ITEM && tabId == destTabId)
+ return;
+
uint8 dbTabId = tabId;
if (BankEventLogEntry::IsMoneyEvent(eventType))
{
@@ -2531,7 +2622,7 @@ void Guild::_MoveItems(MoveItemData* pSrc, MoveItemData* pDest, uint32 splitedAm
/*
if (pItemSrc->GetCount() == 0)
{
- sLog->outFatal(LOG_FILTER_GENERAL, "Guild::SwapItems: Player %s(GUIDLow: %u) tried to move item %u from tab %u slot %u to tab %u slot %u, but item %u has a stack of zero!",
+ sLog->outFatal(LOG_FILTER_GUILD, "Guild::SwapItems: Player %s(GUIDLow: %u) tried to move item %u from tab %u slot %u to tab %u slot %u, but item %u has a stack of zero!",
player->GetName(), player->GetGUIDLow(), pItemSrc->GetEntry(), tabId, slotId, destTabId, destSlotId, pItemSrc->GetEntry());
//return; // Commented out for now, uncomment when it's verified that this causes a crash!!
}
@@ -2627,36 +2718,15 @@ bool Guild::_DoItemsMove(MoveItemData* pSrc, MoveItemData* pDest, bool sendError
void Guild::_SendBankContent(WorldSession* session, uint8 tabId) const
{
uint64 guid = session->GetPlayer()->GetGUID();
- if (_MemberHasTabRights(guid, tabId, GUILD_BANK_RIGHT_VIEW_TAB))
- if (const BankTab* pTab = GetBankTab(tabId))
- {
- WorldPacket data(SMSG_GUILD_BANK_LIST, 1200);
-
- data << uint64(m_bankMoney);
- data << uint8(tabId);
- data << uint32(_GetMemberRemainingSlots(guid, tabId));
- data << uint8(0); // Tell client that there's no tab info in this packet
-
- pTab->WritePacket(data);
-
- session->SendPacket(&data);
+ if (!_MemberHasTabRights(guid, tabId, GUILD_BANK_RIGHT_VIEW_TAB))
+ return;
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_BANK_LIST)");
- }
+ _SendBankList(session, tabId, true);
}
void Guild::_SendBankMoneyUpdate(WorldSession* session) const
{
- WorldPacket data(SMSG_GUILD_BANK_LIST, 8 + 1 + 4 + 1 + 1);
-
- data << uint64(m_bankMoney);
- data << uint8(0); // tabId, default 0
- data << uint32(_GetMemberRemainingSlots(session->GetPlayer()->GetGUID(), 0));
- data << uint8(0); // Tell that there's no tab info in this packet
- data << uint8(0); // No items
- BroadcastPacket(&data);
-
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_BANK_LIST)");
+ _SendBankList(session);
}
void Guild::_SendBankContentUpdate(MoveItemData* pSrc, MoveItemData* pDest) const
@@ -2687,37 +2757,13 @@ void Guild::_SendBankContentUpdate(MoveItemData* pSrc, MoveItemData* pDest) cons
tabId = pDest->GetContainer();
pDest->CopySlots(slots);
}
+
_SendBankContentUpdate(tabId, slots);
}
void Guild::_SendBankContentUpdate(uint8 tabId, SlotIds slots) const
{
- if (const BankTab* pTab = GetBankTab(tabId))
- {
- WorldPacket data(SMSG_GUILD_BANK_LIST, 1200);
-
- data << uint64(m_bankMoney);
- data << uint8(tabId);
-
- size_t rempos = data.wpos();
- data << uint32(0); // Item withdraw amount, will be filled later
- data << uint8(0); // Tell client that there's no tab info in this packet
-
- data << uint8(slots.size());
- for (uint8 slotId = 0; slotId < GUILD_BANK_MAX_SLOTS; ++slotId)
- if (slots.find(slotId) != slots.end())
- pTab->WriteSlotPacket(data, slotId);
-
- for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
- if (_MemberHasTabRights(itr->second->GetGUID(), tabId, GUILD_BANK_RIGHT_VIEW_TAB))
- if (Player* player = itr->second->FindPlayer())
- {
- data.put<uint32>(rempos, uint32(_GetMemberRemainingSlots(player->GetGUID(), tabId)));
- player->GetSession()->SendPacket(&data);
- }
-
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent (SMSG_GUILD_BANK_LIST)");
- }
+ _SendBankList(NULL, tabId, false, &slots);
}
void Guild::_BroadcastEvent(GuildEvents guildEvent, uint64 guid, const char* param1, const char* param2, const char* param3) const
@@ -2740,5 +2786,74 @@ void Guild::_BroadcastEvent(GuildEvents guildEvent, uint64 guid, const char* par
BroadcastPacket(&data);
- sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent SMSG_GUILD_EVENT");
+ if (sLog->ShouldLog(LOG_FILTER_GUILD, LOG_LEVEL_DEBUG))
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_EVENT [Broadcast] Event: %s (%u)", _GetGuildEventString(guildEvent).c_str(), guildEvent);
+}
+
+void Guild::_SendBankList(WorldSession* session /* = NULL*/, uint8 tabId /*= 0*/, bool sendAllSlots /*= false*/, SlotIds *slots /*= NULL*/) const
+{
+ WorldPacket data(SMSG_GUILD_BANK_LIST, 500);
+ data << uint64(m_bankMoney);
+ data << uint8(tabId);
+ size_t rempos = data.wpos();
+ data << uint32(0);
+ data << uint8(sendAllSlots);
+
+ if (sendAllSlots && !tabId)
+ {
+ data << uint8(_GetPurchasedTabsSize()); // Number of tabs
+ for (uint8 i = 0; i < _GetPurchasedTabsSize(); ++i)
+ m_bankTabs[i]->WriteInfoPacket(data);
+ }
+
+ BankTab const* tab = GetBankTab(tabId);
+ if (!tab)
+ data << uint8(0);
+ else if (sendAllSlots)
+ tab->WritePacket(data);
+ else if (slots && !slots->empty())
+ {
+ data << uint8(slots->size());
+ for (SlotIds::const_iterator itr = slots->begin(); itr != slots->end(); ++itr)
+ tab->WriteSlotPacket(data, *itr, false);
+ }
+ else
+ data << uint8(0);
+
+ if (session)
+ {
+ int32 numSlots = 0;
+ if (Member const* member = GetMember(session->GetPlayer()->GetGUID()))
+ numSlots = _GetMemberRemainingSlots(member, tabId);
+ data.put<uint32>(rempos, numSlots);
+ session->SendPacket(&data);
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_BANK_LIST [%s]: TabId: %u, FullSlots: %u, slots: %d",
+ session->GetPlayerInfo().c_str(), tabId, sendAllSlots, numSlots);
+ }
+ else // TODO - Probably this is just sent to session + those that have sent CMSG_GUILD_BANKER_ACTIVATE
+ {
+ for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
+ {
+ if (!_MemberHasTabRights(itr->second->GetGUID(), tabId, GUILD_BANK_RIGHT_VIEW_TAB))
+ continue;
+ Player* player = itr->second->FindPlayer();
+ if (!player)
+ continue;
+
+ uint32 numSlots = _GetMemberRemainingSlots(itr->second, tabId);
+ data.put<uint32>(rempos, numSlots);
+ player->GetSession()->SendPacket(&data);
+ sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_BANK_LIST [%s]: TabId: %u, FullSlots: %u, slots: %u"
+ , player->GetName().c_str(), tabId, sendAllSlots, numSlots);
+ }
+ }
+}
+
+void Guild::ResetTimes()
+{
+ for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
+ itr->second->ResetValues();
+
+ // Hack... way to force client to ask for money/slots
+ _BroadcastEvent(GE_RANK_UPDATED, 0, "0", GetRankInfo(0)->GetName().c_str());
}
diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h
index 9e4c7828b1b..a8bf5dcdb62 100755
--- a/src/server/game/Guilds/Guild.h
+++ b/src/server/game/Guilds/Guild.h
@@ -37,7 +37,14 @@ enum GuildMisc
GUILD_RANK_NONE = 0xFF,
GUILD_WITHDRAW_MONEY_UNLIMITED = 0xFFFFFFFF,
GUILD_WITHDRAW_SLOT_UNLIMITED = 0xFFFFFFFF,
- GUILD_EVENT_LOG_GUID_UNDEFINED = 0xFFFFFFFF
+ GUILD_EVENT_LOG_GUID_UNDEFINED = 0xFFFFFFFF,
+ TAB_UNDEFINED = 0xFF,
+};
+
+enum GuildMemberData
+{
+ GUILD_MEMBER_DATA_ZONEID,
+ GUILD_MEMBER_DATA_LEVEL,
};
enum GuildDefaultRanks
@@ -54,87 +61,97 @@ enum GuildDefaultRanks
enum GuildRankRights
{
- GR_RIGHT_EMPTY = 0x00000040,
- GR_RIGHT_GCHATLISTEN = GR_RIGHT_EMPTY | 0x00000001,
- GR_RIGHT_GCHATSPEAK = GR_RIGHT_EMPTY | 0x00000002,
- GR_RIGHT_OFFCHATLISTEN = GR_RIGHT_EMPTY | 0x00000004,
- GR_RIGHT_OFFCHATSPEAK = GR_RIGHT_EMPTY | 0x00000008,
- GR_RIGHT_INVITE = GR_RIGHT_EMPTY | 0x00000010,
- GR_RIGHT_REMOVE = GR_RIGHT_EMPTY | 0x00000020,
- GR_RIGHT_PROMOTE = GR_RIGHT_EMPTY | 0x00000080,
- GR_RIGHT_DEMOTE = GR_RIGHT_EMPTY | 0x00000100,
- GR_RIGHT_SETMOTD = GR_RIGHT_EMPTY | 0x00001000,
- GR_RIGHT_EPNOTE = GR_RIGHT_EMPTY | 0x00002000,
- GR_RIGHT_VIEWOFFNOTE = GR_RIGHT_EMPTY | 0x00004000,
- GR_RIGHT_EOFFNOTE = GR_RIGHT_EMPTY | 0x00008000,
- GR_RIGHT_MODIFY_GUILD_INFO = GR_RIGHT_EMPTY | 0x00010000,
- GR_RIGHT_WITHDRAW_GOLD_LOCK = 0x00020000, // remove money withdraw capacity
- GR_RIGHT_WITHDRAW_REPAIR = 0x00040000, // withdraw for repair
- GR_RIGHT_WITHDRAW_GOLD = 0x00080000, // withdraw gold
- GR_RIGHT_CREATE_GUILD_EVENT = 0x00100000, // wotlk
- GR_RIGHT_ALL = 0x001DF1FF
+ GR_RIGHT_EMPTY = 0x00000040,
+ GR_RIGHT_GCHATLISTEN = GR_RIGHT_EMPTY | 0x00000001,
+ GR_RIGHT_GCHATSPEAK = GR_RIGHT_EMPTY | 0x00000002,
+ GR_RIGHT_OFFCHATLISTEN = GR_RIGHT_EMPTY | 0x00000004,
+ GR_RIGHT_OFFCHATSPEAK = GR_RIGHT_EMPTY | 0x00000008,
+ GR_RIGHT_INVITE = GR_RIGHT_EMPTY | 0x00000010,
+ GR_RIGHT_REMOVE = GR_RIGHT_EMPTY | 0x00000020,
+ GR_RIGHT_PROMOTE = GR_RIGHT_EMPTY | 0x00000080,
+ GR_RIGHT_DEMOTE = GR_RIGHT_EMPTY | 0x00000100,
+ GR_RIGHT_SETMOTD = GR_RIGHT_EMPTY | 0x00001000,
+ GR_RIGHT_EPNOTE = GR_RIGHT_EMPTY | 0x00002000,
+ GR_RIGHT_VIEWOFFNOTE = GR_RIGHT_EMPTY | 0x00004000,
+ GR_RIGHT_EOFFNOTE = GR_RIGHT_EMPTY | 0x00008000,
+ GR_RIGHT_MODIFY_GUILD_INFO = GR_RIGHT_EMPTY | 0x00010000,
+ GR_RIGHT_WITHDRAW_GOLD_LOCK = 0x00020000, // remove money withdraw capacity
+ GR_RIGHT_WITHDRAW_REPAIR = 0x00040000, // withdraw for repair
+ GR_RIGHT_WITHDRAW_GOLD = 0x00080000, // withdraw gold
+ GR_RIGHT_CREATE_GUILD_EVENT = 0x00100000, // wotlk
+ GR_RIGHT_ALL = 0x001DF1FF
};
enum GuildCommandType
{
- GUILD_CREATE_S = 0x00,
- GUILD_INVITE_S = 0x01,
- GUILD_QUIT_S = 0x03,
- GUILD_FOUNDER_S = 0x0E,
- GUILD_UNK1 = 0x13,
- GUILD_UNK2 = 0x14
+ GUILD_COMMAND_CREATE = 0,
+ GUILD_COMMAND_INVITE = 1,
+ GUILD_COMMAND_QUIT = 3,
+ GUILD_COMMAND_ROSTER = 5,
+ GUILD_COMMAND_PROMOTE = 6,
+ GUILD_COMMAND_DEMOTE = 7,
+ GUILD_COMMAND_REMOVE = 8,
+ GUILD_COMMAND_CHANGE_LEADER = 10,
+ GUILD_COMMAND_EDIT_MOTD = 11,
+ GUILD_COMMAND_GUILD_CHAT = 13,
+ GUILD_COMMAND_FOUNDER = 14,
+ GUILD_COMMAND_CHANGE_RANK = 16,
+ GUILD_COMMAND_PUBLIC_NOTE = 19,
+ GUILD_COMMAND_VIEW_TAB = 21,
+ GUILD_COMMAND_MOVE_ITEM = 22,
+ GUILD_COMMAND_REPAIR = 25,
};
enum GuildCommandError
{
- ERR_PLAYER_NO_MORE_IN_GUILD = 0x00,
- ERR_GUILD_INTERNAL = 0x01,
- ERR_ALREADY_IN_GUILD = 0x02,
- ERR_ALREADY_IN_GUILD_S = 0x03,
- ERR_INVITED_TO_GUILD = 0x04,
- ERR_ALREADY_INVITED_TO_GUILD_S = 0x05,
- ERR_GUILD_NAME_INVALID = 0x06,
- ERR_GUILD_NAME_EXISTS_S = 0x07,
- ERR_GUILD_LEADER_LEAVE = 0x08,
- ERR_GUILD_PERMISSIONS = 0x08,
- ERR_GUILD_PLAYER_NOT_IN_GUILD = 0x09,
- ERR_GUILD_PLAYER_NOT_IN_GUILD_S = 0x0A,
- ERR_GUILD_PLAYER_NOT_FOUND_S = 0x0B,
- ERR_GUILD_NOT_ALLIED = 0x0C,
- ERR_GUILD_RANK_TOO_HIGH_S = 0x0D,
- ERR_GUILD_RANK_TOO_LOW_S = 0x0E,
- ERR_GUILD_RANKS_LOCKED = 0x11,
- ERR_GUILD_RANK_IN_USE = 0x12,
- ERR_GUILD_IGNORING_YOU_S = 0x13,
- ERR_GUILD_UNK1 = 0x14,
- ERR_GUILD_WITHDRAW_LIMIT = 0x19,
- ERR_GUILD_NOT_ENOUGH_MONEY = 0x1A,
- ERR_GUILD_BANK_FULL = 0x1C,
- ERR_GUILD_ITEM_NOT_FOUND = 0x1D
+ ERR_GUILD_COMMAND_SUCCESS = 0,
+ ERR_GUILD_INTERNAL = 1,
+ ERR_ALREADY_IN_GUILD = 2,
+ ERR_ALREADY_IN_GUILD_S = 3,
+ ERR_INVITED_TO_GUILD = 4,
+ ERR_ALREADY_INVITED_TO_GUILD_S = 5,
+ ERR_GUILD_NAME_INVALID = 6,
+ ERR_GUILD_NAME_EXISTS_S = 7,
+ ERR_GUILD_LEADER_LEAVE = 8,
+ ERR_GUILD_PERMISSIONS = 8,
+ ERR_GUILD_PLAYER_NOT_IN_GUILD = 9,
+ ERR_GUILD_PLAYER_NOT_IN_GUILD_S = 10,
+ ERR_GUILD_PLAYER_NOT_FOUND_S = 11,
+ ERR_GUILD_NOT_ALLIED = 12,
+ ERR_GUILD_RANK_TOO_HIGH_S = 13,
+ ERR_GUILD_RANK_TOO_LOW_S = 14,
+ ERR_GUILD_RANKS_LOCKED = 17,
+ ERR_GUILD_RANK_IN_USE = 18,
+ ERR_GUILD_IGNORING_YOU_S = 19,
+ ERR_GUILD_UNK1 = 20, // Forces roster update
+ ERR_GUILD_WITHDRAW_LIMIT = 25,
+ ERR_GUILD_NOT_ENOUGH_MONEY = 26,
+ ERR_GUILD_BANK_FULL = 28,
+ ERR_GUILD_ITEM_NOT_FOUND = 29,
};
enum GuildEvents
{
- GE_PROMOTION = 0x00,
- GE_DEMOTION = 0x01,
- GE_MOTD = 0x02,
- GE_JOINED = 0x03,
- GE_LEFT = 0x04,
- GE_REMOVED = 0x05,
- GE_LEADER_IS = 0x06,
- GE_LEADER_CHANGED = 0x07,
- GE_DISBANDED = 0x08,
- GE_TABARDCHANGE = 0x09,
- GE_UNK1 = 0x0A, // string, string EVENT_GUILD_ROSTER_UPDATE tab content change?
- GE_UNK2 = 0x0B, // EVENT_GUILD_ROSTER_UPDATE
- GE_SIGNED_ON = 0x0C, // ERR_FRIEND_ONLINE_SS
- GE_SIGNED_OFF = 0x0D, // ERR_FRIEND_OFFLINE_S
- GE_GUILDBANK_BAGSLOTS_CHANGED = 0x0E, // EVENT_GUILDBANK_BAGSLOTS_CHANGED
- GE_GUILDBANK_TAB_PURCHASED = 0x0F, // EVENT_GUILDBANK_UPDATE_TABS
- GE_UNK5 = 0x10, // EVENT_GUILDBANK_UPDATE_TABS
- GE_GUILDBANK_MONEY_UPDATE = 0x11, // EVENT_GUILDBANK_UPDATE_MONEY, string 0000000000002710 is 1 gold
- GE_GUILDBANK_MONEY_WITHDRAWN = 0x12, // MSG_GUILD_BANK_MONEY_WITHDRAWN
- GE_GUILDBANK_TEXT_CHANGED = 0x13 // EVENT_GUILDBANK_TEXT_CHANGED
+ GE_PROMOTION = 0,
+ GE_DEMOTION = 1,
+ GE_MOTD = 2,
+ GE_JOINED = 3,
+ GE_LEFT = 4,
+ GE_REMOVED = 5,
+ GE_LEADER_IS = 6,
+ GE_LEADER_CHANGED = 7,
+ GE_DISBANDED = 8,
+ GE_TABARDCHANGE = 9,
+ GE_RANK_UPDATED = 10,
+ GE_RANK_DELETED = 11,
+ GE_SIGNED_ON = 12,
+ GE_SIGNED_OFF = 13,
+ GE_GUILDBANKBAGSLOTS_CHANGED = 14,
+ GE_BANK_TAB_PURCHASED = 15,
+ GE_BANK_TAB_UPDATED = 16,
+ GE_BANK_MONEY_SET = 17,
+ GE_BANK_MONEY_CHANGED = 18,
+ GE_BANK_TEXT_CHANGED = 19,
};
enum PetitionTurns
@@ -146,44 +163,44 @@ enum PetitionTurns
enum PetitionSigns
{
- PETITION_SIGN_OK = 0,
- PETITION_SIGN_ALREADY_SIGNED = 1,
- PETITION_SIGN_ALREADY_IN_GUILD = 2,
- PETITION_SIGN_CANT_SIGN_OWN = 3,
- PETITION_SIGN_NOT_SERVER = 4
+ PETITION_SIGN_OK = 0,
+ PETITION_SIGN_ALREADY_SIGNED = 1,
+ PETITION_SIGN_ALREADY_IN_GUILD = 2,
+ PETITION_SIGN_CANT_SIGN_OWN = 3,
+ PETITION_SIGN_NOT_SERVER = 4
};
enum GuildBankRights
{
- GUILD_BANK_RIGHT_VIEW_TAB = 0x01,
- GUILD_BANK_RIGHT_PUT_ITEM = 0x02,
- GUILD_BANK_RIGHT_UPDATE_TEXT = 0x04,
+ GUILD_BANK_RIGHT_VIEW_TAB = 0x01,
+ GUILD_BANK_RIGHT_PUT_ITEM = 0x02,
+ GUILD_BANK_RIGHT_UPDATE_TEXT = 0x04,
- GUILD_BANK_RIGHT_DEPOSIT_ITEM = GUILD_BANK_RIGHT_VIEW_TAB | GUILD_BANK_RIGHT_PUT_ITEM,
- GUILD_BANK_RIGHT_FULL = 0xFF
+ GUILD_BANK_RIGHT_DEPOSIT_ITEM = GUILD_BANK_RIGHT_VIEW_TAB | GUILD_BANK_RIGHT_PUT_ITEM,
+ GUILD_BANK_RIGHT_FULL = 0xFF
};
enum GuildBankEventLogTypes
{
- GUILD_BANK_LOG_DEPOSIT_ITEM = 1,
- GUILD_BANK_LOG_WITHDRAW_ITEM = 2,
- GUILD_BANK_LOG_MOVE_ITEM = 3,
- GUILD_BANK_LOG_DEPOSIT_MONEY = 4,
- GUILD_BANK_LOG_WITHDRAW_MONEY = 5,
- GUILD_BANK_LOG_REPAIR_MONEY = 6,
- GUILD_BANK_LOG_MOVE_ITEM2 = 7,
- GUILD_BANK_LOG_UNK1 = 8,
- GUILD_BANK_LOG_UNK2 = 9
+ GUILD_BANK_LOG_DEPOSIT_ITEM = 1,
+ GUILD_BANK_LOG_WITHDRAW_ITEM = 2,
+ GUILD_BANK_LOG_MOVE_ITEM = 3,
+ GUILD_BANK_LOG_DEPOSIT_MONEY = 4,
+ GUILD_BANK_LOG_WITHDRAW_MONEY = 5,
+ GUILD_BANK_LOG_REPAIR_MONEY = 6,
+ GUILD_BANK_LOG_MOVE_ITEM2 = 7,
+ GUILD_BANK_LOG_UNK1 = 8,
+ GUILD_BANK_LOG_BUY_SLOT = 9
};
enum GuildEventLogTypes
{
- GUILD_EVENT_LOG_INVITE_PLAYER = 1,
- GUILD_EVENT_LOG_JOIN_GUILD = 2,
- GUILD_EVENT_LOG_PROMOTE_PLAYER = 3,
- GUILD_EVENT_LOG_DEMOTE_PLAYER = 4,
- GUILD_EVENT_LOG_UNINVITE_PLAYER = 5,
- GUILD_EVENT_LOG_LEAVE_GUILD = 6
+ GUILD_EVENT_LOG_INVITE_PLAYER = 1,
+ GUILD_EVENT_LOG_JOIN_GUILD = 2,
+ GUILD_EVENT_LOG_PROMOTE_PLAYER = 3,
+ GUILD_EVENT_LOG_DEMOTE_PLAYER = 4,
+ GUILD_EVENT_LOG_UNINVITE_PLAYER = 5,
+ GUILD_EVENT_LOG_LEAVE_GUILD = 6
};
enum GuildEmblemError
@@ -196,7 +213,15 @@ enum GuildEmblemError
ERR_GUILDEMBLEM_INVALIDVENDOR = 5
};
-////////////////////////////////////////////////////////////////////////////////////////////
+enum GuildMemberFlags
+{
+ GUILDMEMBER_STATUS_NONE = 0x0000,
+ GUILDMEMBER_STATUS_ONLINE = 0x0001,
+ GUILDMEMBER_STATUS_AFK = 0x0002,
+ GUILDMEMBER_STATUS_DND = 0x0004,
+ GUILDMEMBER_STATUS_MOBILE = 0x0008, // remote chat from mobile app
+};
+
// Emblem info
class EmblemInfo
{
@@ -205,7 +230,7 @@ public:
void LoadFromDB(Field* fields);
void SaveToDB(uint32 guildId) const;
- void ReadPacket(WorldPacket& recv) { recv >> m_style >> m_color >> m_borderStyle >> m_borderColor >> m_backgroundColor; }
+ void ReadPacket(WorldPacket& recv);
void WritePacket(WorldPacket& data) const;
uint32 GetStyle() const { return m_style; }
@@ -223,21 +248,33 @@ private:
};
// Structure for storing guild bank rights and remaining slots together.
-struct GuildBankRightsAndSlots
+class GuildBankRightsAndSlots
{
- GuildBankRightsAndSlots() : rights(0), slots(0) { }
- GuildBankRightsAndSlots(uint8 _rights, uint32 _slots) : rights(_rights), slots(_slots) { }
+public:
+ GuildBankRightsAndSlots() : tabId(TAB_UNDEFINED), rights(0), slots(0) { }
+ GuildBankRightsAndSlots(uint8 _tabId) : tabId(_tabId), rights(0), slots(0) { }
+ GuildBankRightsAndSlots(uint8 _tabId, uint8 _rights, uint32 _slots) : tabId(_tabId), rights(_rights), slots(_slots) { }
- inline bool IsEqual(GuildBankRightsAndSlots const& rhs) const { return rights == rhs.rights && slots == rhs.slots; }
void SetGuildMasterValues()
{
rights = GUILD_BANK_RIGHT_FULL;
slots = uint32(GUILD_WITHDRAW_SLOT_UNLIMITED);
}
+ void SetTabId(uint8 _tabId) { tabId = _tabId; }
+ void SetSlots(uint32 _slots) { slots = _slots; }
+ void SetRights(uint8 _rights) { rights = _rights; }
+
+ int8 GetTabId() const { return tabId; }
+ int32 GetSlots() const { return slots; }
+ int8 GetRights() const { return rights; }
+
+private:
+ uint8 tabId;
uint8 rights;
uint32 slots;
};
+
typedef std::vector <GuildBankRightsAndSlots> GuildBankRightsAndSlotsVec;
typedef std::set <uint8> SlotIds;
@@ -248,16 +285,19 @@ private:
// Class representing guild member
class Member
{
- struct RemainingValue
- {
- RemainingValue() : value(0), resetTime(0) { }
-
- uint32 value;
- uint32 resetTime;
- };
-
public:
- Member(uint32 guildId, uint64 guid, uint8 rankId) : m_guildId(guildId), m_guid(guid), m_logoutTime(::time(NULL)), m_rankId(rankId) { }
+ Member(uint32 guildId, uint64 guid, uint8 rankId):
+ m_guildId(guildId),
+ m_guid(guid),
+ m_zoneId(0),
+ m_level(0),
+ m_class(0),
+ m_logoutTime(::time(NULL)),
+ m_accountId(0),
+ m_rankId(rankId)
+ {
+ memset(m_bankWithdraw, 0, (GUILD_BANK_MAX_TABS + 1) * sizeof(int32));
+ }
void SetStats(Player* player);
void SetStats(std::string const& name, uint8 level, uint8 _class, uint32 zoneId, uint32 accountId);
@@ -265,6 +305,12 @@ private:
void SetPublicNote(std::string const& publicNote);
void SetOfficerNote(std::string const& officerNote);
+ void SetZoneID(uint32 id) { m_zoneId = id; }
+ void SetLevel(uint8 var) { m_level = var; }
+
+ void AddFlag(uint8 var) { m_flags |= var; }
+ void RemFlag(uint8 var) { m_flags &= ~var; }
+ void ResetFlags() { m_flags = GUILDMEMBER_STATUS_NONE; }
bool LoadFromDB(Field* fields);
void SaveToDB(SQLTransaction& trans) const;
@@ -274,6 +320,14 @@ private:
std::string const& GetName() const { return m_name; }
uint32 GetAccountId() const { return m_accountId; }
uint8 GetRankId() const { return m_rankId; }
+ uint64 GetLogoutTime() const { return m_logoutTime; }
+ std::string GetPublicNote() const { return m_publicNote; }
+ std::string GetOfficerNote() const { return m_officerNote; }
+ uint8 GetClass() const { return m_class; }
+ uint8 GetLevel() const { return m_level; }
+ uint8 GetFlags() const { return m_flags; }
+ uint32 GetZoneId() const { return m_zoneId; }
+ bool IsOnline() { return (m_flags & GUILDMEMBER_STATUS_ONLINE); }
void ChangeRank(uint8 newRank);
@@ -282,11 +336,9 @@ private:
inline bool IsRankNotLower(uint8 rankId) const { return m_rankId <= rankId; }
inline bool IsSamePlayer(uint64 guid) const { return m_guid == guid; }
- void DecreaseBankRemainingValue(SQLTransaction& trans, uint8 tabId, uint32 amount);
- uint32 GetBankRemainingValue(uint8 tabId, const Guild* guild) const;
-
- void ResetTabTimes();
- void ResetMoneyTime();
+ void UpdateBankWithdrawValue(SQLTransaction& trans, uint8 tabId, uint32 amount);
+ int32 GetBankWithdrawValue(uint8 tabId) const;
+ void ResetValues();
inline Player* FindPlayer() const { return ObjectAccessor::FindPlayer(m_guid); }
@@ -296,16 +348,17 @@ private:
uint64 m_guid;
std::string m_name;
uint32 m_zoneId;
- uint8 m_level;
- uint8 m_class;
+ uint8 m_level;
+ uint8 m_class;
+ uint8 m_flags;
uint64 m_logoutTime;
uint32 m_accountId;
// Fields from guild_member table
- uint8 m_rankId;
+ uint8 m_rankId;
std::string m_publicNote;
std::string m_officerNote;
- RemainingValue m_bankRemaining[GUILD_BANK_MAX_TABS + 1];
+ int32 m_bankWithdraw[GUILD_BANK_MAX_TABS + 1];
};
// Base class for event entries
@@ -317,6 +370,7 @@ private:
virtual ~LogEntry() { }
uint32 GetGUID() const { return m_guid; }
+ uint64 GetTimestamp() const { return m_timestamp; }
virtual void SaveToDB(SQLTransaction& trans) const = 0;
virtual void WritePacket(WorldPacket& data) const = 0;
@@ -384,6 +438,8 @@ private:
};
// Class encapsulating work with events collection
+ typedef std::list<LogEntry*> GuildLog;
+
class LogHolder
{
public:
@@ -402,17 +458,17 @@ private:
uint32 GetNextGUID();
private:
- typedef std::list<LogEntry*> GuildLog;
GuildLog m_log;
uint32 m_guildId;
uint32 m_maxRecords;
uint32 m_nextGUID;
};
- // Class incapsulating guild rank data
+ // Class encapsulating guild rank data
class RankInfo
{
public:
+ RankInfo(): m_guildId(0), m_rankId(GUILD_RANK_NONE), m_rights(GR_RIGHT_EMPTY), m_bankMoneyPerDay(0) { }
RankInfo(uint32 guildId) : m_guildId(guildId), m_rankId(GUILD_RANK_NONE), m_rights(GR_RIGHT_EMPTY), m_bankMoneyPerDay(0) { }
RankInfo(uint32 guildId, uint8 rankId, std::string const& name, uint32 rights, uint32 money) :
m_guildId(guildId), m_rankId(rankId), m_name(name), m_rights(rights), m_bankMoneyPerDay(money) { }
@@ -429,17 +485,22 @@ private:
uint32 GetRights() const { return m_rights; }
void SetRights(uint32 rights);
- uint32 GetBankMoneyPerDay() const { return m_rankId == GR_GUILDMASTER ? GUILD_WITHDRAW_MONEY_UNLIMITED : m_bankMoneyPerDay; }
+ int32 GetBankMoneyPerDay() const { return m_bankMoneyPerDay; }
+
void SetBankMoneyPerDay(uint32 money);
- inline uint8 GetBankTabRights(uint8 tabId) const { return tabId < GUILD_BANK_MAX_TABS ? m_bankTabRightsAndSlots[tabId].rights : 0; }
- inline uint32 GetBankTabSlotsPerDay(uint8 tabId) const
+ inline int8 GetBankTabRights(uint8 tabId) const
{
- if (tabId < GUILD_BANK_MAX_TABS)
- return m_rankId == GR_GUILDMASTER ? GUILD_WITHDRAW_SLOT_UNLIMITED : m_bankTabRightsAndSlots[tabId].slots;
- return 0;
+ return tabId < GUILD_BANK_MAX_TABS ? m_bankTabRightsAndSlots[tabId].GetRights() : 0;
}
- void SetBankTabSlotsAndRights(uint8 tabId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB);
+
+ inline int32 GetBankTabSlotsPerDay(uint8 tabId) const
+ {
+ return tabId < GUILD_BANK_MAX_TABS ? m_bankTabRightsAndSlots[tabId].GetSlots() : 0;
+ }
+
+ void SetBankTabSlotsAndRights(GuildBankRightsAndSlots rightsAndSlots, bool saveToDB);
+ void CreateMissingTabsIfNeeded(uint8 ranks, SQLTransaction& trans, bool logOnCreate = false);
private:
uint32 m_guildId;
@@ -459,12 +520,12 @@ private:
memset(m_items, 0, GUILD_BANK_MAX_SLOTS * sizeof(Item*));
}
- bool LoadFromDB(Field* fields);
+ void LoadFromDB(Field* fields);
bool LoadItemFromDB(Field* fields);
void Delete(SQLTransaction& trans, bool removeItemsFromDB = false);
void WritePacket(WorldPacket& data) const;
- void WriteSlotPacket(WorldPacket& data, uint8 slotId) const;
+ bool WriteSlotPacket(WorldPacket& data, uint8 slotId, bool ignoreEmpty = true) const;
void WriteInfoPacket(WorldPacket& data) const
{
data << m_name;
@@ -523,6 +584,7 @@ private:
Item* GetItem(bool isCloned = false) const { return isCloned ? m_pClonedItem : m_pItem; }
uint8 GetContainer() const { return m_container; }
uint8 GetSlotId() const { return m_slotId; }
+
protected:
virtual InventoryResult CanStore(Item* pItem, bool swap) = 0;
@@ -612,22 +674,26 @@ public:
void HandleRemoveMember(WorldSession* session, std::string const& name);
void HandleUpdateMemberRank(WorldSession* session, std::string const& name, bool demote);
void HandleAddNewRank(WorldSession* session, std::string const& name);
+ void HandleRemoveRank(WorldSession* session, uint8 rankId);
void HandleRemoveLowestRank(WorldSession* session);
void HandleMemberDepositMoney(WorldSession* session, uint32 amount);
bool HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool repair = false);
void HandleMemberLogout(WorldSession* session);
void HandleDisband(WorldSession* session);
+ void UpdateMemberData(Player* player, uint8 dataid, uint32 value);
+ void OnPlayerStatusChange(Player* player, uint32 flag, bool state);
+
// Send info to client
void SendInfo(WorldSession* session) const;
void SendEventLog(WorldSession* session) const;
void SendBankLog(WorldSession* session, uint8 tabId) const;
- void SendBankTabsInfo(WorldSession* session) const;
+ void SendBankTabsInfo(WorldSession* session, bool showTabs = false) const;
void SendBankTabData(WorldSession* session, uint8 tabId) const;
void SendBankTabText(WorldSession* session, uint8 tabId) const;
void SendPermissions(WorldSession* session) const;
void SendMoneyInfo(WorldSession* session) const;
- void SendLoginInfo(WorldSession* session) const;
+ void SendLoginInfo(WorldSession* session);
// Load from DB
bool LoadFromDB(Field* fields);
@@ -635,7 +701,7 @@ public:
bool LoadMemberFromDB(Field* fields);
bool LoadEventLogFromDB(Field* fields);
void LoadBankRightFromDB(Field* fields);
- bool LoadBankTabFromDB(Field* fields);
+ void LoadBankTabFromDB(Field* fields);
bool LoadBankEventLogFromDB(Field* fields);
bool LoadBankItemFromDB(Field* fields);
bool Validate();
@@ -667,6 +733,8 @@ public:
// Bank tabs
void SetBankTabText(uint8 tabId, std::string const& text);
+ void ResetTimes();
+
protected:
uint32 m_id;
std::string m_name;
@@ -691,7 +759,14 @@ private:
inline uint8 _GetRanksSize() const { return uint8(m_ranks.size()); }
inline const RankInfo* GetRankInfo(uint8 rankId) const { return rankId < _GetRanksSize() ? &m_ranks[rankId] : NULL; }
inline RankInfo* GetRankInfo(uint8 rankId) { return rankId < _GetRanksSize() ? &m_ranks[rankId] : NULL; }
- inline bool _HasRankRight(Player* player, uint32 right) const { return (_GetRankRights(player->GetRank()) & right) != GR_RIGHT_EMPTY; }
+ inline bool _HasRankRight(Player* player, uint32 right) const
+ {
+ if (player)
+ if (Member const* member = GetMember(player->GetGUID()))
+ return (_GetRankRights(member->GetRankId()) & right) != GR_RIGHT_EMPTY;
+ return false;
+ }
+
inline uint8 _GetLowestRankId() const { return uint8(m_ranks.size() - 1); }
inline uint8 _GetPurchasedTabsSize() const { return uint8(m_bankTabs.size()); }
@@ -703,20 +778,22 @@ private:
Members::const_iterator itr = m_members.find(GUID_LOPART(guid));
return itr != m_members.end() ? itr->second : NULL;
}
+
inline Member* GetMember(uint64 guid)
{
Members::iterator itr = m_members.find(GUID_LOPART(guid));
return itr != m_members.end() ? itr->second : NULL;
}
- inline Member* GetMember(WorldSession* session, std::string const& name)
+
+ inline Member* GetMember(std::string const& name)
{
for (Members::iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
if (itr->second->GetName() == name)
return itr->second;
- SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_PLAYER_NOT_IN_GUILD_S, name);
return NULL;
}
+
inline void _DeleteMemberFromDB(uint32 lowguid) const
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBER);
@@ -727,11 +804,11 @@ private:
// Creates log holders (either when loading or when creating guild)
void _CreateLogHolders();
// Tries to create new bank tab
- bool _CreateNewBankTab();
+ void _CreateNewBankTab();
// Creates default guild ranks with names in given locale
void _CreateDefaultGuildRanks(LocaleConstant loc);
// Creates new rank
- void _CreateRank(std::string const& name, uint32 rights);
+ bool _CreateRank(std::string const& name, uint32 rights);
// Update account number when member added/removed from guild
void _UpdateAccountsNumber();
bool _IsLeader(Player* player) const;
@@ -740,16 +817,16 @@ private:
void _SetLeaderGUID(Member* pLeader);
void _SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay);
- void _SetRankBankTabRightsAndSlots(uint8 rankId, uint8 tabId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB = true);
- uint8 _GetRankBankTabRights(uint8 rankId, uint8 tabId) const;
+ void _SetRankBankTabRightsAndSlots(uint8 rankId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB = true);
+ int8 _GetRankBankTabRights(uint8 rankId, uint8 tabId) const;
uint32 _GetRankRights(uint8 rankId) const;
- uint32 _GetRankBankMoneyPerDay(uint8 rankId) const;
- uint32 _GetRankBankTabSlotsPerDay(uint8 rankId, uint8 tabId) const;
+ int32 _GetRankBankMoneyPerDay(uint8 rankId) const;
+ int32 _GetRankBankTabSlotsPerDay(uint8 rankId, uint8 tabId) const;
std::string _GetRankName(uint8 rankId) const;
- uint32 _GetMemberRemainingSlots(uint64 guid, uint8 tabId) const;
- uint32 _GetMemberRemainingMoney(uint64 guid) const;
- void _DecreaseMemberRemainingSlots(SQLTransaction& trans, uint64 guid, uint8 tabId);
+ int32 _GetMemberRemainingSlots(Member const* member, uint8 tabId) const;
+ int32 _GetMemberRemainingMoney(Member const* member) const;
+ void _UpdateMemberWithdrawSlots(SQLTransaction& trans, uint64 guid, uint8 tabId);
bool _MemberHasTabRights(uint64 guid, uint8 tabId, uint32 rights) const;
void _LogEvent(GuildEventLogTypes eventType, uint32 playerGuid1, uint32 playerGuid2 = 0, uint8 newRank = 0);
@@ -764,6 +841,7 @@ private:
void _SendBankMoneyUpdate(WorldSession* session) const;
void _SendBankContentUpdate(MoveItemData* pSrc, MoveItemData* pDest) const;
void _SendBankContentUpdate(uint8 tabId, SlotIds slots) const;
+ void _SendBankList(WorldSession* session = NULL, uint8 tabId = 0, bool sendFullSlots = false, SlotIds *slots = NULL) const;
void _BroadcastEvent(GuildEvents guildEvent, uint64 guid, const char* param1 = NULL, const char* param2 = NULL, const char* param3 = NULL) const;
};
diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp
index cebcf6040f9..0a1eb415ee6 100644
--- a/src/server/game/Guilds/GuildMgr.cpp
+++ b/src/server/game/Guilds/GuildMgr.cpp
@@ -18,10 +18,8 @@
#include "Common.h"
#include "GuildMgr.h"
-GuildMgr::GuildMgr()
-{
- NextGuildId = 1;
-}
+GuildMgr::GuildMgr() : NextGuildId(1)
+{ }
GuildMgr::~GuildMgr()
{
@@ -121,6 +119,7 @@ void GuildMgr::LoadGuilds()
delete guild;
continue;
}
+
AddGuild(guild);
++count;
@@ -172,21 +171,18 @@ void GuildMgr::LoadGuilds()
// Delete orphaned guild member entries before loading the valid ones
CharacterDatabase.DirectExecute("DELETE gm FROM guild_member gm LEFT JOIN guild g ON gm.guildId = g.guildId WHERE g.guildId IS NULL");
+ CharacterDatabase.DirectExecute("DELETE gm FROM guild_member_withdraw gm LEFT JOIN guild_member g ON gm.guid = g.guid WHERE g.guid IS NULL");
- // 0 1 2 3 4 5 6
- QueryResult result = CharacterDatabase.Query("SELECT guildid, gm.guid, rank, pnote, offnote, BankResetTimeMoney, BankRemMoney, "
- // 7 8 9 10 11 12
- "BankResetTimeTab0, BankRemSlotsTab0, BankResetTimeTab1, BankRemSlotsTab1, BankResetTimeTab2, BankRemSlotsTab2, "
- // 13 14 15 16 17 18
- "BankResetTimeTab3, BankRemSlotsTab3, BankResetTimeTab4, BankRemSlotsTab4, BankResetTimeTab5, BankRemSlotsTab5, "
- // 19 20 21 22 23 24
- "c.name, c.level, c.class, c.zone, c.account, c.logout_time "
- "FROM guild_member gm LEFT JOIN characters c ON c.guid = gm.guid ORDER BY guildid ASC");
+ // 0 1 2 3 4 5 6 7 8 9 10
+ QueryResult result = CharacterDatabase.Query("SELECT guildid, gm.guid, rank, pnote, offnote, w.tab0, w.tab1, w.tab2, w.tab3, w.tab4, w.tab5, "
+ // 11 12 13 14 15 16 17
+ "w.money, c.name, c.level, c.class, c.zone, c.account, c.logout_time "
+ "FROM guild_member gm "
+ "LEFT JOIN guild_member_withdraw w ON gm.guid = w.guid "
+ "LEFT JOIN characters c ON c.guid = gm.guid ORDER BY guildid ASC");
if (!result)
- {
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded 0 guild members. DB table `guild_member` is empty.");
- }
else
{
uint32 count = 0;
@@ -215,7 +211,7 @@ void GuildMgr::LoadGuilds()
// Delete orphaned guild bank right entries before loading the valid ones
CharacterDatabase.DirectExecute("DELETE gbr FROM guild_bank_right gbr LEFT JOIN guild g ON gbr.guildId = g.guildId WHERE g.guildId IS NULL");
- // 0 1 2 3 4
+ // 0 1 2 3 4
QueryResult result = CharacterDatabase.Query("SELECT guildid, TabId, rid, gbright, SlotPerDay FROM guild_bank_right ORDER BY guildid ASC, TabId ASC");
if (!result)
@@ -382,20 +378,31 @@ void GuildMgr::LoadGuilds()
sLog->outInfo(LOG_FILTER_GUILD, "Validating data of loaded guilds...");
{
uint32 oldMSTime = getMSTime();
+ std::set<Guild*> rm; // temporary storage to avoid modifying GuildStore with RemoveGuild() while iterating
for (GuildContainer::iterator itr = GuildStore.begin(); itr != GuildStore.end(); ++itr)
{
Guild* guild = itr->second;
- if (guild)
- {
- if (!guild->Validate())
- {
- RemoveGuild(guild->GetId());
- delete guild;
- }
- }
+ if (guild && !guild->Validate())
+ rm.insert(guild);
+ }
+
+ for (std::set<Guild*>::iterator itr = rm.begin(); itr != rm.end(); ++itr)
+ {
+ Guild* guild = *itr;
+ RemoveGuild(guild->GetId());
+ delete guild;
}
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Validated data of loaded guilds in %u ms", GetMSTimeDiffToNow(oldMSTime));
}
}
+
+void GuildMgr::ResetTimes()
+{
+ for (GuildContainer::const_iterator itr = GuildStore.begin(); itr != GuildStore.end(); ++itr)
+ if (Guild* guild = itr->second)
+ guild->ResetTimes();
+
+ CharacterDatabase.DirectExecute("TRUNCATE guild_member_withdraw");
+} \ No newline at end of file
diff --git a/src/server/game/Guilds/GuildMgr.h b/src/server/game/Guilds/GuildMgr.h
index 1f2413581d8..f5fa4680039 100644
--- a/src/server/game/Guilds/GuildMgr.h
+++ b/src/server/game/Guilds/GuildMgr.h
@@ -23,13 +23,12 @@
class GuildMgr
{
friend class ACE_Singleton<GuildMgr, ACE_Null_Mutex>;
+
private:
GuildMgr();
~GuildMgr();
public:
- typedef UNORDERED_MAP<uint32, Guild*> GuildContainer;
-
Guild* GetGuildByLeader(uint64 guid) const;
Guild* GetGuildById(uint32 guildId) const;
Guild* GetGuildByName(std::string const& guildName) const;
@@ -42,7 +41,9 @@ public:
uint32 GenerateGuildId();
void SetNextGuildId(uint32 Id) { NextGuildId = Id; }
+ void ResetTimes();
protected:
+ typedef UNORDERED_MAP<uint32, Guild*> GuildContainer;
uint32 NextGuildId;
GuildContainer GuildStore;
};
diff --git a/src/server/game/Handlers/ArenaTeamHandler.cpp b/src/server/game/Handlers/ArenaTeamHandler.cpp
index e62a1f0df07..d3738883d6d 100755
--- a/src/server/game/Handlers/ArenaTeamHandler.cpp
+++ b/src/server/game/Handlers/ArenaTeamHandler.cpp
@@ -152,7 +152,7 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recvData)
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_ARENA_TEAM_INVITE");
}
-void WorldSession::HandleArenaTeamAcceptOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleArenaTeamAcceptOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_ARENA_TEAM_ACCEPT"); // empty opcode
@@ -185,7 +185,7 @@ void WorldSession::HandleArenaTeamAcceptOpcode(WorldPacket & /*recv_data*/)
arenaTeam->BroadcastEvent(ERR_ARENA_TEAM_JOIN_SS, _player->GetGUID(), 2, _player->GetName(), arenaTeam->GetName(), "");
}
-void WorldSession::HandleArenaTeamDeclineOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleArenaTeamDeclineOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_ARENA_TEAM_DECLINE"); // empty opcode
diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp
index aaf0ba3cdf0..3c3a6978384 100755
--- a/src/server/game/Handlers/AuctionHouseHandler.cpp
+++ b/src/server/game/Handlers/AuctionHouseHandler.cpp
@@ -33,10 +33,10 @@
//post-incrementation is always slower than pre-incrementation !
//void called when player click on auctioneer npc
-void WorldSession::HandleAuctionHelloOpcode(WorldPacket & recv_data)
+void WorldSession::HandleAuctionHelloOpcode(WorldPacket & recvData)
{
uint64 guid; //NPC guid
- recv_data >> guid;
+ recvData >> guid;
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_AUCTIONEER);
if (!unit)
@@ -113,12 +113,12 @@ void WorldSession::SendAuctionOwnerNotification(AuctionEntry* auction)
}
//this void creates new auction and adds auction to some auctionhouse
-void WorldSession::HandleAuctionSellItem(WorldPacket & recv_data)
+void WorldSession::HandleAuctionSellItem(WorldPacket & recvData)
{
uint64 auctioneer;
uint32 itemsCount, etime, bid, buyout;
- recv_data >> auctioneer;
- recv_data >> itemsCount;
+ recvData >> auctioneer;
+ recvData >> itemsCount;
uint64 itemGUIDs[MAX_AUCTION_ITEMS]; // 160 slot = 4x 36 slot bag + backpack 16 slot
uint32 count[MAX_AUCTION_ITEMS];
@@ -131,16 +131,16 @@ void WorldSession::HandleAuctionSellItem(WorldPacket & recv_data)
for (uint32 i = 0; i < itemsCount; ++i)
{
- recv_data >> itemGUIDs[i];
- recv_data >> count[i];
+ recvData >> itemGUIDs[i];
+ recvData >> count[i];
if (!itemGUIDs[i] || !count[i] || count[i] > 1000 )
return;
}
- recv_data >> bid;
- recv_data >> buyout;
- recv_data >> etime;
+ recvData >> bid;
+ recvData >> buyout;
+ recvData >> etime;
if (!bid || !etime)
return;
@@ -354,15 +354,15 @@ void WorldSession::HandleAuctionSellItem(WorldPacket & recv_data)
}
//this function is called when client bids or buys out auction
-void WorldSession::HandleAuctionPlaceBid(WorldPacket & recv_data)
+void WorldSession::HandleAuctionPlaceBid(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_AUCTION_PLACE_BID");
uint64 auctioneer;
uint32 auctionId;
uint32 price;
- recv_data >> auctioneer;
- recv_data >> auctionId >> price;
+ recvData >> auctioneer;
+ recvData >> auctionId >> price;
if (!auctionId || !price)
return; //check for cheaters
@@ -481,14 +481,14 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket & recv_data)
}
//this void is called when auction_owner cancels his auction
-void WorldSession::HandleAuctionRemoveItem(WorldPacket & recv_data)
+void WorldSession::HandleAuctionRemoveItem(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_AUCTION_REMOVE_ITEM");
uint64 auctioneer;
uint32 auctionId;
- recv_data >> auctioneer;
- recv_data >> auctionId;
+ recvData >> auctioneer;
+ recvData >> auctionId;
//sLog->outDebug("Cancel AUCTION AuctionID: %u", auctionId);
Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(auctioneer, UNIT_NPC_FLAG_AUCTIONEER);
@@ -558,7 +558,7 @@ void WorldSession::HandleAuctionRemoveItem(WorldPacket & recv_data)
}
//called when player lists his bids
-void WorldSession::HandleAuctionListBidderItems(WorldPacket & recv_data)
+void WorldSession::HandleAuctionListBidderItems(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_AUCTION_LIST_BIDDER_ITEMS");
@@ -566,12 +566,12 @@ void WorldSession::HandleAuctionListBidderItems(WorldPacket & recv_data)
uint32 listfrom; //page of auctions
uint32 outbiddedCount; //count of outbidded auctions
- recv_data >> guid;
- recv_data >> listfrom; // not used in fact (this list not have page control in client)
- recv_data >> outbiddedCount;
- if (recv_data.size() != (16 + outbiddedCount * 4))
+ recvData >> guid;
+ recvData >> listfrom; // not used in fact (this list not have page control in client)
+ recvData >> outbiddedCount;
+ if (recvData.size() != (16 + outbiddedCount * 4))
{
- sLog->outError(LOG_FILTER_NETWORKIO, "Client sent bad opcode!!! with count: %u and size : %lu (must be: %u)", outbiddedCount, (unsigned long)recv_data.size(), (16 + outbiddedCount * 4));
+ sLog->outError(LOG_FILTER_NETWORKIO, "Client sent bad opcode!!! with count: %u and size : %lu (must be: %u)", outbiddedCount, (unsigned long)recvData.size(), (16 + outbiddedCount * 4));
outbiddedCount = 0;
}
@@ -579,7 +579,7 @@ void WorldSession::HandleAuctionListBidderItems(WorldPacket & recv_data)
if (!creature)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: HandleAuctionListBidderItems - Unit (GUID: %u) not found or you can't interact with him.", uint32(GUID_LOPART(guid)));
- recv_data.rfinish();
+ recvData.rfinish();
return;
}
@@ -598,7 +598,7 @@ void WorldSession::HandleAuctionListBidderItems(WorldPacket & recv_data)
{
--outbiddedCount;
uint32 outbiddedAuctionId;
- recv_data >> outbiddedAuctionId;
+ recvData >> outbiddedAuctionId;
AuctionEntry* auction = auctionHouse->GetAuction(outbiddedAuctionId);
if (auction && auction->BuildAuctionInfo(data))
{
@@ -615,15 +615,15 @@ void WorldSession::HandleAuctionListBidderItems(WorldPacket & recv_data)
}
//this void sends player info about his auctions
-void WorldSession::HandleAuctionListOwnerItems(WorldPacket & recv_data)
+void WorldSession::HandleAuctionListOwnerItems(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_AUCTION_LIST_OWNER_ITEMS");
uint32 listfrom;
uint64 guid;
- recv_data >> guid;
- recv_data >> listfrom; // not used in fact (this list not have page control in client)
+ recvData >> guid;
+ recvData >> listfrom; // not used in fact (this list not have page control in client)
Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_AUCTIONEER);
if (!creature)
@@ -652,7 +652,7 @@ void WorldSession::HandleAuctionListOwnerItems(WorldPacket & recv_data)
}
//this void is called when player clicks on search button
-void WorldSession::HandleAuctionListItems(WorldPacket & recv_data)
+void WorldSession::HandleAuctionListItems(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_AUCTION_LIST_ITEMS");
@@ -661,23 +661,23 @@ void WorldSession::HandleAuctionListItems(WorldPacket & recv_data)
uint32 listfrom, auctionSlotID, auctionMainCategory, auctionSubCategory, quality;
uint64 guid;
- recv_data >> guid;
- recv_data >> listfrom; // start, used for page control listing by 50 elements
- recv_data >> searchedname;
+ recvData >> guid;
+ recvData >> listfrom; // start, used for page control listing by 50 elements
+ recvData >> searchedname;
- recv_data >> levelmin >> levelmax;
- recv_data >> auctionSlotID >> auctionMainCategory >> auctionSubCategory;
- recv_data >> quality >> usable;
+ recvData >> levelmin >> levelmax;
+ recvData >> auctionSlotID >> auctionMainCategory >> auctionSubCategory;
+ recvData >> quality >> usable;
- recv_data.read_skip<uint8>(); // unk
+ recvData.read_skip<uint8>(); // unk
// this block looks like it uses some lame byte packing or similar...
uint8 unkCnt;
- recv_data >> unkCnt;
+ recvData >> unkCnt;
for (uint8 i = 0; i < unkCnt; i++)
{
- recv_data.read_skip<uint8>();
- recv_data.read_skip<uint8>();
+ recvData.read_skip<uint8>();
+ recvData.read_skip<uint8>();
}
Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_AUCTIONEER);
@@ -719,11 +719,11 @@ void WorldSession::HandleAuctionListItems(WorldPacket & recv_data)
SendPacket(&data);
}
-void WorldSession::HandleAuctionListPendingSales(WorldPacket & recv_data)
+void WorldSession::HandleAuctionListPendingSales(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_AUCTION_LIST_PENDING_SALES");
- recv_data.read_skip<uint64>();
+ recvData.read_skip<uint64>();
uint32 count = 0;
diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp
index a1adef57ed5..3a359704916 100755
--- a/src/server/game/Handlers/BattleGroundHandler.cpp
+++ b/src/server/game/Handlers/BattleGroundHandler.cpp
@@ -35,10 +35,10 @@
#include "DisableMgr.h"
#include "Group.h"
-void WorldSession::HandleBattlemasterHelloOpcode(WorldPacket & recv_data)
+void WorldSession::HandleBattlemasterHelloOpcode(WorldPacket & recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_BATTLEMASTER_HELLO Message from (GUID: %u TypeId:%u)", GUID_LOPART(guid), GuidHigh2TypeId(GUID_HIPART(guid)));
Creature* unit = GetPlayer()->GetMap()->GetCreature(guid);
@@ -70,7 +70,7 @@ void WorldSession::SendBattleGroundList(uint64 guid, BattlegroundTypeId bgTypeId
SendPacket(&data);
}
-void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket & recv_data)
+void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket & recvData)
{
uint64 guid;
uint32 bgTypeId_;
@@ -79,10 +79,10 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket & recv_data)
bool isPremade = false;
Group* grp = NULL;
- recv_data >> guid; // battlemaster guid
- recv_data >> bgTypeId_; // battleground type id (DBC id)
- recv_data >> instanceId; // instance id, 0 if First Available selected
- recv_data >> joinAsGroup; // join as group
+ recvData >> guid; // battlemaster guid
+ recvData >> bgTypeId_; // battleground type id (DBC id)
+ recvData >> instanceId; // instance id, 0 if First Available selected
+ recvData >> joinAsGroup; // join as group
if (!sBattlemasterListStore.LookupEntry(bgTypeId_))
{
@@ -245,7 +245,7 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket & recv_data)
sBattlegroundMgr->ScheduleQueueUpdate(0, 0, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId());
}
-void WorldSession::HandleBattlegroundPlayerPositionsOpcode(WorldPacket& /*recv_data*/)
+void WorldSession::HandleBattlegroundPlayerPositionsOpcode(WorldPacket& /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd MSG_BATTLEGROUND_PLAYER_POSITIONS Message");
@@ -296,7 +296,7 @@ void WorldSession::HandleBattlegroundPlayerPositionsOpcode(WorldPacket& /*recv_d
SendPacket(&data);
}
-void WorldSession::HandlePVPLogDataOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandlePVPLogDataOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd MSG_PVP_LOG_DATA Message");
@@ -315,18 +315,18 @@ void WorldSession::HandlePVPLogDataOpcode(WorldPacket & /*recv_data*/)
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent MSG_PVP_LOG_DATA Message");
}
-void WorldSession::HandleBattlefieldListOpcode(WorldPacket &recv_data)
+void WorldSession::HandleBattlefieldListOpcode(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_BATTLEFIELD_LIST Message");
uint32 bgTypeId;
- recv_data >> bgTypeId; // id from DBC
+ recvData >> bgTypeId; // id from DBC
uint8 fromWhere;
- recv_data >> fromWhere; // 0 - battlemaster (lua: ShowBattlefieldList), 1 - UI (lua: RequestBattlegroundInstanceInfo)
+ recvData >> fromWhere; // 0 - battlemaster (lua: ShowBattlefieldList), 1 - UI (lua: RequestBattlegroundInstanceInfo)
uint8 canGainXP;
- recv_data >> canGainXP; // players with locked xp have their own bg queue on retail
+ recvData >> canGainXP; // players with locked xp have their own bg queue on retail
BattlemasterListEntry const* bl = sBattlemasterListStore.LookupEntry(bgTypeId);
if (!bl)
@@ -340,7 +340,7 @@ void WorldSession::HandleBattlefieldListOpcode(WorldPacket &recv_data)
SendPacket(&data);
}
-void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recv_data)
+void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_BATTLEFIELD_PORT Message");
@@ -350,7 +350,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recv_data)
uint16 unk; // 0x1F90 constant?
uint8 action; // enter battle 0x1, leave queue 0x0
- recv_data >> type >> unk2 >> bgTypeId_ >> unk >> action;
+ recvData >> type >> unk2 >> bgTypeId_ >> unk >> action;
if (!sBattlemasterListStore.LookupEntry(bgTypeId_))
{
@@ -492,14 +492,14 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recv_data)
}
}
-void WorldSession::HandleLeaveBattlefieldOpcode(WorldPacket& recv_data)
+void WorldSession::HandleLeaveBattlefieldOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_LEAVE_BATTLEFIELD Message");
- recv_data.read_skip<uint8>(); // unk1
- recv_data.read_skip<uint8>(); // unk2
- recv_data.read_skip<uint32>(); // BattlegroundTypeId
- recv_data.read_skip<uint16>(); // unk3
+ recvData.read_skip<uint8>(); // unk1
+ recvData.read_skip<uint8>(); // unk2
+ recvData.read_skip<uint32>(); // BattlegroundTypeId
+ recvData.read_skip<uint16>(); // unk3
// not allow leave battleground in combat
if (_player->isInCombat())
@@ -510,7 +510,7 @@ void WorldSession::HandleLeaveBattlefieldOpcode(WorldPacket& recv_data)
_player->LeaveBattleground();
}
-void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/)
{
// empty opcode
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Battleground status");
@@ -574,7 +574,7 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recv_data*/)
}
}
-void WorldSession::HandleBattlemasterJoinArena(WorldPacket & recv_data)
+void WorldSession::HandleBattlemasterJoinArena(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_BATTLEMASTER_JOIN_ARENA");
@@ -584,7 +584,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket & recv_data)
uint8 isRated; // isRated
Group* grp = NULL;
- recv_data >> guid >> arenaslot >> asGroup >> isRated;
+ recvData >> guid >> arenaslot >> asGroup >> isRated;
// ignore if we already in BG or BG queue
if (_player->InBattleground())
@@ -742,10 +742,10 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket & recv_data)
sBattlegroundMgr->ScheduleQueueUpdate(matchmakerRating, arenatype, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId());
}
-void WorldSession::HandleReportPvPAFK(WorldPacket & recv_data)
+void WorldSession::HandleReportPvPAFK(WorldPacket & recvData)
{
uint64 playerGuid;
- recv_data >> playerGuid;
+ recvData >> playerGuid;
Player* reportedPlayer = ObjectAccessor::FindPlayer(playerGuid);
if (!reportedPlayer)
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index dc930b8a381..258878b1f87 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -230,7 +230,7 @@ void WorldSession::HandleCharEnum(PreparedQueryResult result)
SendPacket(&data);
}
-void WorldSession::HandleCharEnumOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleCharEnumOpcode(WorldPacket & /*recvData*/)
{
// remove expired bans
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_EXPIRED_BANS);
@@ -249,20 +249,20 @@ void WorldSession::HandleCharEnumOpcode(WorldPacket & /*recv_data*/)
_charEnumCallback = CharacterDatabase.AsyncQuery(stmt);
}
-void WorldSession::HandleCharCreateOpcode(WorldPacket & recv_data)
+void WorldSession::HandleCharCreateOpcode(WorldPacket & recvData)
{
std::string name;
uint8 race_, class_;
- recv_data >> name;
+ recvData >> name;
- recv_data >> race_;
- recv_data >> class_;
+ recvData >> race_;
+ recvData >> class_;
// extract other data required for player creating
uint8 gender, skin, face, hairStyle, hairColor, facialHair, outfitId;
- recv_data >> gender >> skin >> face;
- recv_data >> hairStyle >> hairColor >> facialHair >> outfitId;
+ recvData >> gender >> skin >> face;
+ recvData >> hairStyle >> hairColor >> facialHair >> outfitId;
WorldPacket data(SMSG_CHAR_CREATE, 1); // returned with diff.values in all cases
@@ -387,7 +387,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket & recv_data)
}
delete _charCreateCallback.GetParam(); // Delete existing if any, to make the callback chain reset to stage 0
- _charCreateCallback.SetParam(new CharacterCreateInfo(name, race_, class_, gender, skin, face, hairStyle, hairColor, facialHair, outfitId, recv_data));
+ _charCreateCallback.SetParam(new CharacterCreateInfo(name, race_, class_, gender, skin, face, hairStyle, hairColor, facialHair, outfitId, recvData));
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHECK_NAME);
stmt->setString(0, name);
_charCreateCallback.SetFutureResult(CharacterDatabase.AsyncQuery(stmt));
@@ -670,10 +670,10 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte
}
}
-void WorldSession::HandleCharDeleteOpcode(WorldPacket & recv_data)
+void WorldSession::HandleCharDeleteOpcode(WorldPacket & recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
// can't delete loaded character
if (ObjectAccessor::FindPlayer(guid))
@@ -733,7 +733,7 @@ void WorldSession::HandleCharDeleteOpcode(WorldPacket & recv_data)
SendPacket(&data);
}
-void WorldSession::HandlePlayerLoginOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePlayerLoginOpcode(WorldPacket & recvData)
{
if (PlayerLoading() || GetPlayer() != NULL)
{
@@ -746,7 +746,7 @@ void WorldSession::HandlePlayerLoginOpcode(WorldPacket & recv_data)
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd Player Logon Message");
- recv_data >> playerGuid;
+ recvData >> playerGuid;
if (!CharCanLogin(GUID_LOPART(playerGuid)))
{
@@ -893,17 +893,6 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
}
}
- if (Group* group = pCurrChar->GetGroup())
- {
- if (group->isLFGGroup())
- {
- LfgDungeonSet Dungeons;
- Dungeons.insert(sLFGMgr->GetDungeon(group->GetGUID()));
- sLFGMgr->SetSelectedDungeons(pCurrChar->GetGUID(), Dungeons);
- sLFGMgr->SetState(pCurrChar->GetGUID(), sLFGMgr->GetState(group->GetGUID()));
- }
- }
-
if (!pCurrChar->GetMap()->AddPlayerToMap(pCurrChar) || !pCurrChar->CheckInstanceLoginValid())
{
AreaTrigger const* at = sObjectMgr->GetGoBackTrigger(pCurrChar->GetMapId());
@@ -1013,30 +1002,30 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
delete holder;
}
-void WorldSession::HandleSetFactionAtWar(WorldPacket & recv_data)
+void WorldSession::HandleSetFactionAtWar(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_SET_FACTION_ATWAR");
uint32 repListID;
uint8 flag;
- recv_data >> repListID;
- recv_data >> flag;
+ recvData >> repListID;
+ recvData >> flag;
GetPlayer()->GetReputationMgr().SetAtWar(repListID, flag);
}
//I think this function is never used :/ I dunno, but i guess this opcode not exists
-void WorldSession::HandleSetFactionCheat(WorldPacket & /*recv_data*/)
+void WorldSession::HandleSetFactionCheat(WorldPacket & /*recvData*/)
{
sLog->outError(LOG_FILTER_NETWORKIO, "WORLD SESSION: HandleSetFactionCheat, not expected call, please report.");
GetPlayer()->GetReputationMgr().SendStates();
}
-void WorldSession::HandleTutorialFlag(WorldPacket & recv_data)
+void WorldSession::HandleTutorialFlag(WorldPacket & recvData)
{
uint32 data;
- recv_data >> data;
+ recvData >> data;
uint8 index = uint8(data / 32);
if (index >= MAX_ACCOUNT_TUTORIAL_VALUES)
@@ -1049,57 +1038,57 @@ void WorldSession::HandleTutorialFlag(WorldPacket & recv_data)
SetTutorialInt(index, flag);
}
-void WorldSession::HandleTutorialClear(WorldPacket & /*recv_data*/)
+void WorldSession::HandleTutorialClear(WorldPacket & /*recvData*/)
{
for (uint8 i = 0; i < MAX_ACCOUNT_TUTORIAL_VALUES; ++i)
SetTutorialInt(i, 0xFFFFFFFF);
}
-void WorldSession::HandleTutorialReset(WorldPacket & /*recv_data*/)
+void WorldSession::HandleTutorialReset(WorldPacket & /*recvData*/)
{
for (uint8 i = 0; i < MAX_ACCOUNT_TUTORIAL_VALUES; ++i)
SetTutorialInt(i, 0x00000000);
}
-void WorldSession::HandleSetWatchedFactionOpcode(WorldPacket & recv_data)
+void WorldSession::HandleSetWatchedFactionOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_SET_WATCHED_FACTION");
uint32 fact;
- recv_data >> fact;
+ recvData >> fact;
GetPlayer()->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, fact);
}
-void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket & recv_data)
+void WorldSession::HandleSetFactionInactiveOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_SET_FACTION_INACTIVE");
uint32 replistid;
uint8 inactive;
- recv_data >> replistid >> inactive;
+ recvData >> replistid >> inactive;
_player->GetReputationMgr().SetInactive(replistid, inactive);
}
-void WorldSession::HandleShowingHelmOpcode(WorldPacket& recv_data)
+void WorldSession::HandleShowingHelmOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_SHOWING_HELM for %s", _player->GetName().c_str());
- recv_data.read_skip<uint8>(); // unknown, bool?
+ recvData.read_skip<uint8>(); // unknown, bool?
_player->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM);
}
-void WorldSession::HandleShowingCloakOpcode(WorldPacket& recv_data)
+void WorldSession::HandleShowingCloakOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_SHOWING_CLOAK for %s", _player->GetName().c_str());
- recv_data.read_skip<uint8>(); // unknown, bool?
+ recvData.read_skip<uint8>(); // unknown, bool?
_player->ToggleFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK);
}
-void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data)
+void WorldSession::HandleCharRenameOpcode(WorldPacket& recvData)
{
uint64 guid;
std::string newName;
- recv_data >> guid;
- recv_data >> newName;
+ recvData >> guid;
+ recvData >> newName;
// prevent character rename to invalid name
if (!normalizePlayerName(newName))
@@ -1189,11 +1178,11 @@ void WorldSession::HandleChangePlayerNameOpcodeCallBack(PreparedQueryResult resu
sWorld->UpdateCharacterNameData(guidLow, newName);
}
-void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
+void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
// not accept declined names for unsupported languages
std::string name;
@@ -1228,7 +1217,7 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
std::string name2;
DeclinedName declinedname;
- recv_data >> name2;
+ recvData >> name2;
if (name2 != name) // character have different name
{
@@ -1241,7 +1230,7 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
for (int i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
{
- recv_data >> declinedname.name[i];
+ recvData >> declinedname.name[i];
if (!normalizePlayerName(declinedname.name[i]))
{
WorldPacket data(SMSG_SET_PLAYER_DECLINED_NAMES_RESULT, 4+8);
@@ -1286,12 +1275,12 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
SendPacket(&data);
}
-void WorldSession::HandleAlterAppearance(WorldPacket & recv_data)
+void WorldSession::HandleAlterAppearance(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_ALTER_APPEARANCE");
uint32 Hair, Color, FacialHair, SkinColor;
- recv_data >> Hair >> Color >> FacialHair >> SkinColor;
+ recvData >> Hair >> Color >> FacialHair >> SkinColor;
BarberShopStyleEntry const* bs_hair = sBarberShopStyleStore.LookupEntry(Hair);
@@ -1358,10 +1347,10 @@ void WorldSession::HandleAlterAppearance(WorldPacket & recv_data)
_player->SetStandState(0); // stand up
}
-void WorldSession::HandleRemoveGlyph(WorldPacket & recv_data)
+void WorldSession::HandleRemoveGlyph(WorldPacket & recvData)
{
uint32 slot;
- recv_data >> slot;
+ recvData >> slot;
if (slot >= MAX_GLYPH_SLOT_INDEX)
{
@@ -1380,16 +1369,16 @@ void WorldSession::HandleRemoveGlyph(WorldPacket & recv_data)
}
}
-void WorldSession::HandleCharCustomize(WorldPacket& recv_data)
+void WorldSession::HandleCharCustomize(WorldPacket& recvData)
{
uint64 guid;
std::string newName;
- recv_data >> guid;
- recv_data >> newName;
+ recvData >> guid;
+ recvData >> newName;
uint8 gender, skin, face, hairStyle, hairColor, facialHair;
- recv_data >> gender >> skin >> hairColor >> hairStyle >> facialHair >> face;
+ recvData >> gender >> skin >> hairColor >> hairStyle >> facialHair >> face;
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_AT_LOGIN);
@@ -1496,23 +1485,23 @@ void WorldSession::HandleCharCustomize(WorldPacket& recv_data)
SendPacket(&data);
}
-void WorldSession::HandleEquipmentSetSave(WorldPacket &recv_data)
+void WorldSession::HandleEquipmentSetSave(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_EQUIPMENT_SET_SAVE");
uint64 setGuid;
- recv_data.readPackGUID(setGuid);
+ recvData.readPackGUID(setGuid);
uint32 index;
- recv_data >> index;
+ recvData >> index;
if (index >= MAX_EQUIPMENT_SET_INDEX) // client set slots amount
return;
std::string name;
- recv_data >> name;
+ recvData >> name;
std::string iconName;
- recv_data >> iconName;
+ recvData >> iconName;
EquipmentSet eqSet;
@@ -1524,7 +1513,7 @@ void WorldSession::HandleEquipmentSetSave(WorldPacket &recv_data)
for (uint32 i = 0; i < EQUIPMENT_SLOT_END; ++i)
{
uint64 itemGuid;
- recv_data.readPackGUID(itemGuid);
+ recvData.readPackGUID(itemGuid);
// equipment manager sends "1" (as raw GUID) for slots set to "ignore" (don't touch slot at equip set)
if (itemGuid == 1)
@@ -1548,17 +1537,17 @@ void WorldSession::HandleEquipmentSetSave(WorldPacket &recv_data)
_player->SetEquipmentSet(index, eqSet);
}
-void WorldSession::HandleEquipmentSetDelete(WorldPacket &recv_data)
+void WorldSession::HandleEquipmentSetDelete(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_EQUIPMENT_SET_DELETE");
uint64 setGuid;
- recv_data.readPackGUID(setGuid);
+ recvData.readPackGUID(setGuid);
_player->DeleteEquipmentSet(setGuid);
}
-void WorldSession::HandleEquipmentSetUse(WorldPacket &recv_data)
+void WorldSession::HandleEquipmentSetUse(WorldPacket &recvData)
{
if (_player->isInCombat())
return;
@@ -1568,10 +1557,10 @@ void WorldSession::HandleEquipmentSetUse(WorldPacket &recv_data)
for (uint32 i = 0; i < EQUIPMENT_SLOT_END; ++i)
{
uint64 itemGuid;
- recv_data.readPackGUID(itemGuid);
+ recvData.readPackGUID(itemGuid);
uint8 srcbag, srcslot;
- recv_data >> srcbag >> srcslot;
+ recvData >> srcbag >> srcslot;
sLog->outDebug(LOG_FILTER_PLAYER_ITEMS, "Item " UI64FMTD ": srcbag %u, srcslot %u", itemGuid, srcbag, srcslot);
@@ -1613,15 +1602,14 @@ void WorldSession::HandleEquipmentSetUse(WorldPacket &recv_data)
SendPacket(&data);
}
-void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recv_data)
+void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
{
- // TODO: Move queries to prepared statements
uint64 guid;
std::string newname;
uint8 gender, skin, face, hairStyle, hairColor, facialHair, race;
- recv_data >> guid;
- recv_data >> newname;
- recv_data >> gender >> skin >> hairColor >> hairStyle >> facialHair >> face >> race;
+ recvData >> guid;
+ recvData >> newname;
+ recvData >> gender >> skin >> hairColor >> hairStyle >> facialHair >> face >> race;
uint32 lowGuid = GUID_LOPART(guid);
@@ -1646,7 +1634,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recv_data)
Field* fields = result->Fetch();
uint32 at_loginFlags = fields[0].GetUInt16();
char const* knownTitlesStr = fields[1].GetCString();
- uint32 used_loginFlag = ((recv_data.GetOpcode() == CMSG_CHAR_RACE_CHANGE) ? AT_LOGIN_CHANGE_RACE : AT_LOGIN_CHANGE_FACTION);
+ uint32 used_loginFlag = ((recvData.GetOpcode() == CMSG_CHAR_RACE_CHANGE) ? AT_LOGIN_CHANGE_RACE : AT_LOGIN_CHANGE_FACTION);
if (!sObjectMgr->GetPlayerInfo(race, playerClass))
{
@@ -1732,384 +1720,387 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recv_data)
sWorld->UpdateCharacterNameData(GUID_LOPART(guid), newname, gender, race);
- TeamId team = TEAM_ALLIANCE;
-
- // Search each faction is targeted
- switch (race)
+ if (oldRace != race)
{
- case RACE_ORC:
- case RACE_TAUREN:
- case RACE_UNDEAD_PLAYER:
- case RACE_TROLL:
- case RACE_BLOODELF:
- team = TEAM_HORDE;
- break;
- default:
- break;
- }
-
- // Switch Languages
- // delete all languages first
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SKILL_LANGUAGES);
- stmt->setUInt32(0, lowGuid);
- trans->Append(stmt);
-
- // Now add them back
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE);
- stmt->setUInt32(0, lowGuid);
-
- // Faction specific languages
- if (team == TEAM_HORDE)
- stmt->setUInt16(1, 109);
- else
- stmt->setUInt16(1, 98);
-
- trans->Append(stmt);
-
- // Race specific languages
- if (race != RACE_ORC && race != RACE_HUMAN)
- {
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE);
- stmt->setUInt32(0, lowGuid);
+ TeamId team = TEAM_ALLIANCE;
+ // Search each faction is targeted
switch (race)
{
- case RACE_DWARF:
- stmt->setUInt16(1, 111);
- break;
- case RACE_DRAENEI:
- stmt->setUInt16(1, 759);
- break;
- case RACE_GNOME:
- stmt->setUInt16(1, 313);
- break;
- case RACE_NIGHTELF:
- stmt->setUInt16(1, 113);
- break;
- case RACE_UNDEAD_PLAYER:
- stmt->setUInt16(1, 673);
- break;
+ case RACE_ORC:
case RACE_TAUREN:
- stmt->setUInt16(1, 115);
- break;
+ case RACE_UNDEAD_PLAYER:
case RACE_TROLL:
- stmt->setUInt16(1, 315);
- break;
case RACE_BLOODELF:
- stmt->setUInt16(1, 137);
+ team = TEAM_HORDE;
+ break;
+ default:
break;
}
+ // Switch Languages
+ // delete all languages first
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SKILL_LANGUAGES);
+ stmt->setUInt32(0, lowGuid);
trans->Append(stmt);
- }
- if (recv_data.GetOpcode() == CMSG_CHAR_FACTION_CHANGE)
- {
- // Delete all Flypaths
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXI_PATH);
+ // Now add them back
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE);
stmt->setUInt32(0, lowGuid);
+
+ // Faction specific languages
+ if (team == TEAM_HORDE)
+ stmt->setUInt16(1, 109);
+ else
+ stmt->setUInt16(1, 98);
+
trans->Append(stmt);
- if (level > 7)
+ // Race specific languages
+ if (race != RACE_ORC && race != RACE_HUMAN)
{
- // Update Taxi path
- // this doesn't seem to be 100% blizzlike... but it can't really be helped.
- std::ostringstream taximaskstream;
- uint32 numFullTaximasks = level / 7;
- if (numFullTaximasks > 11)
- numFullTaximasks = 11;
- if (team == TEAM_ALLIANCE)
- {
- if (playerClass != CLASS_DEATH_KNIGHT)
- {
- for (uint8 i = 0; i < numFullTaximasks; ++i)
- taximaskstream << uint32(sAllianceTaxiNodesMask[i]) << ' ';
- }
- else
- {
- for (uint8 i = 0; i < numFullTaximasks; ++i)
- taximaskstream << uint32(sAllianceTaxiNodesMask[i] | sDeathKnightTaxiNodesMask[i]) << ' ';
- }
- }
- else
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE);
+ stmt->setUInt32(0, lowGuid);
+
+ switch (race)
{
- if (playerClass != CLASS_DEATH_KNIGHT)
- {
- for (uint8 i = 0; i < numFullTaximasks; ++i)
- taximaskstream << uint32(sHordeTaxiNodesMask[i]) << ' ';
- }
- else
- {
- for (uint8 i = 0; i < numFullTaximasks; ++i)
- taximaskstream << uint32(sHordeTaxiNodesMask[i] | sDeathKnightTaxiNodesMask[i]) << ' ';
- }
+ case RACE_DWARF:
+ stmt->setUInt16(1, 111);
+ break;
+ case RACE_DRAENEI:
+ stmt->setUInt16(1, 759);
+ break;
+ case RACE_GNOME:
+ stmt->setUInt16(1, 313);
+ break;
+ case RACE_NIGHTELF:
+ stmt->setUInt16(1, 113);
+ break;
+ case RACE_UNDEAD_PLAYER:
+ stmt->setUInt16(1, 673);
+ break;
+ case RACE_TAUREN:
+ stmt->setUInt16(1, 115);
+ break;
+ case RACE_TROLL:
+ stmt->setUInt16(1, 315);
+ break;
+ case RACE_BLOODELF:
+ stmt->setUInt16(1, 137);
+ break;
}
- uint32 numEmptyTaximasks = 11 - numFullTaximasks;
- for (uint8 i = 0; i < numEmptyTaximasks; ++i)
- taximaskstream << "0 ";
- taximaskstream << '0';
- std::string taximask = taximaskstream.str();
-
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXIMASK);
- stmt->setString(0, taximask);
- stmt->setUInt32(1, lowGuid);
trans->Append(stmt);
}
- // Delete all current quests
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS);
- stmt->setUInt32(0, GUID_LOPART(guid));
- trans->Append(stmt);
-
- // Delete record of the faction old completed quests
+ if (recvData.GetOpcode() == CMSG_CHAR_FACTION_CHANGE)
{
- std::ostringstream quests;
- ObjectMgr::QuestMap const& qTemplates = sObjectMgr->GetQuestTemplates();
- for (ObjectMgr::QuestMap::const_iterator iter = qTemplates.begin(); iter != qTemplates.end(); ++iter)
+ // Delete all Flypaths
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXI_PATH);
+ stmt->setUInt32(0, lowGuid);
+ trans->Append(stmt);
+
+ if (level > 7)
{
- Quest *qinfo = iter->second;
- uint32 requiredRaces = qinfo->GetRequiredRaces();
+ // Update Taxi path
+ // this doesn't seem to be 100% blizzlike... but it can't really be helped.
+ std::ostringstream taximaskstream;
+ uint32 numFullTaximasks = level / 7;
+ if (numFullTaximasks > 11)
+ numFullTaximasks = 11;
if (team == TEAM_ALLIANCE)
{
- if (requiredRaces & RACEMASK_ALLIANCE)
+ if (playerClass != CLASS_DEATH_KNIGHT)
+ {
+ for (uint8 i = 0; i < numFullTaximasks; ++i)
+ taximaskstream << uint32(sAllianceTaxiNodesMask[i]) << ' ';
+ }
+ else
{
- quests << uint32(qinfo->GetQuestId());
- quests << ',';
+ for (uint8 i = 0; i < numFullTaximasks; ++i)
+ taximaskstream << uint32(sAllianceTaxiNodesMask[i] | sDeathKnightTaxiNodesMask[i]) << ' ';
}
}
- else // if (team == TEAM_HORDE)
+ else
{
- if (requiredRaces & RACEMASK_HORDE)
+ if (playerClass != CLASS_DEATH_KNIGHT)
{
- quests << uint32(qinfo->GetQuestId());
- quests << ',';
+ for (uint8 i = 0; i < numFullTaximasks; ++i)
+ taximaskstream << uint32(sHordeTaxiNodesMask[i]) << ' ';
+ }
+ else
+ {
+ for (uint8 i = 0; i < numFullTaximasks; ++i)
+ taximaskstream << uint32(sHordeTaxiNodesMask[i] | sDeathKnightTaxiNodesMask[i]) << ' ';
}
}
- }
- std::string questsStr = quests.str();
- questsStr = questsStr.substr(0, questsStr.length() - 1);
+ uint32 numEmptyTaximasks = 11 - numFullTaximasks;
+ for (uint8 i = 0; i < numEmptyTaximasks; ++i)
+ taximaskstream << "0 ";
+ taximaskstream << '0';
+ std::string taximask = taximaskstream.str();
- if (!questsStr.empty())
- trans->PAppend("DELETE FROM `character_queststatus_rewarded` WHERE guid='%u' AND quest IN (%s)", lowGuid, questsStr.c_str());
- }
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXIMASK);
+ stmt->setString(0, taximask);
+ stmt->setUInt32(1, lowGuid);
+ trans->Append(stmt);
+ }
- if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD))
- {
- // Reset guild
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER);
+ // Delete all current quests
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS);
+ stmt->setUInt32(0, GUID_LOPART(guid));
+ trans->Append(stmt);
- stmt->setUInt32(0, lowGuid);
+ // Delete record of the faction old completed quests
+ {
+ std::ostringstream quests;
+ ObjectMgr::QuestMap const& qTemplates = sObjectMgr->GetQuestTemplates();
+ for (ObjectMgr::QuestMap::const_iterator iter = qTemplates.begin(); iter != qTemplates.end(); ++iter)
+ {
+ Quest *qinfo = iter->second;
+ uint32 requiredRaces = qinfo->GetRequiredRaces();
+ if (team == TEAM_ALLIANCE)
+ {
+ if (requiredRaces & RACEMASK_ALLIANCE)
+ {
+ quests << uint32(qinfo->GetQuestId());
+ quests << ',';
+ }
+ }
+ else // if (team == TEAM_HORDE)
+ {
+ if (requiredRaces & RACEMASK_HORDE)
+ {
+ quests << uint32(qinfo->GetQuestId());
+ quests << ',';
+ }
+ }
+ }
- PreparedQueryResult result = CharacterDatabase.Query(stmt);
- if (result)
- if (Guild* guild = sGuildMgr->GetGuildById((result->Fetch()[0]).GetUInt32()))
- guild->DeleteMember(MAKE_NEW_GUID(lowGuid, 0, HIGHGUID_PLAYER));
- }
+ std::string questsStr = quests.str();
+ questsStr = questsStr.substr(0, questsStr.length() - 1);
- if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND))
- {
- // Delete Friend List
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_GUID);
- stmt->setUInt32(0, lowGuid);
- trans->Append(stmt);
+ if (!questsStr.empty())
+ trans->PAppend("DELETE FROM `character_queststatus_rewarded` WHERE guid='%u' AND quest IN (%s)", lowGuid, questsStr.c_str());
+ }
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_FRIEND);
- stmt->setUInt32(0, lowGuid);
- trans->Append(stmt);
+ if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD))
+ {
+ // Reset guild
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER);
- }
+ stmt->setUInt32(0, lowGuid);
- // Leave Arena Teams
- Player::LeaveAllArenaTeams(guid);
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
+ if (result)
+ if (Guild* guild = sGuildMgr->GetGuildById((result->Fetch()[0]).GetUInt32()))
+ guild->DeleteMember(MAKE_NEW_GUID(lowGuid, 0, HIGHGUID_PLAYER));
+ }
- // Reset homebind and position
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_HOMEBIND);
- stmt->setUInt32(0, lowGuid);
- trans->Append(stmt);
+ if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_ADD_FRIEND))
+ {
+ // Delete Friend List
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_GUID);
+ stmt->setUInt32(0, lowGuid);
+ trans->Append(stmt);
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PLAYER_HOMEBIND);
- stmt->setUInt32(0, lowGuid);
- if (team == TEAM_ALLIANCE)
- {
- stmt->setUInt16(1, 0);
- stmt->setUInt16(2, 1519);
- stmt->setFloat (3, -8867.68f);
- stmt->setFloat (4, 673.373f);
- stmt->setFloat (5, 97.9034f);
- Player::SavePositionInDB(0, -8867.68f, 673.373f, 97.9034f, 0.0f, 1519, lowGuid);
- }
- else
- {
- stmt->setUInt16(1, 1);
- stmt->setUInt16(2, 1637);
- stmt->setFloat (3, 1633.33f);
- stmt->setFloat (4, -4439.11f);
- stmt->setFloat (5, 15.7588f);
- Player::SavePositionInDB(1, 1633.33f, -4439.11f, 15.7588f, 0.0f, 1637, lowGuid);
- }
- trans->Append(stmt);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_FRIEND);
+ stmt->setUInt32(0, lowGuid);
+ trans->Append(stmt);
- // Achievement conversion
- for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Achievements.begin(); it != sObjectMgr->FactionChange_Achievements.end(); ++it)
- {
- uint32 achiev_alliance = it->first;
- uint32 achiev_horde = it->second;
+ }
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_BY_ACHIEVEMENT);
- stmt->setUInt16(0, uint16(team == TEAM_ALLIANCE ? achiev_alliance : achiev_horde));
- stmt->setUInt32(1, lowGuid);
- trans->Append(stmt);
+ // Leave Arena Teams
+ Player::LeaveAllArenaTeams(guid);
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_ACHIEVEMENT);
- stmt->setUInt16(0, uint16(team == TEAM_ALLIANCE ? achiev_alliance : achiev_horde));
- stmt->setUInt16(1, uint16(team == TEAM_ALLIANCE ? achiev_horde : achiev_alliance));
- stmt->setUInt32(2, lowGuid);
+ // Reset homebind and position
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_HOMEBIND);
+ stmt->setUInt32(0, lowGuid);
trans->Append(stmt);
- }
- // Item conversion
- for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Items.begin(); it != sObjectMgr->FactionChange_Items.end(); ++it)
- {
- uint32 item_alliance = it->first;
- uint32 item_horde = it->second;
-
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_INVENTORY_FACTION_CHANGE);
- stmt->setUInt32(0, (team == TEAM_ALLIANCE ? item_alliance : item_horde));
- stmt->setUInt32(1, (team == TEAM_ALLIANCE ? item_horde : item_alliance));
- stmt->setUInt32(2, guid);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PLAYER_HOMEBIND);
+ stmt->setUInt32(0, lowGuid);
+ if (team == TEAM_ALLIANCE)
+ {
+ stmt->setUInt16(1, 0);
+ stmt->setUInt16(2, 1519);
+ stmt->setFloat (3, -8867.68f);
+ stmt->setFloat (4, 673.373f);
+ stmt->setFloat (5, 97.9034f);
+ Player::SavePositionInDB(0, -8867.68f, 673.373f, 97.9034f, 0.0f, 1519, lowGuid);
+ }
+ else
+ {
+ stmt->setUInt16(1, 1);
+ stmt->setUInt16(2, 1637);
+ stmt->setFloat (3, 1633.33f);
+ stmt->setFloat (4, -4439.11f);
+ stmt->setFloat (5, 15.7588f);
+ Player::SavePositionInDB(1, 1633.33f, -4439.11f, 15.7588f, 0.0f, 1637, lowGuid);
+ }
trans->Append(stmt);
- }
- // Spell conversion
- for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Spells.begin(); it != sObjectMgr->FactionChange_Spells.end(); ++it)
- {
- uint32 spell_alliance = it->first;
- uint32 spell_horde = it->second;
+ // Achievement conversion
+ for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Achievements.begin(); it != sObjectMgr->FactionChange_Achievements.end(); ++it)
+ {
+ uint32 achiev_alliance = it->first;
+ uint32 achiev_horde = it->second;
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SPELL_BY_SPELL);
- stmt->setUInt32(0, (team == TEAM_ALLIANCE ? spell_alliance : spell_horde));
- stmt->setUInt32(1, lowGuid);
- trans->Append(stmt);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_BY_ACHIEVEMENT);
+ stmt->setUInt16(0, uint16(team == TEAM_ALLIANCE ? achiev_alliance : achiev_horde));
+ stmt->setUInt32(1, lowGuid);
+ trans->Append(stmt);
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_SPELL_FACTION_CHANGE);
- stmt->setUInt32(0, (team == TEAM_ALLIANCE ? spell_alliance : spell_horde));
- stmt->setUInt32(1, (team == TEAM_ALLIANCE ? spell_horde : spell_alliance));
- stmt->setUInt32(2, lowGuid);
- trans->Append(stmt);
- }
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_ACHIEVEMENT);
+ stmt->setUInt16(0, uint16(team == TEAM_ALLIANCE ? achiev_alliance : achiev_horde));
+ stmt->setUInt16(1, uint16(team == TEAM_ALLIANCE ? achiev_horde : achiev_alliance));
+ stmt->setUInt32(2, lowGuid);
+ trans->Append(stmt);
+ }
- // Reputation conversion
- for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Reputation.begin(); it != sObjectMgr->FactionChange_Reputation.end(); ++it)
- {
- uint32 reputation_alliance = it->first;
- uint32 reputation_horde = it->second;
- uint32 newReputation = (team == TEAM_ALLIANCE) ? reputation_alliance : reputation_horde;
- uint32 oldReputation = (team == TEAM_ALLIANCE) ? reputation_horde : reputation_alliance;
-
- // select old standing set in db
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_REP_BY_FACTION);
- stmt->setUInt32(0, oldReputation);
- stmt->setUInt32(1, lowGuid);
- PreparedQueryResult result = CharacterDatabase.Query(stmt);
-
- if (!result)
+ // Item conversion
+ for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Items.begin(); it != sObjectMgr->FactionChange_Items.end(); ++it)
{
- WorldPacket data(SMSG_CHAR_FACTION_CHANGE, 1);
- data << uint8(CHAR_CREATE_ERROR);
- SendPacket(&data);
- return;
+ uint32 item_alliance = it->first;
+ uint32 item_horde = it->second;
+
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_INVENTORY_FACTION_CHANGE);
+ stmt->setUInt32(0, (team == TEAM_ALLIANCE ? item_alliance : item_horde));
+ stmt->setUInt32(1, (team == TEAM_ALLIANCE ? item_horde : item_alliance));
+ stmt->setUInt32(2, guid);
+ trans->Append(stmt);
}
- Field* fields = result->Fetch();
- int32 oldDBRep = fields[0].GetInt32();
- FactionEntry const* factionEntry = sFactionStore.LookupEntry(oldReputation);
+ // Spell conversion
+ for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Spells.begin(); it != sObjectMgr->FactionChange_Spells.end(); ++it)
+ {
+ uint32 spell_alliance = it->first;
+ uint32 spell_horde = it->second;
- // old base reputation
- int32 oldBaseRep = sObjectMgr->GetBaseReputationOff(factionEntry, oldRace, playerClass);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SPELL_BY_SPELL);
+ stmt->setUInt32(0, (team == TEAM_ALLIANCE ? spell_alliance : spell_horde));
+ stmt->setUInt32(1, lowGuid);
+ trans->Append(stmt);
- // new base reputation
- int32 newBaseRep = sObjectMgr->GetBaseReputationOff(sFactionStore.LookupEntry(newReputation), race, playerClass);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_SPELL_FACTION_CHANGE);
+ stmt->setUInt32(0, (team == TEAM_ALLIANCE ? spell_alliance : spell_horde));
+ stmt->setUInt32(1, (team == TEAM_ALLIANCE ? spell_horde : spell_alliance));
+ stmt->setUInt32(2, lowGuid);
+ trans->Append(stmt);
+ }
- // final reputation shouldnt change
- int32 FinalRep = oldDBRep + oldBaseRep;
- int32 newDBRep = FinalRep - newBaseRep;
+ // Reputation conversion
+ for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Reputation.begin(); it != sObjectMgr->FactionChange_Reputation.end(); ++it)
+ {
+ uint32 reputation_alliance = it->first;
+ uint32 reputation_horde = it->second;
+ uint32 newReputation = (team == TEAM_ALLIANCE) ? reputation_alliance : reputation_horde;
+ uint32 oldReputation = (team == TEAM_ALLIANCE) ? reputation_horde : reputation_alliance;
+
+ // select old standing set in db
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_REP_BY_FACTION);
+ stmt->setUInt32(0, oldReputation);
+ stmt->setUInt32(1, lowGuid);
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_REP_BY_FACTION);
- stmt->setUInt32(0, newReputation);
- stmt->setUInt32(1, lowGuid);
- trans->Append(stmt);
+ if (!result)
+ {
+ WorldPacket data(SMSG_CHAR_FACTION_CHANGE, 1);
+ data << uint8(CHAR_CREATE_ERROR);
+ SendPacket(&data);
+ return;
+ }
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_REP_FACTION_CHANGE);
- stmt->setUInt16(0, uint16(newReputation));
- stmt->setInt32(1, newDBRep);
- stmt->setUInt16(2, uint16(oldReputation));
- stmt->setUInt32(3, lowGuid);
- trans->Append(stmt);
- }
+ Field* fields = result->Fetch();
+ int32 oldDBRep = fields[0].GetInt32();
+ FactionEntry const* factionEntry = sFactionStore.LookupEntry(oldReputation);
- // Title conversion
- if (knownTitlesStr)
- {
- const uint32 ktcount = KNOWN_TITLES_SIZE * 2;
- uint32 knownTitles[ktcount];
- Tokenizer tokens(knownTitlesStr, ' ', ktcount);
+ // old base reputation
+ int32 oldBaseRep = sObjectMgr->GetBaseReputationOff(factionEntry, oldRace, playerClass);
- if (tokens.size() != ktcount)
- return;
+ // new base reputation
+ int32 newBaseRep = sObjectMgr->GetBaseReputationOff(sFactionStore.LookupEntry(newReputation), race, playerClass);
- for (uint32 index = 0; index < ktcount; ++index)
- knownTitles[index] = atol(tokens[index]);
+ // final reputation shouldnt change
+ int32 FinalRep = oldDBRep + oldBaseRep;
+ int32 newDBRep = FinalRep - newBaseRep;
- for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Titles.begin(); it != sObjectMgr->FactionChange_Titles.end(); ++it)
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_REP_BY_FACTION);
+ stmt->setUInt32(0, newReputation);
+ stmt->setUInt32(1, lowGuid);
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_REP_FACTION_CHANGE);
+ stmt->setUInt16(0, uint16(newReputation));
+ stmt->setInt32(1, newDBRep);
+ stmt->setUInt16(2, uint16(oldReputation));
+ stmt->setUInt32(3, lowGuid);
+ trans->Append(stmt);
+ }
+
+ // Title conversion
+ if (knownTitlesStr)
{
- uint32 title_alliance = it->first;
- uint32 title_horde = it->second;
+ const uint32 ktcount = KNOWN_TITLES_SIZE * 2;
+ uint32 knownTitles[ktcount];
+ Tokenizer tokens(knownTitlesStr, ' ', ktcount);
- CharTitlesEntry const* atitleInfo = sCharTitlesStore.LookupEntry(title_alliance);
- CharTitlesEntry const* htitleInfo = sCharTitlesStore.LookupEntry(title_horde);
- // new team
- if (team == TEAM_ALLIANCE)
+ if (tokens.size() != ktcount)
+ return;
+
+ for (uint32 index = 0; index < ktcount; ++index)
+ knownTitles[index] = atol(tokens[index]);
+
+ for (std::map<uint32, uint32>::const_iterator it = sObjectMgr->FactionChange_Titles.begin(); it != sObjectMgr->FactionChange_Titles.end(); ++it)
{
- uint32 bitIndex = htitleInfo->bit_index;
- uint32 index = bitIndex / 32;
- uint32 old_flag = 1 << (bitIndex % 32);
- uint32 new_flag = 1 << (atitleInfo->bit_index % 32);
- if (knownTitles[index] & old_flag)
+ uint32 title_alliance = it->first;
+ uint32 title_horde = it->second;
+
+ CharTitlesEntry const* atitleInfo = sCharTitlesStore.LookupEntry(title_alliance);
+ CharTitlesEntry const* htitleInfo = sCharTitlesStore.LookupEntry(title_horde);
+ // new team
+ if (team == TEAM_ALLIANCE)
{
- knownTitles[index] &= ~old_flag;
- // use index of the new title
- knownTitles[atitleInfo->bit_index / 32] |= new_flag;
+ uint32 bitIndex = htitleInfo->bit_index;
+ uint32 index = bitIndex / 32;
+ uint32 old_flag = 1 << (bitIndex % 32);
+ uint32 new_flag = 1 << (atitleInfo->bit_index % 32);
+ if (knownTitles[index] & old_flag)
+ {
+ knownTitles[index] &= ~old_flag;
+ // use index of the new title
+ knownTitles[atitleInfo->bit_index / 32] |= new_flag;
+ }
}
- }
- else
- {
- uint32 bitIndex = atitleInfo->bit_index;
- uint32 index = bitIndex / 32;
- uint32 old_flag = 1 << (bitIndex % 32);
- uint32 new_flag = 1 << (htitleInfo->bit_index % 32);
- if (knownTitles[index] & old_flag)
+ else
{
- knownTitles[index] &= ~old_flag;
- // use index of the new title
- knownTitles[htitleInfo->bit_index / 32] |= new_flag;
+ uint32 bitIndex = atitleInfo->bit_index;
+ uint32 index = bitIndex / 32;
+ uint32 old_flag = 1 << (bitIndex % 32);
+ uint32 new_flag = 1 << (htitleInfo->bit_index % 32);
+ if (knownTitles[index] & old_flag)
+ {
+ knownTitles[index] &= ~old_flag;
+ // use index of the new title
+ knownTitles[htitleInfo->bit_index / 32] |= new_flag;
+ }
}
- }
- std::ostringstream ss;
- for (uint32 index = 0; index < ktcount; ++index)
- ss << knownTitles[index] << ' ';
+ std::ostringstream ss;
+ for (uint32 index = 0; index < ktcount; ++index)
+ ss << knownTitles[index] << ' ';
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TITLES_FACTION_CHANGE);
- stmt->setString(0, ss.str().c_str());
- stmt->setUInt32(1, lowGuid);
- trans->Append(stmt);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TITLES_FACTION_CHANGE);
+ stmt->setString(0, ss.str().c_str());
+ stmt->setUInt32(1, lowGuid);
+ trans->Append(stmt);
- // unset any currently chosen title
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_RES_CHAR_TITLES_FACTION_CHANGE);
- stmt->setUInt32(0, lowGuid);
- trans->Append(stmt);
+ // unset any currently chosen title
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_RES_CHAR_TITLES_FACTION_CHANGE);
+ stmt->setUInt32(0, lowGuid);
+ trans->Append(stmt);
+ }
}
}
}
@@ -2117,7 +2108,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recv_data)
CharacterDatabase.CommitTransaction(trans);
std::string IP_str = GetRemoteAddress();
- sLog->outDebug(LOG_FILTER_UNITS, "Account: %d (IP: %s), Character guid: %u Change Race/Faction to: %s", GetAccountId(), IP_str.c_str(), lowGuid, newname.c_str());
+ sLog->outDebug(LOG_FILTER_PLAYER, "%s (IP: %s) changed race from %u to %u", GetPlayerInfo().c_str(), IP_str.c_str(), oldRace, race);
WorldPacket data(SMSG_CHAR_FACTION_CHANGE, 1 + 8 + (newname.size() + 1) + 1 + 1 + 1 + 1 + 1 + 1 + 1);
data << uint8(RESPONSE_SUCCESS);
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index a1f1f07cb90..e4989816998 100755
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -40,28 +40,6 @@
#include "ScriptMgr.h"
#include "AccountMgr.h"
-bool WorldSession::processChatmessageFurtherAfterSecurityChecks(std::string& msg, uint32 lang)
-{
- if (lang != LANG_ADDON)
- {
- // strip invisible characters for non-addon messages
- if (sWorld->getBoolConfig(CONFIG_CHAT_FAKE_MESSAGE_PREVENTING))
- stripLineInvisibleChars(msg);
-
- if (sWorld->getIntConfig(CONFIG_CHAT_STRICT_LINK_CHECKING_SEVERITY) && AccountMgr::IsPlayerAccount(GetSecurity())
- && !ChatHandler(this).isValidChatMessage(msg.c_str()))
- {
- sLog->outError(LOG_FILTER_NETWORKIO, "Player %s (GUID: %u) sent a chatmessage with an invalid link: %s", GetPlayer()->GetName().c_str(),
- GetPlayer()->GetGUIDLow(), msg.c_str());
- if (sWorld->getIntConfig(CONFIG_CHAT_STRICT_LINK_CHECKING_KICK))
- KickPlayer();
- return false;
- }
- }
-
- return true;
-}
-
void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
{
uint32 type;
@@ -112,20 +90,36 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
if (lang == LANG_ADDON)
{
- if (sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON))
+ // LANG_ADDON is only valid for the following message types
+ switch (type)
{
- std::string msg = "";
- recvData >> msg;
+ case CHAT_MSG_PARTY:
+ case CHAT_MSG_RAID:
+ case CHAT_MSG_GUILD:
+ case CHAT_MSG_BATTLEGROUND:
+ case CHAT_MSG_WHISPER:
+ if (sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON))
+ {
+ std::string msg = "";
+ recvData >> msg;
- if (msg.empty())
- return;
+ if (msg.empty())
+ return;
- sScriptMgr->OnPlayerChat(sender, uint32(CHAT_MSG_ADDON), lang, msg);
- }
+ sScriptMgr->OnPlayerChat(sender, uint32(CHAT_MSG_ADDON), lang, msg);
+ }
- // Disabled addon channel?
- if (!sWorld->getBoolConfig(CONFIG_ADDON_CHANNEL))
- return;
+ // Disabled addon channel?
+ if (!sWorld->getBoolConfig(CONFIG_ADDON_CHANNEL))
+ return;
+ break;
+ default:
+ sLog->outError(LOG_FILTER_NETWORKIO, "Player %s (GUID: %u) sent a chatmessage with an invalid language/message type combination",
+ GetPlayer()->GetName().c_str(), GetPlayer()->GetGUIDLow());
+
+ recvData.rfinish();
+ return;
+ }
}
// LANG_ADDON should not be changed nor be affected by flood control
else
@@ -180,10 +174,8 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
if (sender->HasAura(1852) && type != CHAT_MSG_WHISPER)
{
- std::string msg="";
- recvData >> msg;
-
SendNotification(GetTrinityString(LANG_GM_SILENCE), sender->GetName().c_str());
+ recvData.rfinish();
return;
}
@@ -225,14 +217,26 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
if (msg.empty())
return;
- if (ChatHandler(this).ParseCommands(msg.c_str()) > 0)
+ if (ChatHandler(this).ParseCommands(msg.c_str()))
return;
- if (!processChatmessageFurtherAfterSecurityChecks(msg, lang))
- return;
+ if (lang != LANG_ADDON)
+ {
+ // Strip invisible characters for non-addon messages
+ if (sWorld->getBoolConfig(CONFIG_CHAT_FAKE_MESSAGE_PREVENTING))
+ stripLineInvisibleChars(msg);
- if (msg.empty())
- return;
+ if (sWorld->getIntConfig(CONFIG_CHAT_STRICT_LINK_CHECKING_SEVERITY) && !ChatHandler(this).isValidChatMessage(msg.c_str()))
+ {
+ sLog->outError(LOG_FILTER_NETWORKIO, "Player %s (GUID: %u) sent a chatmessage with an invalid link: %s", GetPlayer()->GetName().c_str(),
+ GetPlayer()->GetGUIDLow(), msg.c_str());
+
+ if (sWorld->getIntConfig(CONFIG_CHAT_STRICT_LINK_CHECKING_KICK))
+ KickPlayer();
+
+ return;
+ }
+ }
}
switch (type)
@@ -557,8 +561,8 @@ void WorldSession::HandleTextEmoteOpcode(WorldPacket& recvData)
// Only allow text-emotes for "dead" entities (feign death included)
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
break;
- GetPlayer()->HandleEmoteCommand(emote_anim);
- break;
+ GetPlayer()->HandleEmoteCommand(emote_anim);
+ break;
}
Unit* unit = ObjectAccessor::GetUnit(*_player, guid);
diff --git a/src/server/game/Handlers/CombatHandler.cpp b/src/server/game/Handlers/CombatHandler.cpp
index 78547d2d0f3..1cd86afc6d2 100755
--- a/src/server/game/Handlers/CombatHandler.cpp
+++ b/src/server/game/Handlers/CombatHandler.cpp
@@ -26,10 +26,10 @@
#include "Vehicle.h"
#include "VehicleDefines.h"
-void WorldSession::HandleAttackSwingOpcode(WorldPacket& recv_data)
+void WorldSession::HandleAttackSwingOpcode(WorldPacket& recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_ATTACKSWING Message guidlow:%u guidhigh:%u", GUID_LOPART(guid), GUID_HIPART(guid));
@@ -66,15 +66,15 @@ void WorldSession::HandleAttackSwingOpcode(WorldPacket& recv_data)
_player->Attack(pEnemy, true);
}
-void WorldSession::HandleAttackStopOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleAttackStopOpcode(WorldPacket & /*recvData*/)
{
GetPlayer()->AttackStop();
}
-void WorldSession::HandleSetSheathedOpcode(WorldPacket& recv_data)
+void WorldSession::HandleSetSheathedOpcode(WorldPacket& recvData)
{
uint32 sheathed;
- recv_data >> sheathed;
+ recvData >> sheathed;
//sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: Recvd CMSG_SETSHEATHED Message guidlow:%u value1:%u", GetPlayer()->GetGUIDLow(), sheathed);
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index 147e698d20e..223a5316c7a 100755
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -56,13 +56,13 @@ void WorldSession::SendPartyResult(PartyOperation operation, const std::string&
SendPacket(&data);
}
-void WorldSession::HandleGroupInviteOpcode(WorldPacket & recv_data)
+void WorldSession::HandleGroupInviteOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_INVITE");
std::string membername;
- recv_data >> membername;
- recv_data.read_skip<uint32>();
+ recvData >> membername;
+ recvData.read_skip<uint32>();
// attempt add selected player
@@ -195,11 +195,11 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket & recv_data)
SendPartyResult(PARTY_OP_INVITE, membername, ERR_PARTY_RESULT_OK);
}
-void WorldSession::HandleGroupAcceptOpcode(WorldPacket& recv_data)
+void WorldSession::HandleGroupAcceptOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_ACCEPT");
- recv_data.read_skip<uint32>();
+ recvData.read_skip<uint32>();
Group* group = GetPlayer()->GetGroupInvite();
if (!group)
@@ -247,7 +247,7 @@ void WorldSession::HandleGroupAcceptOpcode(WorldPacket& recv_data)
group->BroadcastGroupUpdate();
}
-void WorldSession::HandleGroupDeclineOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleGroupDeclineOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_DECLINE");
@@ -270,14 +270,14 @@ void WorldSession::HandleGroupDeclineOpcode(WorldPacket & /*recv_data*/)
leader->GetSession()->SendPacket(&data);
}
-void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data)
+void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_UNINVITE_GUID");
uint64 guid;
std::string reason;
- recv_data >> guid;
- recv_data >> reason;
+ recvData >> guid;
+ recvData >> reason;
//can't uninvite yourself
if (guid == GetPlayer()->GetGUID())
@@ -319,12 +319,12 @@ void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data)
SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S);
}
-void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data)
+void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_UNINVITE");
std::string membername;
- recv_data >> membername;
+ recvData >> membername;
// player not found
if (!normalizePlayerName(membername))
@@ -364,12 +364,12 @@ void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data)
SendPartyResult(PARTY_OP_UNINVITE, membername, ERR_TARGET_NOT_IN_GROUP_S);
}
-void WorldSession::HandleGroupSetLeaderOpcode(WorldPacket & recv_data)
+void WorldSession::HandleGroupSetLeaderOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_SET_LEADER");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
Player* player = ObjectAccessor::FindPlayer(guid);
Group* group = GetPlayer()->GetGroup();
@@ -385,7 +385,7 @@ void WorldSession::HandleGroupSetLeaderOpcode(WorldPacket & recv_data)
group->SendUpdate();
}
-void WorldSession::HandleGroupDisbandOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleGroupDisbandOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_DISBAND");
@@ -408,14 +408,14 @@ void WorldSession::HandleGroupDisbandOpcode(WorldPacket & /*recv_data*/)
GetPlayer()->RemoveFromGroup(GROUP_REMOVEMETHOD_LEAVE);
}
-void WorldSession::HandleLootMethodOpcode(WorldPacket & recv_data)
+void WorldSession::HandleLootMethodOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_LOOT_METHOD");
uint32 lootMethod;
uint64 lootMaster;
uint32 lootThreshold;
- recv_data >> lootMethod >> lootMaster >> lootThreshold;
+ recvData >> lootMethod >> lootMaster >> lootThreshold;
Group* group = GetPlayer()->GetGroup();
if (!group)
@@ -459,7 +459,7 @@ void WorldSession::HandleLootRoll(WorldPacket& recvData)
}
}
-void WorldSession::HandleMinimapPingOpcode(WorldPacket& recv_data)
+void WorldSession::HandleMinimapPingOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received MSG_MINIMAP_PING");
@@ -467,8 +467,8 @@ void WorldSession::HandleMinimapPingOpcode(WorldPacket& recv_data)
return;
float x, y;
- recv_data >> x;
- recv_data >> y;
+ recvData >> x;
+ recvData >> y;
//sLog->outDebug("Received opcode MSG_MINIMAP_PING X: %f, Y: %f", x, y);
@@ -483,13 +483,13 @@ void WorldSession::HandleMinimapPingOpcode(WorldPacket& recv_data)
GetPlayer()->GetGroup()->BroadcastPacket(&data, true, -1, GetPlayer()->GetGUID());
}
-void WorldSession::HandleRandomRollOpcode(WorldPacket& recv_data)
+void WorldSession::HandleRandomRollOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received MSG_RANDOM_ROLL");
uint32 minimum, maximum, roll;
- recv_data >> minimum;
- recv_data >> maximum;
+ recvData >> minimum;
+ recvData >> maximum;
/** error handling **/
if (minimum > maximum || maximum > 10000) // < 32768 for urand call
@@ -512,7 +512,7 @@ void WorldSession::HandleRandomRollOpcode(WorldPacket& recv_data)
SendPacket(&data);
}
-void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket & recv_data)
+void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received MSG_RAID_TARGET_UPDATE");
@@ -521,7 +521,7 @@ void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket & recv_data)
return;
uint8 x;
- recv_data >> x;
+ recvData >> x;
/** error handling **/
/********************/
@@ -537,12 +537,12 @@ void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket & recv_data)
return;
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
group->SetTargetIcon(x, _player->GetGUID(), guid);
}
}
-void WorldSession::HandleGroupRaidConvertOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleGroupRaidConvertOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_RAID_CONVERT");
@@ -563,7 +563,7 @@ void WorldSession::HandleGroupRaidConvertOpcode(WorldPacket & /*recv_data*/)
group->ConvertToRaid();
}
-void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket & recv_data)
+void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_CHANGE_SUB_GROUP");
@@ -574,8 +574,8 @@ void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket & recv_data)
std::string name;
uint8 groupNr;
- recv_data >> name;
- recv_data >> groupNr;
+ recvData >> name;
+ recvData >> groupNr;
if (groupNr >= MAX_RAID_SUBGROUPS)
return;
@@ -602,7 +602,7 @@ void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket & recv_data)
group->ChangeMembersGroup(guid, groupNr);
}
-void WorldSession::HandleGroupAssistantLeaderOpcode(WorldPacket & recv_data)
+void WorldSession::HandleGroupAssistantLeaderOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_ASSISTANT_LEADER");
@@ -615,15 +615,15 @@ void WorldSession::HandleGroupAssistantLeaderOpcode(WorldPacket & recv_data)
uint64 guid;
bool apply;
- recv_data >> guid;
- recv_data >> apply;
+ recvData >> guid;
+ recvData >> apply;
group->SetGroupMemberFlag(guid, apply, MEMBER_FLAG_ASSISTANT);
group->SendUpdate();
}
-void WorldSession::HandlePartyAssignmentOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePartyAssignmentOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received MSG_PARTY_ASSIGNMENT");
@@ -638,8 +638,8 @@ void WorldSession::HandlePartyAssignmentOpcode(WorldPacket & recv_data)
uint8 assignment;
bool apply;
uint64 guid;
- recv_data >> assignment >> apply;
- recv_data >> guid;
+ recvData >> assignment >> apply;
+ recvData >> guid;
switch (assignment)
{
@@ -657,7 +657,7 @@ void WorldSession::HandlePartyAssignmentOpcode(WorldPacket & recv_data)
group->SendUpdate();
}
-void WorldSession::HandleRaidReadyCheckOpcode(WorldPacket & recv_data)
+void WorldSession::HandleRaidReadyCheckOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received MSG_RAID_READY_CHECK");
@@ -665,7 +665,7 @@ void WorldSession::HandleRaidReadyCheckOpcode(WorldPacket & recv_data)
if (!group)
return;
- if (recv_data.empty()) // request
+ if (recvData.empty()) // request
{
/** error handling **/
if (!group->IsLeader(GetPlayer()->GetGUID()) && !group->IsAssistant(GetPlayer()->GetGUID()))
@@ -682,7 +682,7 @@ void WorldSession::HandleRaidReadyCheckOpcode(WorldPacket & recv_data)
else // answer
{
uint8 state;
- recv_data >> state;
+ recvData >> state;
// everything's fine, do it
WorldPacket data(MSG_RAID_READY_CHECK_CONFIRM, 9);
@@ -692,7 +692,7 @@ void WorldSession::HandleRaidReadyCheckOpcode(WorldPacket & recv_data)
}
}
-void WorldSession::HandleRaidReadyCheckFinishedOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleRaidReadyCheckFinishedOpcode(WorldPacket & /*recvData*/)
{
//Group* group = GetPlayer()->GetGroup();
//if (!group)
@@ -872,11 +872,11 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke
}
/*this procedure handles clients CMSG_REQUEST_PARTY_MEMBER_STATS request*/
-void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket &recv_data)
+void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_REQUEST_PARTY_MEMBER_STATS");
uint64 Guid;
- recv_data >> Guid;
+ recvData >> Guid;
Player* player = HashMapHolder<Player>::Find(Guid);
if (!player)
@@ -962,23 +962,23 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket &recv_data)
SendPacket(&data);
}
-/*!*/void WorldSession::HandleRequestRaidInfoOpcode(WorldPacket & /*recv_data*/)
+/*!*/void WorldSession::HandleRequestRaidInfoOpcode(WorldPacket & /*recvData*/)
{
// every time the player checks the character screen
_player->SendRaidInfo();
}
-/*void WorldSession::HandleGroupCancelOpcode(WorldPacket & recv_data)
+/*void WorldSession::HandleGroupCancelOpcode(WorldPacket & recvData)
{
sLog->outDebug("WORLD: got CMSG_GROUP_CANCEL.");
}*/
-void WorldSession::HandleOptOutOfLootOpcode(WorldPacket & recv_data)
+void WorldSession::HandleOptOutOfLootOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_OPT_OUT_OF_LOOT");
uint32 passOnLoot;
- recv_data >> passOnLoot; // 1 always pass, 0 do not pass
+ recvData >> passOnLoot; // 1 always pass, 0 do not pass
// ignore if player not loaded
if (!GetPlayer()) // needed because STATUS_AUTHED
diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp
index ccd1c931f51..929a31938d2 100755
--- a/src/server/game/Handlers/GuildHandler.cpp
+++ b/src/server/game/Handlers/GuildHandler.cpp
@@ -28,29 +28,17 @@
#include "GossipDef.h"
#include "SocialMgr.h"
-// Helper for getting guild object of session's player.
-// If guild does not exist, sends error (if necessary).
-inline Guild* _GetPlayerGuild(WorldSession* session, bool sendError = false)
-{
- if (uint32 guildId = session->GetPlayer()->GetGuildId()) // If guild id = 0, player is not in guild
- if (Guild* guild = sGuildMgr->GetGuildById(guildId)) // Find guild by id
- return guild;
- if (sendError)
- Guild::SendCommandResult(session, GUILD_CREATE_S, ERR_GUILD_PLAYER_NOT_IN_GUILD);
- return NULL;
-}
-
void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_QUERY");
-
uint32 guildId;
recvPacket >> guildId;
- // Use received guild id to access guild method (not player's guild id)
+
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_QUERY [%s]: Guild: %u", GetPlayerInfo().c_str(), guildId);
+ if (!guildId)
+ return;
+
if (Guild* guild = sGuildMgr->GetGuildById(guildId))
guild->HandleQuery(this);
- else
- Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_PLAYER_NOT_IN_GUILD);
}
void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
@@ -72,41 +60,39 @@ void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_INVITE");
-
std::string invitedName;
recvPacket >> invitedName;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_INVITE [%s]: Invited: %s", GetPlayerInfo().c_str(), invitedName.c_str());
if (normalizePlayerName(invitedName))
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleInviteMember(this, invitedName);
}
void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_REMOVE");
-
std::string playerName;
recvPacket >> playerName;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_REMOVE [%s]: Target: %s", GetPlayerInfo().c_str(), playerName.c_str());
+
if (normalizePlayerName(playerName))
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleRemoveMember(this, playerName);
}
void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_ACCEPT");
- // Player cannot be in guild
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_ACCEPT [%s]", GetPlayer()->GetName().c_str());
+
if (!GetPlayer()->GetGuildId())
- // Guild where player was invited must exist
if (Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildIdInvited()))
guild->HandleAcceptMember(this);
}
void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_DECLINE");
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_DECLINE [%s]", GetPlayerInfo().c_str());
GetPlayer()->SetGuildIdInvited(0);
GetPlayer()->SetInGuild(0);
@@ -114,125 +100,115 @@ void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildInfoOpcode(WorldPacket& /*recvPacket*/)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_INFO");
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_INFO [%s]", GetPlayerInfo().c_str());
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->SendInfo(this);
}
void WorldSession::HandleGuildRosterOpcode(WorldPacket& /*recvPacket*/)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_ROSTER");
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_ROSTER [%s]", GetPlayerInfo().c_str());
- if (Guild* guild = _GetPlayerGuild(this))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleRoster(this);
+ else
+ Guild::SendCommandResult(this, GUILD_COMMAND_ROSTER, ERR_GUILD_PLAYER_NOT_IN_GUILD);
}
void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_PROMOTE");
-
std::string playerName;
recvPacket >> playerName;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_PROMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), playerName.c_str());
+
if (normalizePlayerName(playerName))
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleUpdateMemberRank(this, playerName, false);
}
void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_DEMOTE");
-
std::string playerName;
recvPacket >> playerName;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_DEMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), playerName.c_str());
+
if (normalizePlayerName(playerName))
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleUpdateMemberRank(this, playerName, true);
}
void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_LEAVE");
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_LEAVE [%s]", GetPlayerInfo().c_str());
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleLeaveMember(this);
}
void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_DISBAND");
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_DISBAND [%s]", GetPlayerInfo().c_str());
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleDisband(this);
}
void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_LEADER");
-
std::string name;
recvPacket >> name;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_LEADER [%s]: Target: %s", GetPlayerInfo().c_str(), name.c_str());
+
if (normalizePlayerName(name))
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetLeader(this, name);
}
void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_MOTD");
+ std::string motd;
+ recvPacket >> motd;
- std::string motd; // Empty by default
- if (!recvPacket.empty())
- recvPacket >> motd;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_MOTD [%s]: MOTD: %s", GetPlayerInfo().c_str(), motd.c_str());
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetMOTD(this, motd);
}
void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_SET_PUBLIC_NOTE");
-
std::string playerName;
- recvPacket >> playerName;
+ std::string note;
+ recvPacket >> playerName >> note;
- std::string publicNote;
- recvPacket >> publicNote;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_SET_PUBLIC_NOTE [%s]: Target: %s, Note: %s",
+ GetPlayerInfo().c_str(), playerName.c_str(), note.c_str());
if (normalizePlayerName(playerName))
- if (Guild* guild = _GetPlayerGuild(this, true))
- guild->HandleSetMemberNote(this, playerName, publicNote, false);
+ if (Guild* guild = GetPlayer()->GetGuild())
+ guild->HandleSetMemberNote(this, playerName, note, true);
}
void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_SET_OFFICER_NOTE");
-
std::string playerName;
- recvPacket >> playerName;
+ std::string note;
+ recvPacket >> playerName >> note;
- std::string officerNote;
- recvPacket >> officerNote;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_SET_OFFICER_NOTE [%s]: Target: %s, Note: %s",
+ GetPlayerInfo().c_str(), playerName.c_str(), note.c_str());
if (normalizePlayerName(playerName))
- if (Guild* guild = _GetPlayerGuild(this, true))
- guild->HandleSetMemberNote(this, playerName, officerNote, true);
+ if (Guild* guild = GetPlayer()->GetGuild())
+ guild->HandleSetMemberNote(this, playerName, note, false);
}
void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_RANK");
-
- Guild* guild = _GetPlayerGuild(this, true);
- if (!guild)
- {
- recvPacket.rpos(recvPacket.wpos());
- return;
- }
-
uint32 rankId;
recvPacket >> rankId;
@@ -245,7 +221,17 @@ void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
uint32 money;
recvPacket >> money;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_RANK [%s]: Rank: %s (%u)", GetPlayerInfo().c_str(), rankName.c_str(), rankId);
+
+ Guild* guild = GetPlayer()->GetGuild();
+ if (!guild)
+ {
+ recvPacket.rpos(recvPacket.wpos());
+ return;
+ }
+
GuildBankRightsAndSlotsVec rightsAndSlots(GUILD_BANK_MAX_TABS);
+
for (uint8 tabId = 0; tabId < GUILD_BANK_MAX_TABS; ++tabId)
{
uint32 bankRights;
@@ -254,7 +240,7 @@ void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
recvPacket >> bankRights;
recvPacket >> slots;
- rightsAndSlots[tabId] = GuildBankRightsAndSlots(uint8(bankRights), slots);
+ rightsAndSlots[tabId] = GuildBankRightsAndSlots(tabId, bankRights, slots);
}
guild->HandleSetRankInfo(this, rankId, rankName, rights, money, rightsAndSlots);
@@ -262,181 +248,175 @@ void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket)
void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_ADD_RANK");
-
std::string rankName;
recvPacket >> rankName;
- if (Guild* guild = _GetPlayerGuild(this, true))
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_ADD_RANK [%s]: Rank: %s", GetPlayerInfo().c_str(), rankName.c_str());
+
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleAddNewRank(this, rankName);
}
void WorldSession::HandleGuildDelRankOpcode(WorldPacket& /*recvPacket*/)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_DEL_RANK");
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_DEL_RANK [%s]", GetPlayerInfo().c_str());
- if (Guild* guild = _GetPlayerGuild(this, true))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleRemoveLowestRank(this);
}
void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_INFO_TEXT");
-
std::string info;
recvPacket >> info;
- if (Guild* guild = _GetPlayerGuild(this, true))
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_INFO_TEXT [%s]: %s", GetPlayerInfo().c_str(), info.c_str());
+
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetInfo(this, info);
}
void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received MSG_SAVE_GUILD_EMBLEM");
-
uint64 vendorGuid;
recvPacket >> vendorGuid;
EmblemInfo emblemInfo;
emblemInfo.ReadPacket(recvPacket);
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_SAVE_GUILD_EMBLEM [%s]: Guid: [" UI64FMTD
+ "] Style: %d, Color: %d, BorderStyle: %d, BorderColor: %d, BackgroundColor: %d"
+ , GetPlayerInfo().c_str(), vendorGuid, emblemInfo.GetStyle()
+ , emblemInfo.GetColor(), emblemInfo.GetBorderStyle()
+ , emblemInfo.GetBorderColor(), emblemInfo.GetBackgroundColor());
+
if (GetPlayer()->GetNPCIfCanInteractWith(vendorGuid, UNIT_NPC_FLAG_TABARDDESIGNER))
{
// Remove fake death
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
- if (Guild* guild = _GetPlayerGuild(this))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetEmblem(this, emblemInfo);
else
- // "You are not part of a guild!";
- Guild::SendSaveEmblemResult(this, ERR_GUILDEMBLEM_NOGUILD);
+ Guild::SendSaveEmblemResult(this, ERR_GUILDEMBLEM_NOGUILD); // "You are not part of a guild!";
}
else
- {
- // "That's not an emblem vendor!"
- Guild::SendSaveEmblemResult(this, ERR_GUILDEMBLEM_INVALIDVENDOR);
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: HandleSaveGuildEmblemOpcode - Unit (GUID: %u) not found or you can't interact with him.", GUID_LOPART(vendorGuid));
- }
+ Guild::SendSaveEmblemResult(this, ERR_GUILDEMBLEM_INVALIDVENDOR); // "That's not an emblem vendor!"
}
void WorldSession::HandleGuildEventLogQueryOpcode(WorldPacket& /* recvPacket */)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (MSG_GUILD_EVENT_LOG_QUERY)");
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_GUILD_EVENT_LOG_QUERY [%s]", GetPlayerInfo().c_str());
- if (Guild* guild = _GetPlayerGuild(this))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->SendEventLog(this);
}
-void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPacket & /* recv_data */)
+void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPacket & /* recvData */)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (MSG_GUILD_BANK_MONEY_WITHDRAWN)");
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_GUILD_BANK_MONEY_WITHDRAWN [%s]", GetPlayerInfo().c_str());
- if (Guild* guild = _GetPlayerGuild(this))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->SendMoneyInfo(this);
}
-void WorldSession::HandleGuildPermissions(WorldPacket& /* recv_data */)
+void WorldSession::HandleGuildPermissions(WorldPacket& /* recvData */)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (MSG_GUILD_PERMISSIONS)");
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_GUILD_PERMISSIONS [%s]", GetPlayerInfo().c_str());
- if (Guild* guild = _GetPlayerGuild(this))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->SendPermissions(this);
}
// Called when clicking on Guild bank gameobject
-void WorldSession::HandleGuildBankerActivate(WorldPacket & recv_data)
+void WorldSession::HandleGuildBankerActivate(WorldPacket& recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (CMSG_GUILD_BANKER_ACTIVATE)");
-
- uint64 GoGuid;
- recv_data >> GoGuid;
+ uint64 guid;
+ bool sendAllSlots;
+ recvData >> guid >> sendAllSlots;
- uint8 fullSlotList;
- recv_data >> fullSlotList; // 0 = only slots updated in last operation are shown. 1 = all slots updated
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_BANKER_ACTIVATE [%s]: Go: [" UI64FMTD "] AllSlots: %u"
+ , GetPlayerInfo().c_str(), guid, sendAllSlots);
- if (GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
+ Guild * const guild = GetPlayer()->GetGuild();
+ if (!guild)
{
- if (Guild* guild = _GetPlayerGuild(this))
- guild->SendBankTabsInfo(this);
- else
- Guild::SendCommandResult(this, GUILD_UNK1, ERR_GUILD_PLAYER_NOT_IN_GUILD);
+ Guild::SendCommandResult(this, GUILD_COMMAND_VIEW_TAB, ERR_GUILD_PLAYER_NOT_IN_GUILD);
+ return;
}
+
+ guild->SendBankTabsInfo(this, sendAllSlots);
}
// Called when opening guild bank tab only (first one)
-void WorldSession::HandleGuildBankQueryTab(WorldPacket & recv_data)
+void WorldSession::HandleGuildBankQueryTab(WorldPacket& recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (CMSG_GUILD_BANK_QUERY_TAB)");
-
- uint64 GoGuid;
- recv_data >> GoGuid;
-
+ uint64 guid;
uint8 tabId;
- recv_data >> tabId;
+ bool full;
- uint8 fullSlotList;
- recv_data >> fullSlotList; // 0 = only slots updated in last operation are shown. 1 = all slots updated
+ recvData >> guid >> tabId >> full;
- if (GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
- if (Guild* guild = _GetPlayerGuild(this))
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_BANK_QUERY_TAB [%s]: Go: [" UI64FMTD "], TabId: %u, ShowTabs: %u"
+ , GetPlayerInfo().c_str(), guid, tabId, full);
+
+ if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->SendBankTabData(this, tabId);
}
-void WorldSession::HandleGuildBankDepositMoney(WorldPacket & recv_data)
+void WorldSession::HandleGuildBankDepositMoney(WorldPacket& recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (CMSG_GUILD_BANK_DEPOSIT_MONEY)");
-
- uint64 GoGuid;
- recv_data >> GoGuid;
-
+ uint64 guid;
uint32 money;
- recv_data >> money;
+ recvData >> guid >> money;
+
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_BANK_DEPOSIT_MONEY [%s]: Go: [" UI64FMTD "], money: %u",
+ GetPlayerInfo().c_str(), guid, money);
- if (GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
+ if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
if (money && GetPlayer()->HasEnoughMoney(money))
- if (Guild* guild = _GetPlayerGuild(this))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleMemberDepositMoney(this, money);
}
-void WorldSession::HandleGuildBankWithdrawMoney(WorldPacket & recv_data)
+void WorldSession::HandleGuildBankWithdrawMoney(WorldPacket& recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (CMSG_GUILD_BANK_WITHDRAW_MONEY)");
-
- uint64 GoGuid;
- recv_data >> GoGuid;
-
+ uint64 guid;
uint32 money;
- recv_data >> money;
+ recvData >> guid >> money;
- if (money)
- if (GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
- if (Guild* guild = _GetPlayerGuild(this))
- guild->HandleMemberWithdrawMoney(this, money);
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_BANK_WITHDRAW_MONEY [%s]: Go: [" UI64FMTD "], money: %u",
+ GetPlayerInfo().c_str(), guid, money);
+
+ if (money && GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
+ if (Guild* guild = GetPlayer()->GetGuild())
+ guild->HandleMemberWithdrawMoney(this, money);
}
-void WorldSession::HandleGuildBankSwapItems(WorldPacket & recv_data)
+void WorldSession::HandleGuildBankSwapItems(WorldPacket& recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (CMSG_GUILD_BANK_SWAP_ITEMS)");
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_BANK_SWAP_ITEMS [%s]", GetPlayerInfo().c_str());
uint64 GoGuid;
- recv_data >> GoGuid;
+ recvData >> GoGuid;
if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
{
- recv_data.rfinish(); // Prevent additional spam at rejected packet
+ recvData.rfinish(); // Prevent additional spam at rejected packet
return;
}
- Guild* guild = _GetPlayerGuild(this);
+ Guild* guild = GetPlayer()->GetGuild();
if (!guild)
{
- recv_data.rfinish(); // Prevent additional spam at rejected packet
+ recvData.rfinish(); // Prevent additional spam at rejected packet
return;
}
uint8 bankToBank;
- recv_data >> bankToBank;
+ recvData >> bankToBank;
uint8 tabId;
uint8 slotId;
@@ -446,18 +426,18 @@ void WorldSession::HandleGuildBankSwapItems(WorldPacket & recv_data)
if (bankToBank)
{
uint8 destTabId;
- recv_data >> destTabId;
+ recvData >> destTabId;
uint8 destSlotId;
- recv_data >> destSlotId;
- recv_data.read_skip<uint32>(); // Always 0
+ recvData >> destSlotId;
+ recvData.read_skip<uint32>(); // Always 0
- recv_data >> tabId;
- recv_data >> slotId;
- recv_data >> itemEntry;
- recv_data.read_skip<uint8>(); // Always 0
+ recvData >> tabId;
+ recvData >> slotId;
+ recvData >> itemEntry;
+ recvData.read_skip<uint8>(); // Always 0
- recv_data >> splitedAmount;
+ recvData >> splitedAmount;
guild->SwapItems(GetPlayer(), tabId, slotId, destTabId, destSlotId, splitedAmount);
}
@@ -467,24 +447,24 @@ void WorldSession::HandleGuildBankSwapItems(WorldPacket & recv_data)
uint8 playerSlotId = NULL_SLOT;
uint8 toChar = 1;
- recv_data >> tabId;
- recv_data >> slotId;
- recv_data >> itemEntry;
+ recvData >> tabId;
+ recvData >> slotId;
+ recvData >> itemEntry;
uint8 autoStore;
- recv_data >> autoStore;
+ recvData >> autoStore;
if (autoStore)
{
- recv_data.read_skip<uint32>(); // autoStoreCount
- recv_data.read_skip<uint8>(); // ToChar (?), always and expected to be 1 (autostore only triggered in Bank -> Char)
- recv_data.read_skip<uint32>(); // Always 0
+ recvData.read_skip<uint32>(); // autoStoreCount
+ recvData.read_skip<uint8>(); // ToChar (?), always and expected to be 1 (autostore only triggered in Bank -> Char)
+ recvData.read_skip<uint32>(); // Always 0
}
else
{
- recv_data >> playerBag;
- recv_data >> playerSlotId;
- recv_data >> toChar;
- recv_data >> splitedAmount;
+ recvData >> playerBag;
+ recvData >> playerSlotId;
+ recvData >> toChar;
+ recvData >> splitedAmount;
}
// Player <-> Bank
@@ -496,75 +476,68 @@ void WorldSession::HandleGuildBankSwapItems(WorldPacket & recv_data)
}
}
-void WorldSession::HandleGuildBankBuyTab(WorldPacket & recv_data)
+void WorldSession::HandleGuildBankBuyTab(WorldPacket& recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (CMSG_GUILD_BANK_BUY_TAB)");
+ uint64 guid;
+ uint8 tabId;
- uint64 GoGuid;
- recv_data >> GoGuid;
+ recvData >> guid >> tabId;
+
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_BANK_BUY_TAB [%s]: Go: [" UI64FMTD "], TabId: %u", GetPlayerInfo().c_str(), guid, tabId);
- uint8 tabId;
- recv_data >> tabId;
- if (GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
- if (Guild* guild = _GetPlayerGuild(this))
+ if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleBuyBankTab(this, tabId);
}
-void WorldSession::HandleGuildBankUpdateTab(WorldPacket & recv_data)
+void WorldSession::HandleGuildBankUpdateTab(WorldPacket& recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (CMSG_GUILD_BANK_UPDATE_TAB)");
-
- uint64 GoGuid;
- recv_data >> GoGuid;
-
+ uint64 guid;
uint8 tabId;
- recv_data >> tabId;
+ std::string name, icon;
- std::string name;
- recv_data >> name;
+ recvData >> guid >> tabId >> name >> icon;
- std::string icon;
- recv_data >> icon;
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_GUILD_BANK_UPDATE_TAB [%s]: Go: [" UI64FMTD "], TabId: %u, Name: %s, Icon: %s"
+ , GetPlayerInfo().c_str(), guid, tabId, name.c_str(), icon.c_str());
if (!name.empty() && !icon.empty())
- if (GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK))
- if (Guild* guild = _GetPlayerGuild(this))
+ if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->HandleSetBankTabInfo(this, tabId, name, icon);
}
-void WorldSession::HandleGuildBankLogQuery(WorldPacket & recv_data)
+void WorldSession::HandleGuildBankLogQuery(WorldPacket& recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received (MSG_GUILD_BANK_LOG_QUERY)");
-
uint8 tabId;
- recv_data >> tabId;
+ recvData >> tabId;
- if (Guild* guild = _GetPlayerGuild(this))
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_GUILD_BANK_LOG_QUERY [%s]: TabId: %u", GetPlayerInfo().c_str(), tabId);
+
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->SendBankLog(this, tabId);
}
-void WorldSession::HandleQueryGuildBankTabText(WorldPacket &recv_data)
+void WorldSession::HandleQueryGuildBankTabText(WorldPacket &recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received MSG_QUERY_GUILD_BANK_TEXT");
-
uint8 tabId;
- recv_data >> tabId;
+ recvData >> tabId;
- if (Guild* guild = _GetPlayerGuild(this))
+ sLog->outDebug(LOG_FILTER_GUILD, "MSG_QUERY_GUILD_BANK_TEXT [%s]: TabId: %u", GetPlayerInfo().c_str(), tabId);
+
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->SendBankTabText(this, tabId);
}
-void WorldSession::HandleSetGuildBankTabText(WorldPacket &recv_data)
+void WorldSession::HandleSetGuildBankTabText(WorldPacket &recvData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_SET_GUILD_BANK_TEXT");
-
uint8 tabId;
- recv_data >> tabId;
-
std::string text;
- recv_data >> text;
+ recvData >> tabId >> text;
+
+ sLog->outDebug(LOG_FILTER_GUILD, "CMSG_SET_GUILD_BANK_TEXT [%s]: TabId: %u, Text: %s", GetPlayerInfo().c_str(), tabId, text.c_str());
- if (Guild* guild = _GetPlayerGuild(this))
+ if (Guild* guild = GetPlayer()->GetGuild())
guild->SetBankTabText(tabId, text);
}
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index 614e0064132..6dc7dc427d3 100755
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -28,13 +28,13 @@
#include "ObjectAccessor.h"
#include "SpellInfo.h"
-void WorldSession::HandleSplitItemOpcode(WorldPacket & recv_data)
+void WorldSession::HandleSplitItemOpcode(WorldPacket & recvData)
{
//sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_SPLIT_ITEM");
uint8 srcbag, srcslot, dstbag, dstslot;
uint32 count;
- recv_data >> srcbag >> srcslot >> dstbag >> dstslot >> count;
+ recvData >> srcbag >> srcslot >> dstbag >> dstslot >> count;
//sLog->outDebug("STORAGE: receive srcbag = %u, srcslot = %u, dstbag = %u, dstslot = %u, count = %u", srcbag, srcslot, dstbag, dstslot, count);
uint16 src = ((srcbag << 8) | srcslot);
@@ -61,12 +61,12 @@ void WorldSession::HandleSplitItemOpcode(WorldPacket & recv_data)
_player->SplitItem(src, dst, count);
}
-void WorldSession::HandleSwapInvItemOpcode(WorldPacket & recv_data)
+void WorldSession::HandleSwapInvItemOpcode(WorldPacket & recvData)
{
//sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_SWAP_INV_ITEM");
uint8 srcslot, dstslot;
- recv_data >> dstslot >> srcslot;
+ recvData >> dstslot >> srcslot;
//sLog->outDebug("STORAGE: receive srcslot = %u, dstslot = %u", srcslot, dstslot);
// prevent attempt swap same item to current position generated by client at special checting sequence
@@ -91,11 +91,11 @@ void WorldSession::HandleSwapInvItemOpcode(WorldPacket & recv_data)
_player->SwapItem(src, dst);
}
-void WorldSession::HandleAutoEquipItemSlotOpcode(WorldPacket & recv_data)
+void WorldSession::HandleAutoEquipItemSlotOpcode(WorldPacket & recvData)
{
uint64 itemguid;
uint8 dstslot;
- recv_data >> itemguid >> dstslot;
+ recvData >> itemguid >> dstslot;
// cheating attempt, client should never send opcode in that case
if (!Player::IsEquipmentPos(INVENTORY_SLOT_BAG_0, dstslot))
@@ -110,12 +110,12 @@ void WorldSession::HandleAutoEquipItemSlotOpcode(WorldPacket & recv_data)
_player->SwapItem(item->GetPos(), dstpos);
}
-void WorldSession::HandleSwapItem(WorldPacket & recv_data)
+void WorldSession::HandleSwapItem(WorldPacket & recvData)
{
//sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_SWAP_ITEM");
uint8 dstbag, dstslot, srcbag, srcslot;
- recv_data >> dstbag >> dstslot >> srcbag >> srcslot;
+ recvData >> dstbag >> dstslot >> srcbag >> srcslot;
//sLog->outDebug("STORAGE: receive srcbag = %u, srcslot = %u, dstbag = %u, dstslot = %u", srcbag, srcslot, dstbag, dstslot);
uint16 src = ((srcbag << 8) | srcslot);
@@ -140,12 +140,12 @@ void WorldSession::HandleSwapItem(WorldPacket & recv_data)
_player->SwapItem(src, dst);
}
-void WorldSession::HandleAutoEquipItemOpcode(WorldPacket & recv_data)
+void WorldSession::HandleAutoEquipItemOpcode(WorldPacket & recvData)
{
//sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_AUTOEQUIP_ITEM");
uint8 srcbag, srcslot;
- recv_data >> srcbag >> srcslot;
+ recvData >> srcbag >> srcslot;
//sLog->outDebug("STORAGE: receive srcbag = %u, srcslot = %u", srcbag, srcslot);
Item* pSrcItem = _player->GetItemByPos(srcbag, srcslot);
@@ -234,12 +234,12 @@ void WorldSession::HandleAutoEquipItemOpcode(WorldPacket & recv_data)
}
}
-void WorldSession::HandleDestroyItemOpcode(WorldPacket & recv_data)
+void WorldSession::HandleDestroyItemOpcode(WorldPacket & recvData)
{
//sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_DESTROYITEM");
uint8 bag, slot, count, data1, data2, data3;
- recv_data >> bag >> slot >> count >> data1 >> data2 >> data3;
+ recvData >> bag >> slot >> count >> data1 >> data2 >> data3;
//sLog->outDebug("STORAGE: receive bag = %u, slot = %u, count = %u", bag, slot, count);
uint16 pos = (bag << 8) | slot;
@@ -278,11 +278,11 @@ void WorldSession::HandleDestroyItemOpcode(WorldPacket & recv_data)
}
// Only _static_ data send in this packet !!!
-void WorldSession::HandleItemQuerySingleOpcode(WorldPacket & recv_data)
+void WorldSession::HandleItemQuerySingleOpcode(WorldPacket & recvData)
{
//sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_ITEM_QUERY_SINGLE");
uint32 item;
- recv_data >> item;
+ recvData >> item;
sLog->outInfo(LOG_FILTER_NETWORKIO, "STORAGE: Item Query = %u", item);
@@ -437,12 +437,12 @@ void WorldSession::HandleItemQuerySingleOpcode(WorldPacket & recv_data)
}
}
-void WorldSession::HandleReadItem(WorldPacket & recv_data)
+void WorldSession::HandleReadItem(WorldPacket & recvData)
{
//sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_READ_ITEM");
uint8 bag, slot;
- recv_data >> bag >> slot;
+ recvData >> bag >> slot;
//sLog->outInfo(LOG_FILTER_NETWORKIO, "STORAGE: Read bag = %u, slot = %u", bag, slot);
Item* pItem = _player->GetItemByPos(bag, slot);
@@ -470,26 +470,26 @@ void WorldSession::HandleReadItem(WorldPacket & recv_data)
_player->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL);
}
-void WorldSession::HandlePageQuerySkippedOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePageQuerySkippedOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_PAGE_TEXT_QUERY");
uint32 itemid;
uint64 guid;
- recv_data >> itemid >> guid;
+ recvData >> itemid >> guid;
sLog->outInfo(LOG_FILTER_NETWORKIO, "Packet Info: itemid: %u guidlow: %u guidentry: %u guidhigh: %u",
itemid, GUID_LOPART(guid), GUID_ENPART(guid), GUID_HIPART(guid));
}
-void WorldSession::HandleSellItemOpcode(WorldPacket & recv_data)
+void WorldSession::HandleSellItemOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_SELL_ITEM");
uint64 vendorguid, itemguid;
uint32 count;
- recv_data >> vendorguid >> itemguid >> count;
+ recvData >> vendorguid >> itemguid >> count;
if (!itemguid)
return;
@@ -597,13 +597,13 @@ void WorldSession::HandleSellItemOpcode(WorldPacket & recv_data)
return;
}
-void WorldSession::HandleBuybackItem(WorldPacket & recv_data)
+void WorldSession::HandleBuybackItem(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_BUYBACK_ITEM");
uint64 vendorguid;
uint32 slot;
- recv_data >> vendorguid >> slot;
+ recvData >> vendorguid >> slot;
Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(vendorguid, UNIT_NPC_FLAG_VENDOR);
if (!creature)
@@ -645,14 +645,14 @@ void WorldSession::HandleBuybackItem(WorldPacket & recv_data)
_player->SendBuyError(BUY_ERR_CANT_FIND_ITEM, creature, 0, 0);
}
-void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket & recv_data)
+void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_BUY_ITEM_IN_SLOT");
uint64 vendorguid, bagguid;
uint32 item, slot, count;
uint8 bagslot;
- recv_data >> vendorguid >> item >> slot >> bagguid >> bagslot >> count;
+ recvData >> vendorguid >> item >> slot >> bagguid >> bagslot >> count;
// client expects count starting at 1, and we send vendorslot+1 to client already
if (slot > 0)
@@ -687,14 +687,14 @@ void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket & recv_data)
GetPlayer()->BuyItemFromVendorSlot(vendorguid, slot, item, count, bag, bagslot);
}
-void WorldSession::HandleBuyItemOpcode(WorldPacket & recv_data)
+void WorldSession::HandleBuyItemOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_BUY_ITEM");
uint64 vendorguid;
uint32 item, slot, count;
uint8 unk1;
- recv_data >> vendorguid >> item >> slot >> count >> unk1;
+ recvData >> vendorguid >> item >> slot >> count >> unk1;
// client expects count starting at 1, and we send vendorslot+1 to client already
if (slot > 0)
@@ -705,11 +705,11 @@ void WorldSession::HandleBuyItemOpcode(WorldPacket & recv_data)
GetPlayer()->BuyItemFromVendorSlot(vendorguid, slot, item, count, NULL_BAG, NULL_SLOT);
}
-void WorldSession::HandleListInventoryOpcode(WorldPacket & recv_data)
+void WorldSession::HandleListInventoryOpcode(WorldPacket & recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
if (!GetPlayer()->isAlive())
return;
@@ -807,12 +807,12 @@ void WorldSession::SendListInventory(uint64 vendorGuid)
SendPacket(&data);
}
-void WorldSession::HandleAutoStoreBagItemOpcode(WorldPacket & recv_data)
+void WorldSession::HandleAutoStoreBagItemOpcode(WorldPacket & recvData)
{
//sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_AUTOSTORE_BAG_ITEM");
uint8 srcbag, srcslot, dstbag;
- recv_data >> srcbag >> srcslot >> dstbag;
+ recvData >> srcbag >> srcslot >> dstbag;
//sLog->outDebug("STORAGE: receive srcbag = %u, srcslot = %u, dstbag = %u", srcbag, srcslot, dstbag);
Item* pItem = _player->GetItemByPos(srcbag, srcslot);
@@ -983,7 +983,7 @@ void WorldSession::HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket)
}
}
-void WorldSession::HandleSetAmmoOpcode(WorldPacket & recv_data)
+void WorldSession::HandleSetAmmoOpcode(WorldPacket & recvData)
{
if (!GetPlayer()->isAlive())
{
@@ -994,7 +994,7 @@ void WorldSession::HandleSetAmmoOpcode(WorldPacket & recv_data)
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_SET_AMMO");
uint32 item;
- recv_data >> item;
+ recvData >> item;
if (!item)
GetPlayer()->RemoveAmmo();
@@ -1024,11 +1024,11 @@ void WorldSession::SendItemEnchantTimeUpdate(uint64 Playerguid, uint64 Itemguid,
SendPacket(&data);
}
-void WorldSession::HandleItemNameQueryOpcode(WorldPacket & recv_data)
+void WorldSession::HandleItemNameQueryOpcode(WorldPacket & recvData)
{
uint32 itemid;
- recv_data >> itemid;
- recv_data.read_skip<uint64>(); // guid
+ recvData >> itemid;
+ recvData.read_skip<uint64>(); // guid
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_ITEM_NAME_QUERY %u", itemid);
ItemSetNameEntry const* pName = sObjectMgr->GetItemSetNameEntry(itemid);
@@ -1048,14 +1048,14 @@ void WorldSession::HandleItemNameQueryOpcode(WorldPacket & recv_data)
}
}
-void WorldSession::HandleWrapItemOpcode(WorldPacket& recv_data)
+void WorldSession::HandleWrapItemOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode CMSG_WRAP_ITEM");
uint8 gift_bag, gift_slot, item_bag, item_slot;
- recv_data >> gift_bag >> gift_slot; // paper
- recv_data >> item_bag >> item_slot; // item
+ recvData >> gift_bag >> gift_slot; // paper
+ recvData >> item_bag >> item_slot; // item
sLog->outDebug(LOG_FILTER_NETWORKIO, "WRAP: receive gift_bag = %u, gift_slot = %u, item_bag = %u, item_slot = %u", gift_bag, gift_slot, item_bag, item_slot);
@@ -1159,19 +1159,19 @@ void WorldSession::HandleWrapItemOpcode(WorldPacket& recv_data)
_player->DestroyItemCount(gift, count, true);
}
-void WorldSession::HandleSocketOpcode(WorldPacket& recv_data)
+void WorldSession::HandleSocketOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_SOCKET_GEMS");
uint64 item_guid;
uint64 gem_guids[MAX_GEM_SOCKETS];
- recv_data >> item_guid;
+ recvData >> item_guid;
if (!item_guid)
return;
for (int i = 0; i < MAX_GEM_SOCKETS; ++i)
- recv_data >> gem_guids[i];
+ recvData >> gem_guids[i];
//cheat -> tried to socket same gem multiple times
if ((gem_guids[0] && (gem_guids[0] == gem_guids[1] || gem_guids[0] == gem_guids[2])) ||
@@ -1353,13 +1353,13 @@ void WorldSession::HandleSocketOpcode(WorldPacket& recv_data)
itemTarget->ClearSoulboundTradeable(_player); // clear tradeable flag
}
-void WorldSession::HandleCancelTempEnchantmentOpcode(WorldPacket& recv_data)
+void WorldSession::HandleCancelTempEnchantmentOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_CANCEL_TEMP_ENCHANTMENT");
uint32 eslot;
- recv_data >> eslot;
+ recvData >> eslot;
// apply only to equipped item
if (!Player::IsEquipmentPos(INVENTORY_SLOT_BAG_0, eslot))
@@ -1377,12 +1377,12 @@ void WorldSession::HandleCancelTempEnchantmentOpcode(WorldPacket& recv_data)
item->ClearEnchantment(TEMP_ENCHANTMENT_SLOT);
}
-void WorldSession::HandleItemRefundInfoRequest(WorldPacket& recv_data)
+void WorldSession::HandleItemRefundInfoRequest(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_ITEM_REFUND_INFO");
uint64 guid;
- recv_data >> guid; // item guid
+ recvData >> guid; // item guid
Item* item = _player->GetItemByGuid(guid);
if (!item)
@@ -1394,11 +1394,11 @@ void WorldSession::HandleItemRefundInfoRequest(WorldPacket& recv_data)
GetPlayer()->SendRefundInfo(item);
}
-void WorldSession::HandleItemRefund(WorldPacket &recv_data)
+void WorldSession::HandleItemRefund(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_ITEM_REFUND");
uint64 guid;
- recv_data >> guid; // item guid
+ recvData >> guid; // item guid
Item* item = _player->GetItemByGuid(guid);
if (!item)
@@ -1415,10 +1415,10 @@ void WorldSession::HandleItemRefund(WorldPacket &recv_data)
*
* This function is called when player clicks on item which has some flag set
*/
-void WorldSession::HandleItemTextQuery(WorldPacket & recv_data )
+void WorldSession::HandleItemTextQuery(WorldPacket & recvData )
{
uint64 itemGuid;
- recv_data >> itemGuid;
+ recvData >> itemGuid;
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_ITEM_TEXT_QUERY item guid: %u", GUID_LOPART(itemGuid));
diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp
index 96d21097e71..9926c75eb2a 100755
--- a/src/server/game/Handlers/LFGHandler.cpp
+++ b/src/server/game/Handlers/LFGHandler.cpp
@@ -44,13 +44,13 @@ void BuildPartyLockDungeonBlock(WorldPacket& data, const LfgLockPartyMap& lockMa
}
}
-void WorldSession::HandleLfgJoinOpcode(WorldPacket& recv_data)
+void WorldSession::HandleLfgJoinOpcode(WorldPacket& recvData)
{
if (!sLFGMgr->isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER) ||
(GetPlayer()->GetGroup() && GetPlayer()->GetGroup()->GetLeaderGUID() != GetPlayer()->GetGUID() &&
(GetPlayer()->GetGroup()->GetMembersCount() == MAXGROUPSIZE || !GetPlayer()->GetGroup()->isLFGGroup())))
{
- recv_data.rfinish();
+ recvData.rfinish();
return;
}
@@ -58,112 +58,112 @@ void WorldSession::HandleLfgJoinOpcode(WorldPacket& recv_data)
uint32 dungeon;
uint32 roles;
- recv_data >> roles;
- recv_data.read_skip<uint16>(); // uint8 (always 0) - uint8 (always 0)
- recv_data >> numDungeons;
+ recvData >> roles;
+ recvData.read_skip<uint16>(); // uint8 (always 0) - uint8 (always 0)
+ recvData >> numDungeons;
if (!numDungeons)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_JOIN [" UI64FMTD "] no dungeons selected", GetPlayer()->GetGUID());
- recv_data.rfinish();
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_JOIN [" UI64FMTD "] no dungeons selected", GetPlayer()->GetGUID());
+ recvData.rfinish();
return;
}
LfgDungeonSet newDungeons;
for (int8 i = 0; i < numDungeons; ++i)
{
- recv_data >> dungeon;
+ recvData >> dungeon;
newDungeons.insert((dungeon & 0x00FFFFFF)); // remove the type from the dungeon entry
}
- recv_data.read_skip<uint32>(); // for 0..uint8 (always 3) { uint8 (always 0) }
+ recvData.read_skip<uint32>(); // for 0..uint8 (always 3) { uint8 (always 0) }
std::string comment;
- recv_data >> comment;
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_JOIN [" UI64FMTD "] roles: %u, Dungeons: %u, Comment: %s", GetPlayer()->GetGUID(), roles, uint8(newDungeons.size()), comment.c_str());
+ recvData >> comment;
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_JOIN [" UI64FMTD "] roles: %u, Dungeons: %u, Comment: %s", GetPlayer()->GetGUID(), roles, uint8(newDungeons.size()), comment.c_str());
sLFGMgr->JoinLfg(GetPlayer(), uint8(roles), newDungeons, comment);
}
-void WorldSession::HandleLfgLeaveOpcode(WorldPacket& /*recv_data*/)
+void WorldSession::HandleLfgLeaveOpcode(WorldPacket& /*recvData*/)
{
Group* grp = GetPlayer()->GetGroup();
uint64 guid = GetPlayer()->GetGUID();
uint64 gguid = grp ? grp->GetGUID() : guid;
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_LEAVE [" UI64FMTD "] in group: %u", guid, grp ? 1 : 0);
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_LEAVE [" UI64FMTD "] in group: %u", guid, grp ? 1 : 0);
// Check cheating - only leader can leave the queue
if (!grp || grp->GetLeaderGUID() == GetPlayer()->GetGUID())
sLFGMgr->LeaveLfg(gguid);
}
-void WorldSession::HandleLfgProposalResultOpcode(WorldPacket& recv_data)
+void WorldSession::HandleLfgProposalResultOpcode(WorldPacket& recvData)
{
uint32 lfgGroupID; // Internal lfgGroupID
bool accept; // Accept to join?
- recv_data >> lfgGroupID;
- recv_data >> accept;
+ recvData >> lfgGroupID;
+ recvData >> accept;
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_PROPOSAL_RESULT [" UI64FMTD "] proposal: %u accept: %u", GetPlayer()->GetGUID(), lfgGroupID, accept ? 1 : 0);
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_PROPOSAL_RESULT [" UI64FMTD "] proposal: %u accept: %u", GetPlayer()->GetGUID(), lfgGroupID, accept ? 1 : 0);
sLFGMgr->UpdateProposal(lfgGroupID, GetPlayer()->GetGUID(), accept);
}
-void WorldSession::HandleLfgSetRolesOpcode(WorldPacket& recv_data)
+void WorldSession::HandleLfgSetRolesOpcode(WorldPacket& recvData)
{
uint8 roles;
- recv_data >> roles; // Player Group Roles
+ recvData >> roles; // Player Group Roles
uint64 guid = GetPlayer()->GetGUID();
Group* grp = GetPlayer()->GetGroup();
if (!grp)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_SET_ROLES [" UI64FMTD "] Not in group", guid);
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_SET_ROLES [" UI64FMTD "] Not in group", guid);
return;
}
uint64 gguid = grp->GetGUID();
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_SET_ROLES: Group [" UI64FMTD "], Player [" UI64FMTD "], Roles: %u", gguid, guid, roles);
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_SET_ROLES: Group [" UI64FMTD "], Player [" UI64FMTD "], Roles: %u", gguid, guid, roles);
sLFGMgr->UpdateRoleCheck(gguid, guid, roles);
}
-void WorldSession::HandleLfgSetCommentOpcode(WorldPacket& recv_data)
+void WorldSession::HandleLfgSetCommentOpcode(WorldPacket& recvData)
{
std::string comment;
- recv_data >> comment;
+ recvData >> comment;
uint64 guid = GetPlayer()->GetGUID();
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_SET_COMMENT [" UI64FMTD "] comment: %s", guid, comment.c_str());
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_SET_COMMENT [" UI64FMTD "] comment: %s", guid, comment.c_str());
sLFGMgr->SetComment(guid, comment);
}
-void WorldSession::HandleLfgSetBootVoteOpcode(WorldPacket& recv_data)
+void WorldSession::HandleLfgSetBootVoteOpcode(WorldPacket& recvData)
{
bool agree; // Agree to kick player
- recv_data >> agree;
+ recvData >> agree;
uint64 guid = GetPlayer()->GetGUID();
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_SET_BOOT_VOTE [" UI64FMTD "] agree: %u", guid, agree ? 1 : 0);
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_SET_BOOT_VOTE [" UI64FMTD "] agree: %u", guid, agree ? 1 : 0);
sLFGMgr->UpdateBoot(guid, agree);
}
-void WorldSession::HandleLfgTeleportOpcode(WorldPacket& recv_data)
+void WorldSession::HandleLfgTeleportOpcode(WorldPacket& recvData)
{
bool out;
- recv_data >> out;
+ recvData >> out;
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_TELEPORT [" UI64FMTD "] out: %u", GetPlayer()->GetGUID(), out ? 1 : 0);
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_TELEPORT [" UI64FMTD "] out: %u", GetPlayer()->GetGUID(), out ? 1 : 0);
sLFGMgr->TeleportPlayer(GetPlayer(), out, true);
}
-void WorldSession::HandleLfgPlayerLockInfoRequestOpcode(WorldPacket& /*recv_data*/)
+void WorldSession::HandleLfgPlayerLockInfoRequestOpcode(WorldPacket& /*recvData*/)
{
uint64 guid = GetPlayer()->GetGUID();
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_PLAYER_LOCK_INFO_REQUEST [" UI64FMTD "]", guid);
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_PLAYER_LOCK_INFO_REQUEST [" UI64FMTD "]", guid);
// Get Random dungeons that can be done at a certain level and expansion
LfgDungeonSet randomDungeons;
uint8 level = GetPlayer()->getLevel();
uint8 expansion = GetPlayer()->GetSession()->Expansion();
- LFGDungeonMap& LfgDungeons = sLFGMgr->GetLFGDungeonMap();
- for (LFGDungeonMap::const_iterator itr = LfgDungeons.begin(); itr != LfgDungeons.end(); ++itr)
+ LFGDungeonContainer& LfgDungeons = sLFGMgr->GetLFGDungeonMap();
+ for (LFGDungeonContainer::const_iterator itr = LfgDungeons.begin(); itr != LfgDungeons.end(); ++itr)
{
LFGDungeonData const& dungeon = itr->second;
if ((dungeon.type == LFG_TYPE_RANDOM || (dungeon.seasonal && sLFGMgr->IsSeasonActive(dungeon.id)))
@@ -176,7 +176,7 @@ void WorldSession::HandleLfgPlayerLockInfoRequestOpcode(WorldPacket& /*recv_data
uint32 rsize = uint32(randomDungeons.size());
uint32 lsize = uint32(lock.size());
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_PLAYER_INFO [" UI64FMTD "]", guid);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_PLAYER_INFO [" UI64FMTD "]", guid);
WorldPacket data(SMSG_LFG_PLAYER_INFO, 1 + rsize * (4 + 1 + 4 + 4 + 4 + 4 + 1 + 4 + 4 + 4) + 4 + lsize * (1 + 4 + 4 + 4 + 4 + 1 + 4 + 4 + 4));
data << uint8(randomDungeons.size()); // Random Dungeon count
@@ -231,10 +231,10 @@ void WorldSession::HandleLfgPlayerLockInfoRequestOpcode(WorldPacket& /*recv_data
SendPacket(&data);
}
-void WorldSession::HandleLfgPartyLockInfoRequestOpcode(WorldPacket& /*recv_data*/)
+void WorldSession::HandleLfgPartyLockInfoRequestOpcode(WorldPacket& /*recvData*/)
{
uint64 guid = GetPlayer()->GetGUID();
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_PARTY_LOCK_INFO_REQUEST [" UI64FMTD "]", guid);
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_PARTY_LOCK_INFO_REQUEST [" UI64FMTD "]", guid);
Group* grp = GetPlayer()->GetGroup();
if (!grp)
@@ -259,25 +259,25 @@ void WorldSession::HandleLfgPartyLockInfoRequestOpcode(WorldPacket& /*recv_data
for (LfgLockPartyMap::const_iterator it = lockMap.begin(); it != lockMap.end(); ++it)
size += 8 + 4 + uint32(it->second.size()) * (4 + 4);
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_PARTY_INFO [" UI64FMTD "]", guid);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_PARTY_INFO [" UI64FMTD "]", guid);
WorldPacket data(SMSG_LFG_PARTY_INFO, 1 + size);
BuildPartyLockDungeonBlock(data, lockMap);
SendPacket(&data);
}
-void WorldSession::HandleLfrJoinOpcode(WorldPacket& recv_data)
+void WorldSession::HandleLfrJoinOpcode(WorldPacket& recvData)
{
uint32 entry; // Raid id to search
- recv_data >> entry;
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_LFR_JOIN [" UI64FMTD "] dungeon entry: %u", GetPlayer()->GetGUID(), entry);
+ recvData >> entry;
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_LFR_JOIN [" UI64FMTD "] dungeon entry: %u", GetPlayer()->GetGUID(), entry);
//SendLfrUpdateListOpcode(entry);
}
-void WorldSession::HandleLfrLeaveOpcode(WorldPacket& recv_data)
+void WorldSession::HandleLfrLeaveOpcode(WorldPacket& recvData)
{
uint32 dungeonId; // Raid id queue to leave
- recv_data >> dungeonId;
- sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LFG_LFR_LEAVE [" UI64FMTD "] dungeonId: %u", GetPlayer()->GetGUID(), dungeonId);
+ recvData >> dungeonId;
+ sLog->outDebug(LOG_FILTER_LFG, "CMSG_LFG_LFR_LEAVE [" UI64FMTD "] dungeonId: %u", GetPlayer()->GetGUID(), dungeonId);
//sLFGMgr->LeaveLfr(GetPlayer(), dungeonId);
}
@@ -295,7 +295,9 @@ void WorldSession::SendLfgUpdatePlayer(const LfgUpdateData& updateData)
queued = true;
extrainfo = true;
break;
- //case LFG_UPDATETYPE_CLEAR_LOCK_LIST: // TODO: Sometimes has extrainfo - Check ocurrences...
+ case LFG_UPDATETYPE_UPDATE_STATUS:
+ extrainfo = size > 0;
+ break;
case LFG_UPDATETYPE_PROPOSAL_BEGIN:
extrainfo = true;
break;
@@ -303,7 +305,7 @@ void WorldSession::SendLfgUpdatePlayer(const LfgUpdateData& updateData)
break;
}
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_UPDATE_PLAYER [" UI64FMTD "] updatetype: %u", guid, updateData.updateType);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_UPDATE_PLAYER [" UI64FMTD "] updatetype: %u", guid, updateData.updateType);
WorldPacket data(SMSG_LFG_UPDATE_PLAYER, 1 + 1 + (extrainfo ? 1 : 0) * (1 + 1 + 1 + 1 + size * 4 + updateData.comment.length()));
data << uint8(updateData.updateType); // Lfg Update type
data << uint8(extrainfo); // Extra info
@@ -340,8 +342,9 @@ void WorldSession::SendLfgUpdateParty(const LfgUpdateData& updateData)
join = true;
queued = true;
break;
- case LFG_UPDATETYPE_CLEAR_LOCK_LIST:
- // join = true; // TODO: Sometimes queued and extrainfo - Check ocurrences...
+ case LFG_UPDATETYPE_UPDATE_STATUS:
+ extrainfo = size > 0;
+ join = true;
queued = true;
break;
case LFG_UPDATETYPE_PROPOSAL_BEGIN:
@@ -352,7 +355,7 @@ void WorldSession::SendLfgUpdateParty(const LfgUpdateData& updateData)
break;
}
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_UPDATE_PARTY [" UI64FMTD "] updatetype: %u", guid, updateData.updateType);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_UPDATE_PARTY [" UI64FMTD "] updatetype: %u", guid, updateData.updateType);
WorldPacket data(SMSG_LFG_UPDATE_PARTY, 1 + 1 + (extrainfo ? 1 : 0) * (1 + 1 + 1 + 1 + 1 + size * 4 + updateData.comment.length()));
data << uint8(updateData.updateType); // Lfg Update type
data << uint8(extrainfo); // Extra info
@@ -376,7 +379,7 @@ void WorldSession::SendLfgUpdateParty(const LfgUpdateData& updateData)
void WorldSession::SendLfgRoleChosen(uint64 guid, uint8 roles)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_ROLE_CHOSEN [" UI64FMTD "] guid: [" UI64FMTD "] roles: %u", GetPlayer()->GetGUID(), guid, roles);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_ROLE_CHOSEN [" UI64FMTD "] guid: [" UI64FMTD "] roles: %u", GetPlayer()->GetGUID(), guid, roles);
WorldPacket data(SMSG_LFG_ROLE_CHOSEN, 8 + 1 + 4);
data << uint64(guid); // Guid
@@ -393,7 +396,7 @@ void WorldSession::SendLfgRoleCheckUpdate(const LfgRoleCheck& roleCheck)
else
dungeons = roleCheck.dungeons;
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_ROLE_CHECK_UPDATE [" UI64FMTD "]", GetPlayer()->GetGUID());
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_ROLE_CHECK_UPDATE [" UI64FMTD "]", GetPlayer()->GetGUID());
WorldPacket data(SMSG_LFG_ROLE_CHECK_UPDATE, 4 + 1 + 1 + dungeons.size() * 4 + 1 + roleCheck.roles.size() * (8 + 1 + 4 + 1));
data << uint32(roleCheck.state); // Check result
@@ -443,7 +446,7 @@ void WorldSession::SendLfgJoinResult(const LfgJoinResultData& joinData)
for (LfgLockPartyMap::const_iterator it = joinData.lockmap.begin(); it != joinData.lockmap.end(); ++it)
size += 8 + 4 + uint32(it->second.size()) * (4 + 4);
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_JOIN_RESULT [" UI64FMTD "] checkResult: %u checkValue: %u", GetPlayer()->GetGUID(), joinData.result, joinData.state);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_JOIN_RESULT [" UI64FMTD "] checkResult: %u checkValue: %u", GetPlayer()->GetGUID(), joinData.result, joinData.state);
WorldPacket data(SMSG_LFG_JOIN_RESULT, 4 + 4 + size);
data << uint32(joinData.result); // Check Result
data << uint32(joinData.state); // Check Value
@@ -454,7 +457,7 @@ void WorldSession::SendLfgJoinResult(const LfgJoinResultData& joinData)
void WorldSession::SendLfgQueueStatus(const LfgQueueStatusData& queueData)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_QUEUE_STATUS [" UI64FMTD "] dungeon: %u - waitTime: %d - avgWaitTime: %d - waitTimeTanks: %d - waitTimeHealer: %d - waitTimeDps: %d - queuedTime: %u - tanks: %u - healers: %u - dps: %u",
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_QUEUE_STATUS [" UI64FMTD "] dungeon: %u - waitTime: %d - avgWaitTime: %d - waitTimeTanks: %d - waitTimeHealer: %d - waitTimeDps: %d - queuedTime: %u - tanks: %u - healers: %u - dps: %u",
GetPlayer()->GetGUID(), queueData.dungeonId, queueData.waitTime, queueData.waitTimeAvg, queueData.waitTimeTank, queueData.waitTimeHealer, queueData.waitTimeDps, queueData.queuedTime, queueData.tanks, queueData.healers, queueData.dps);
WorldPacket data(SMSG_LFG_QUEUE_STATUS, 4 + 4 + 4 + 4 + 4 +4 + 1 + 1 + 1 + 4);
@@ -478,7 +481,7 @@ void WorldSession::SendLfgPlayerReward(uint32 rdungeonEntry, uint32 sdungeonEntr
uint8 itemNum = uint8(quest ? quest->GetRewItemsCount() : 0);
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_PLAYER_REWARD [" UI64FMTD "] rdungeonEntry: %u - sdungeonEntry: %u - done: %u", GetPlayer()->GetGUID(), rdungeonEntry, sdungeonEntry, done);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_PLAYER_REWARD [" UI64FMTD "] rdungeonEntry: %u - sdungeonEntry: %u - done: %u", GetPlayer()->GetGUID(), rdungeonEntry, sdungeonEntry, done);
WorldPacket data(SMSG_LFG_PLAYER_REWARD, 4 + 4 + 1 + 4 + 4 + 4 + 4 + 4 + 1 + itemNum * (4 + 4 + 4));
data << uint32(rdungeonEntry); // Random Dungeon Finished
data << uint32(sdungeonEntry); // Dungeon Finished
@@ -510,7 +513,7 @@ void WorldSession::SendLfgBootProposalUpdate(const LfgPlayerBoot& boot)
uint8 votesNum = 0;
uint8 agreeNum = 0;
uint32 secsleft = uint8((boot.cancelTime - time(NULL)) / 1000);
- for (LfgAnswerMap::const_iterator it = boot.votes.begin(); it != boot.votes.end(); ++it)
+ for (LfgAnswerContainer::const_iterator it = boot.votes.begin(); it != boot.votes.end(); ++it)
{
if (it->second != LFG_ANSWER_PENDING)
{
@@ -519,7 +522,7 @@ void WorldSession::SendLfgBootProposalUpdate(const LfgPlayerBoot& boot)
++agreeNum;
}
}
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_BOOT_PROPOSAL_UPDATE [" UI64FMTD "] inProgress: %u - didVote: %u - agree: %u - victim: [" UI64FMTD "] votes: %u - agrees: %u - left: %u - needed: %u - reason %s",
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_BOOT_PROPOSAL_UPDATE [" UI64FMTD "] inProgress: %u - didVote: %u - agree: %u - victim: [" UI64FMTD "] votes: %u - agrees: %u - left: %u - needed: %u - reason %s",
guid, uint8(boot.inProgress), uint8(playerVote != LFG_ANSWER_PENDING), uint8(playerVote == LFG_ANSWER_AGREE), boot.victim, votesNum, agreeNum, secsleft, LFG_GROUP_KICK_VOTES_NEEDED, boot.reason.c_str());
WorldPacket data(SMSG_LFG_BOOT_PROPOSAL_UPDATE, 1 + 1 + 1 + 8 + 4 + 4 + 4 + 4 + boot.reason.length());
data << uint8(boot.inProgress); // Vote in progress
@@ -541,7 +544,7 @@ void WorldSession::SendLfgUpdateProposal(uint32 proposalId, LfgProposal const& p
bool silent = !proposal.isNew && gguid == proposal.group;
uint32 dungeonEntry = proposal.dungeonId;
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_PROPOSAL_UPDATE [" UI64FMTD "] state: %u", guid, proposal.state);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_PROPOSAL_UPDATE [" UI64FMTD "] state: %u", guid, proposal.state);
WorldPacket data(SMSG_LFG_PROPOSAL_UPDATE, 4 + 1 + 4 + 4 + 1 + 1 + proposal.players.size() * (4 + 1 + 1 + 1 + 1 +1));
// show random dungeon if player selected random dungeon and it's not lfg group
@@ -562,7 +565,7 @@ void WorldSession::SendLfgUpdateProposal(uint32 proposalId, LfgProposal const& p
data << uint8(silent); // Show proposal window
data << uint8(proposal.players.size()); // Group size
- for (LfgProposalPlayerMap::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
+ for (LfgProposalPlayerContainer::const_iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
{
LfgProposalPlayer const& player = it->second;
data << uint32(player.role); // Role
@@ -585,7 +588,7 @@ void WorldSession::SendLfgUpdateProposal(uint32 proposalId, LfgProposal const& p
void WorldSession::SendLfgLfrList(bool update)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_LFR_LIST [" UI64FMTD "] update: %u", GetPlayer()->GetGUID(), update ? 1 : 0);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_LFR_LIST [" UI64FMTD "] update: %u", GetPlayer()->GetGUID(), update ? 1 : 0);
WorldPacket data(SMSG_LFG_UPDATE_SEARCH, 1);
data << uint8(update); // In Lfg Queue?
SendPacket(&data);
@@ -593,14 +596,14 @@ void WorldSession::SendLfgLfrList(bool update)
void WorldSession::SendLfgDisabled()
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_DISABLED [" UI64FMTD "]", GetPlayer()->GetGUID());
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_DISABLED [" UI64FMTD "]", GetPlayer()->GetGUID());
WorldPacket data(SMSG_LFG_DISABLED, 0);
SendPacket(&data);
}
void WorldSession::SendLfgOfferContinue(uint32 dungeonEntry)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_OFFER_CONTINUE [" UI64FMTD "] dungeon entry: %u", GetPlayer()->GetGUID(), dungeonEntry);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_OFFER_CONTINUE [" UI64FMTD "] dungeon entry: %u", GetPlayer()->GetGUID(), dungeonEntry);
WorldPacket data(SMSG_LFG_OFFER_CONTINUE, 4);
data << uint32(dungeonEntry);
SendPacket(&data);
@@ -608,12 +611,44 @@ void WorldSession::SendLfgOfferContinue(uint32 dungeonEntry)
void WorldSession::SendLfgTeleportError(uint8 err)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "SMSG_LFG_TELEPORT_DENIED [" UI64FMTD "] reason: %u", GetPlayer()->GetGUID(), err);
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_TELEPORT_DENIED [" UI64FMTD "] reason: %u", GetPlayer()->GetGUID(), err);
WorldPacket data(SMSG_LFG_TELEPORT_DENIED, 4);
data << uint32(err); // Error
SendPacket(&data);
}
+void WorldSession::HandleLfgGetStatus(WorldPacket& /*recvData*/)
+{
+ uint64 guid = GetPlayer()->GetGUID();
+ sLog->outDebug(LOG_FILTER_LFG, "SMSG_LFG_GET_STATUS [" UI64FMTD "]", guid);
+
+ LfgUpdateData updateData = LfgUpdateData(LFG_UPDATETYPE_UPDATE_STATUS);
+ LfgState state = sLFGMgr->GetLfgStatus(guid, updateData);
+
+ if (state == LFG_STATE_NONE || updateData.dungeons.empty())
+ {
+ SendLfgUpdatePlayer(updateData);
+ SendLfgUpdateParty(updateData);
+ return;
+ }
+
+ if (state != LFG_STATE_QUEUED)
+ return;
+
+ if (GetPlayer()->GetGroup())
+ {
+ SendLfgUpdateParty(updateData);
+ updateData.dungeons.clear();
+ SendLfgUpdatePlayer(updateData);
+ }
+ else
+ {
+ SendLfgUpdatePlayer(updateData);
+ updateData.dungeons.clear();
+ SendLfgUpdateParty(updateData);
+ }
+}
+
/*
void WorldSession::SendLfrUpdateListOpcode(uint32 dungeonEntry)
{
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp
index ebeac2d486b..83deaaa1bc6 100755
--- a/src/server/game/Handlers/LootHandler.cpp
+++ b/src/server/game/Handlers/LootHandler.cpp
@@ -30,7 +30,7 @@
#include "World.h"
#include "Util.h"
-void WorldSession::HandleAutostoreLootItemOpcode(WorldPacket & recv_data)
+void WorldSession::HandleAutostoreLootItemOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_AUTOSTORE_LOOT_ITEM");
Player* player = GetPlayer();
@@ -38,7 +38,7 @@ void WorldSession::HandleAutostoreLootItemOpcode(WorldPacket & recv_data)
Loot* loot = NULL;
uint8 lootSlot = 0;
- recv_data >> lootSlot;
+ recvData >> lootSlot;
if (IS_GAMEOBJECT_GUID(lguid))
{
@@ -94,7 +94,7 @@ void WorldSession::HandleAutostoreLootItemOpcode(WorldPacket & recv_data)
player->StoreLootItem(lootSlot, loot);
}
-void WorldSession::HandleLootMoneyOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleLootMoneyOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_LOOT_MONEY");
@@ -202,12 +202,12 @@ void WorldSession::HandleLootMoneyOpcode(WorldPacket & /*recv_data*/)
}
}
-void WorldSession::HandleLootOpcode(WorldPacket & recv_data)
+void WorldSession::HandleLootOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_LOOT");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
// Check possible cheat
if (!_player->isAlive())
@@ -428,12 +428,12 @@ void WorldSession::DoLootRelease(uint64 lguid)
loot->RemoveLooter(player->GetGUID());
}
-void WorldSession::HandleLootMasterGiveOpcode(WorldPacket & recv_data)
+void WorldSession::HandleLootMasterGiveOpcode(WorldPacket & recvData)
{
uint8 slotid;
uint64 lootguid, target_playerguid;
- recv_data >> lootguid >> slotid >> target_playerguid;
+ recvData >> lootguid >> slotid >> target_playerguid;
if (!_player->GetGroup() || _player->GetGroup()->GetLooterGuid() != _player->GetGUID())
{
diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp
index c6b5377fe36..5a7a3b52b56 100755
--- a/src/server/game/Handlers/MailHandler.cpp
+++ b/src/server/game/Handlers/MailHandler.cpp
@@ -29,29 +29,29 @@
#include "Item.h"
#include "AccountMgr.h"
-void WorldSession::HandleSendMail(WorldPacket & recv_data)
+void WorldSession::HandleSendMail(WorldPacket & recvData)
{
uint64 mailbox, unk3;
std::string receiver, subject, body;
uint32 unk1, unk2, money, COD;
uint8 unk4;
- recv_data >> mailbox;
- recv_data >> receiver;
+ recvData >> mailbox;
+ recvData >> receiver;
- recv_data >> subject;
+ recvData >> subject;
- recv_data >> body;
+ recvData >> body;
- recv_data >> unk1; // stationery?
- recv_data >> unk2; // 0x00000000
+ recvData >> unk1; // stationery?
+ recvData >> unk2; // 0x00000000
uint8 items_count;
- recv_data >> items_count; // attached items count
+ recvData >> items_count; // attached items count
if (items_count > MAX_MAIL_ITEMS) // client limit
{
GetPlayer()->SendMailResult(0, MAIL_SEND, MAIL_ERR_TOO_MANY_ATTACHMENTS);
- recv_data.rfinish(); // set to end to avoid warnings spam
+ recvData.rfinish(); // set to end to avoid warnings spam
return;
}
@@ -59,13 +59,13 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data)
for (uint8 i = 0; i < items_count; ++i)
{
- recv_data.read_skip<uint8>(); // item slot in mail, not used
- recv_data >> itemGUIDs[i];
+ recvData.read_skip<uint8>(); // item slot in mail, not used
+ recvData >> itemGUIDs[i];
}
- recv_data >> money >> COD; // money and cod
- recv_data >> unk3; // const 0
- recv_data >> unk4; // const 0
+ recvData >> money >> COD; // money and cod
+ recvData >> unk3; // const 0
+ recvData >> unk4; // const 0
// packet read complete, now do check
@@ -302,12 +302,12 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data)
}
//called when mail is read
-void WorldSession::HandleMailMarkAsRead(WorldPacket & recv_data)
+void WorldSession::HandleMailMarkAsRead(WorldPacket & recvData)
{
uint64 mailbox;
uint32 mailId;
- recv_data >> mailbox;
- recv_data >> mailId;
+ recvData >> mailbox;
+ recvData >> mailId;
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
@@ -325,13 +325,13 @@ void WorldSession::HandleMailMarkAsRead(WorldPacket & recv_data)
}
//called when client deletes mail
-void WorldSession::HandleMailDelete(WorldPacket & recv_data)
+void WorldSession::HandleMailDelete(WorldPacket & recvData)
{
uint64 mailbox;
uint32 mailId;
- recv_data >> mailbox;
- recv_data >> mailId;
- recv_data.read_skip<uint32>(); // mailTemplateId
+ recvData >> mailbox;
+ recvData >> mailId;
+ recvData.read_skip<uint32>(); // mailTemplateId
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
@@ -353,13 +353,13 @@ void WorldSession::HandleMailDelete(WorldPacket & recv_data)
player->SendMailResult(mailId, MAIL_DELETED, MAIL_OK);
}
-void WorldSession::HandleMailReturnToSender(WorldPacket & recv_data)
+void WorldSession::HandleMailReturnToSender(WorldPacket & recvData)
{
uint64 mailbox;
uint32 mailId;
- recv_data >> mailbox;
- recv_data >> mailId;
- recv_data.read_skip<uint64>(); // original sender GUID for return to, not used
+ recvData >> mailbox;
+ recvData >> mailId;
+ recvData.read_skip<uint64>(); // original sender GUID for return to, not used
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
@@ -417,14 +417,14 @@ void WorldSession::HandleMailReturnToSender(WorldPacket & recv_data)
}
//called when player takes item attached in mail
-void WorldSession::HandleMailTakeItem(WorldPacket & recv_data)
+void WorldSession::HandleMailTakeItem(WorldPacket & recvData)
{
uint64 mailbox;
uint32 mailId;
uint32 itemId;
- recv_data >> mailbox;
- recv_data >> mailId;
- recv_data >> itemId; // item guid low
+ recvData >> mailbox;
+ recvData >> mailId;
+ recvData >> itemId; // item guid low
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
@@ -513,12 +513,12 @@ void WorldSession::HandleMailTakeItem(WorldPacket & recv_data)
player->SendMailResult(mailId, MAIL_ITEM_TAKEN, MAIL_ERR_EQUIP_ERROR, msg);
}
-void WorldSession::HandleMailTakeMoney(WorldPacket & recv_data)
+void WorldSession::HandleMailTakeMoney(WorldPacket & recvData)
{
uint64 mailbox;
uint32 mailId;
- recv_data >> mailbox;
- recv_data >> mailId;
+ recvData >> mailbox;
+ recvData >> mailId;
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
@@ -547,10 +547,10 @@ void WorldSession::HandleMailTakeMoney(WorldPacket & recv_data)
}
//called when player lists his received mails
-void WorldSession::HandleGetMailList(WorldPacket & recv_data)
+void WorldSession::HandleGetMailList(WorldPacket & recvData)
{
uint64 mailbox;
- recv_data >> mailbox;
+ recvData >> mailbox;
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
@@ -669,13 +669,13 @@ void WorldSession::HandleGetMailList(WorldPacket & recv_data)
}
//used when player copies mail body to his inventory
-void WorldSession::HandleMailCreateTextItem(WorldPacket & recv_data)
+void WorldSession::HandleMailCreateTextItem(WorldPacket & recvData)
{
uint64 mailbox;
uint32 mailId;
- recv_data >> mailbox;
- recv_data >> mailId;
+ recvData >> mailbox;
+ recvData >> mailId;
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX))
return;
@@ -735,7 +735,7 @@ void WorldSession::HandleMailCreateTextItem(WorldPacket & recv_data)
}
//TODO Fix me! ... this void has probably bad condition, but good data are sent
-void WorldSession::HandleQueryNextMailTime(WorldPacket & /*recv_data*/)
+void WorldSession::HandleQueryNextMailTime(WorldPacket & /*recvData*/)
{
WorldPacket data(MSG_QUERY_NEXT_MAIL_TIME, 8);
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 759a4359076..be31603a0ff 100755
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -31,7 +31,7 @@
#include "InstanceSaveMgr.h"
#include "ObjectMgr.h"
-void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: got MSG_MOVE_WORLDPORT_ACK.");
HandleMoveWorldportAckOpcode();
@@ -188,15 +188,15 @@ void WorldSession::HandleMoveWorldportAckOpcode()
GetPlayer()->ProcessDelayedOperations();
}
-void WorldSession::HandleMoveTeleportAck(WorldPacket& recv_data)
+void WorldSession::HandleMoveTeleportAck(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "MSG_MOVE_TELEPORT_ACK");
uint64 guid;
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
uint32 flags, time;
- recv_data >> flags >> time;
+ recvData >> flags >> time;
sLog->outDebug(LOG_FILTER_NETWORKIO, "Guid " UI64FMTD, guid);
sLog->outDebug(LOG_FILTER_NETWORKIO, "Flags %u, time %u", flags, time/IN_MILLISECONDS);
@@ -407,9 +407,9 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recvData)
}
}
-void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recv_data)
+void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recvData)
{
- uint32 opcode = recv_data.GetOpcode();
+ uint32 opcode = recvData.GetOpcode();
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd %s (%u, 0x%X) opcode", LookupOpcodeName(opcode), opcode, opcode);
/* extract packet */
@@ -417,24 +417,24 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recv_data)
uint32 unk1;
float newspeed;
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
// now can skip not our packet
if (_player->GetGUID() != guid)
{
- recv_data.rfinish(); // prevent warnings spam
+ recvData.rfinish(); // prevent warnings spam
return;
}
// continue parse packet
- recv_data >> unk1; // counter or moveEvent
+ recvData >> unk1; // counter or moveEvent
MovementInfo movementInfo;
movementInfo.guid = guid;
- ReadMovementInfo(recv_data, &movementInfo);
+ ReadMovementInfo(recvData, &movementInfo);
- recv_data >> newspeed;
+ recvData >> newspeed;
/*----------------*/
// client ACK send one packet for mounted/run case and need skip all except last from its
@@ -486,12 +486,12 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recv_data)
}
}
-void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recv_data)
+void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_SET_ACTIVE_MOVER");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
if (GetPlayer()->IsInWorld())
{
@@ -500,22 +500,22 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recv_data)
}
}
-void WorldSession::HandleMoveNotActiveMover(WorldPacket &recv_data)
+void WorldSession::HandleMoveNotActiveMover(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_MOVE_NOT_ACTIVE_MOVER");
uint64 old_mover_guid;
- recv_data.readPackGUID(old_mover_guid);
+ recvData.readPackGUID(old_mover_guid);
MovementInfo mi;
- ReadMovementInfo(recv_data, &mi);
+ ReadMovementInfo(recvData, &mi);
mi.guid = old_mover_guid;
_player->m_movementInfo = mi;
}
-void WorldSession::HandleMountSpecialAnimOpcode(WorldPacket& /*recv_data*/)
+void WorldSession::HandleMountSpecialAnimOpcode(WorldPacket& /*recvData*/)
{
WorldPacket data(SMSG_MOUNTSPECIAL_ANIM, 8);
data << uint64(GetPlayer()->GetGUID());
@@ -523,20 +523,20 @@ void WorldSession::HandleMountSpecialAnimOpcode(WorldPacket& /*recv_data*/)
GetPlayer()->SendMessageToSet(&data, false);
}
-void WorldSession::HandleMoveKnockBackAck(WorldPacket & recv_data)
+void WorldSession::HandleMoveKnockBackAck(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_MOVE_KNOCK_BACK_ACK");
uint64 guid;
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
if (_player->m_mover->GetGUID() != guid)
return;
- recv_data.read_skip<uint32>(); // unk
+ recvData.read_skip<uint32>(); // unk
MovementInfo movementInfo;
- ReadMovementInfo(recv_data, &movementInfo);
+ ReadMovementInfo(recvData, &movementInfo);
_player->m_movementInfo = movementInfo;
@@ -553,45 +553,45 @@ void WorldSession::HandleMoveKnockBackAck(WorldPacket & recv_data)
_player->SendMessageToSet(&data, false);
}
-void WorldSession::HandleMoveHoverAck(WorldPacket& recv_data)
+void WorldSession::HandleMoveHoverAck(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_MOVE_HOVER_ACK");
uint64 guid; // guid - unused
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
- recv_data.read_skip<uint32>(); // unk
+ recvData.read_skip<uint32>(); // unk
MovementInfo movementInfo;
- ReadMovementInfo(recv_data, &movementInfo);
+ ReadMovementInfo(recvData, &movementInfo);
- recv_data.read_skip<uint32>(); // unk2
+ recvData.read_skip<uint32>(); // unk2
}
-void WorldSession::HandleMoveWaterWalkAck(WorldPacket& recv_data)
+void WorldSession::HandleMoveWaterWalkAck(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_MOVE_WATER_WALK_ACK");
uint64 guid; // guid - unused
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
- recv_data.read_skip<uint32>(); // unk
+ recvData.read_skip<uint32>(); // unk
MovementInfo movementInfo;
- ReadMovementInfo(recv_data, &movementInfo);
+ ReadMovementInfo(recvData, &movementInfo);
- recv_data.read_skip<uint32>(); // unk2
+ recvData.read_skip<uint32>(); // unk2
}
-void WorldSession::HandleSummonResponseOpcode(WorldPacket& recv_data)
+void WorldSession::HandleSummonResponseOpcode(WorldPacket& recvData)
{
if (!_player->isAlive() || _player->isInCombat())
return;
uint64 summoner_guid;
bool agree;
- recv_data >> summoner_guid;
- recv_data >> agree;
+ recvData >> summoner_guid;
+ recvData >> agree;
_player->SummonIfPossible(agree);
}
diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp
index 085e3c49157..0265d1e6f60 100755
--- a/src/server/game/Handlers/NPCHandler.cpp
+++ b/src/server/game/Handlers/NPCHandler.cpp
@@ -47,10 +47,10 @@ enum StableResultCode
STABLE_ERR_EXOTIC = 0x0C // "you are unable to control exotic creatures"
};
-void WorldSession::HandleTabardVendorActivateOpcode(WorldPacket & recv_data)
+void WorldSession::HandleTabardVendorActivateOpcode(WorldPacket & recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_TABARDDESIGNER);
if (!unit)
@@ -73,13 +73,13 @@ void WorldSession::SendTabardVendorActivate(uint64 guid)
SendPacket(&data);
}
-void WorldSession::HandleBankerActivateOpcode(WorldPacket & recv_data)
+void WorldSession::HandleBankerActivateOpcode(WorldPacket & recvData)
{
uint64 guid;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_BANKER_ACTIVATE");
- recv_data >> guid;
+ recvData >> guid;
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_BANKER);
if (!unit)
@@ -102,11 +102,11 @@ void WorldSession::SendShowBank(uint64 guid)
SendPacket(&data);
}
-void WorldSession::HandleTrainerListOpcode(WorldPacket & recv_data)
+void WorldSession::HandleTrainerListOpcode(WorldPacket & recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
SendTrainerList(guid);
}
@@ -234,12 +234,12 @@ void WorldSession::SendTrainerList(uint64 guid, const std::string& strTitle)
SendPacket(&data);
}
-void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket & recv_data)
+void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket & recvData)
{
uint64 guid;
uint32 spellId = 0;
- recv_data >> guid >> spellId;
+ recvData >> guid >> spellId;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_TRAINER_BUY_SPELL NpcGUID=%u, learn spell id is: %u", uint32(GUID_LOPART(guid)), spellId);
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_TRAINER);
@@ -294,12 +294,12 @@ void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket & recv_data)
SendPacket(&data);
}
-void WorldSession::HandleGossipHelloOpcode(WorldPacket & recv_data)
+void WorldSession::HandleGossipHelloOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GOSSIP_HELLO");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_NONE);
if (!unit)
@@ -343,7 +343,7 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket & recv_data)
unit->AI()->sGossipHello(_player);
}
-/*void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket & recv_data)
+/*void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_PACKETIO, "WORLD: CMSG_GOSSIP_SELECT_OPTION");
@@ -352,12 +352,12 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket & recv_data)
uint64 guid;
std::string code = "";
- recv_data >> guid >> unk >> option;
+ recvData >> guid >> unk >> option;
if (_player->PlayerTalkClass->GossipOptionCoded(option))
{
sLog->outDebug(LOG_FILTER_PACKETIO, "reading string");
- recv_data >> code;
+ recvData >> code;
sLog->outDebug(LOG_FILTER_PACKETIO, "string read: %s", code.c_str());
}
@@ -384,13 +384,13 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket & recv_data)
}
}*/
-void WorldSession::HandleSpiritHealerActivateOpcode(WorldPacket & recv_data)
+void WorldSession::HandleSpiritHealerActivateOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_SPIRIT_HEALER_ACTIVATE");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_SPIRITHEALER);
if (!unit)
@@ -439,10 +439,10 @@ void WorldSession::SendSpiritResurrect()
_player->UpdateObjectVisibility();
}
-void WorldSession::HandleBinderActivateOpcode(WorldPacket & recv_data)
+void WorldSession::HandleBinderActivateOpcode(WorldPacket & recvData)
{
uint64 npcGUID;
- recv_data >> npcGUID;
+ recvData >> npcGUID;
if (!GetPlayer()->IsInWorld() || !GetPlayer()->isAlive())
return;
@@ -496,12 +496,12 @@ void WorldSession::SendBindPoint(Creature* npc)
_player->PlayerTalkClass->SendCloseGossip();
}
-void WorldSession::HandleListStabledPetsOpcode(WorldPacket & recv_data)
+void WorldSession::HandleListStabledPetsOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recv MSG_LIST_STABLED_PETS");
uint64 npcGUID;
- recv_data >> npcGUID;
+ recvData >> npcGUID;
if (!CheckStableMaster(npcGUID))
return;
@@ -589,12 +589,12 @@ void WorldSession::SendStableResult(uint8 res)
SendPacket(&data);
}
-void WorldSession::HandleStablePet(WorldPacket & recv_data)
+void WorldSession::HandleStablePet(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recv CMSG_STABLE_PET");
uint64 npcGUID;
- recv_data >> npcGUID;
+ recvData >> npcGUID;
if (!GetPlayer()->isAlive())
{
@@ -664,13 +664,13 @@ void WorldSession::HandleStablePetCallback(PreparedQueryResult result)
SendStableResult(STABLE_ERR_STABLE);
}
-void WorldSession::HandleUnstablePet(WorldPacket & recv_data)
+void WorldSession::HandleUnstablePet(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recv CMSG_UNSTABLE_PET.");
uint64 npcGUID;
uint32 petnumber;
- recv_data >> npcGUID >> petnumber;
+ recvData >> npcGUID >> petnumber;
if (!CheckStableMaster(npcGUID))
{
@@ -745,12 +745,12 @@ void WorldSession::HandleUnstablePetCallback(PreparedQueryResult result, uint32
SendStableResult(STABLE_SUCCESS_UNSTABLE);
}
-void WorldSession::HandleBuyStableSlot(WorldPacket & recv_data)
+void WorldSession::HandleBuyStableSlot(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recv CMSG_BUY_STABLE_SLOT.");
uint64 npcGUID;
- recv_data >> npcGUID;
+ recvData >> npcGUID;
if (!CheckStableMaster(npcGUID))
{
@@ -778,18 +778,18 @@ void WorldSession::HandleBuyStableSlot(WorldPacket & recv_data)
SendStableResult(STABLE_ERR_STABLE);
}
-void WorldSession::HandleStableRevivePet(WorldPacket &/* recv_data */)
+void WorldSession::HandleStableRevivePet(WorldPacket &/* recvData */)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "HandleStableRevivePet: Not implemented");
}
-void WorldSession::HandleStableSwapPet(WorldPacket & recv_data)
+void WorldSession::HandleStableSwapPet(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recv CMSG_STABLE_SWAP_PET.");
uint64 npcGUID;
uint32 petId;
- recv_data >> npcGUID >> petId;
+ recvData >> npcGUID >> petId;
if (!CheckStableMaster(npcGUID))
{
@@ -875,14 +875,14 @@ void WorldSession::HandleStableSwapPetCallback(PreparedQueryResult result, uint3
SendStableResult(STABLE_SUCCESS_UNSTABLE);
}
-void WorldSession::HandleRepairItemOpcode(WorldPacket & recv_data)
+void WorldSession::HandleRepairItemOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_REPAIR_ITEM");
uint64 npcGUID, itemGUID;
uint8 guildBank; // new in 2.3.2, bool that means from guild bank money
- recv_data >> npcGUID >> itemGUID >> guildBank;
+ recvData >> npcGUID >> itemGUID >> guildBank;
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(npcGUID, UNIT_NPC_FLAG_REPAIR);
if (!unit)
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp
index 062927eebc0..5b690a1b9a2 100755
--- a/src/server/game/Handlers/PetHandler.cpp
+++ b/src/server/game/Handlers/PetHandler.cpp
@@ -32,10 +32,10 @@
#include "Group.h"
#include "SpellInfo.h"
-void WorldSession::HandleDismissCritter(WorldPacket &recv_data)
+void WorldSession::HandleDismissCritter(WorldPacket& recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_DISMISS_CRITTER for GUID " UI64FMTD, guid);
@@ -55,14 +55,14 @@ void WorldSession::HandleDismissCritter(WorldPacket &recv_data)
}
}
-void WorldSession::HandlePetAction(WorldPacket & recv_data)
+void WorldSession::HandlePetAction(WorldPacket & recvData)
{
uint64 guid1;
uint32 data;
uint64 guid2;
- recv_data >> guid1; //pet guid
- recv_data >> data;
- recv_data >> guid2; //tag guid
+ recvData >> guid1; //pet guid
+ recvData >> data;
+ recvData >> guid2; //tag guid
uint32 spellid = UNIT_ACTION_BUTTON_ACTION(data);
uint8 flag = UNIT_ACTION_BUTTON_TYPE(data); //delete = 0x07 CastSpell = C1
@@ -110,10 +110,10 @@ void WorldSession::HandlePetAction(WorldPacket & recv_data)
}
}
-void WorldSession::HandlePetStopAttack(WorldPacket &recv_data)
+void WorldSession::HandlePetStopAttack(WorldPacket &recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_PET_STOP_ATTACK for GUID " UI64FMTD "", guid);
@@ -138,7 +138,7 @@ void WorldSession::HandlePetStopAttack(WorldPacket &recv_data)
pet->AttackStop();
}
-void WorldSession::HandlePetActionHelper(Unit* pet, uint64 guid1, uint16 spellid, uint16 flag, uint64 guid2)
+void WorldSession::HandlePetActionHelper(Unit* pet, uint64 guid1, uint32 spellid, uint16 flag, uint64 guid2)
{
CharmInfo* charmInfo = pet->GetCharmInfo();
if (!charmInfo)
@@ -402,15 +402,15 @@ void WorldSession::HandlePetActionHelper(Unit* pet, uint64 guid1, uint16 spellid
}
}
-void WorldSession::HandlePetNameQuery(WorldPacket & recv_data)
+void WorldSession::HandlePetNameQuery(WorldPacket & recvData)
{
sLog->outInfo(LOG_FILTER_NETWORKIO, "HandlePetNameQuery. CMSG_PET_NAME_QUERY");
uint32 petnumber;
uint64 petguid;
- recv_data >> petnumber;
- recv_data >> petguid;
+ recvData >> petnumber;
+ recvData >> petguid;
SendPetNameQuery(petguid, petnumber);
}
@@ -469,14 +469,14 @@ bool WorldSession::CheckStableMaster(uint64 guid)
return true;
}
-void WorldSession::HandlePetSetAction(WorldPacket & recv_data)
+void WorldSession::HandlePetSetAction(WorldPacket & recvData)
{
sLog->outInfo(LOG_FILTER_NETWORKIO, "HandlePetSetAction. CMSG_PET_SET_ACTION");
uint64 petguid;
uint8 count;
- recv_data >> petguid;
+ recvData >> petguid;
Unit* pet = ObjectAccessor::GetUnit(*_player, petguid);
@@ -493,7 +493,7 @@ void WorldSession::HandlePetSetAction(WorldPacket & recv_data)
return;
}
- count = (recv_data.size() == 24) ? 2 : 1;
+ count = (recvData.size() == 24) ? 2 : 1;
uint32 position[2];
uint32 data[2];
@@ -501,8 +501,8 @@ void WorldSession::HandlePetSetAction(WorldPacket & recv_data)
for (uint8 i = 0; i < count; ++i)
{
- recv_data >> position[i];
- recv_data >> data[i];
+ recvData >> position[i];
+ recvData >> data[i];
uint8 act_state = UNIT_ACTION_BUTTON_TYPE(data[i]);
@@ -586,7 +586,7 @@ void WorldSession::HandlePetSetAction(WorldPacket & recv_data)
}
}
-void WorldSession::HandlePetRename(WorldPacket & recv_data)
+void WorldSession::HandlePetRename(WorldPacket & recvData)
{
sLog->outInfo(LOG_FILTER_NETWORKIO, "HandlePetRename. CMSG_PET_RENAME");
@@ -596,9 +596,9 @@ void WorldSession::HandlePetRename(WorldPacket & recv_data)
std::string name;
DeclinedName declinedname;
- recv_data >> petguid;
- recv_data >> name;
- recv_data >> isdeclined;
+ recvData >> petguid;
+ recvData >> name;
+ recvData >> isdeclined;
Pet* pet = ObjectAccessor::FindPet(petguid);
// check it!
@@ -632,7 +632,7 @@ void WorldSession::HandlePetRename(WorldPacket & recv_data)
{
for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
{
- recv_data >> declinedname.name[i];
+ recvData >> declinedname.name[i];
}
std::wstring wname;
@@ -671,10 +671,10 @@ void WorldSession::HandlePetRename(WorldPacket & recv_data)
pet->SetUInt32Value(UNIT_FIELD_PET_NAME_TIMESTAMP, uint32(time(NULL))); // cast can't be helped
}
-void WorldSession::HandlePetAbandon(WorldPacket & recv_data)
+void WorldSession::HandlePetAbandon(WorldPacket & recvData)
{
uint64 guid;
- recv_data >> guid; //pet guid
+ recvData >> guid; //pet guid
sLog->outInfo(LOG_FILTER_NETWORKIO, "HandlePetAbandon. CMSG_PET_ABANDON pet guid is %u", GUID_LOPART(guid));
if (!_player->IsInWorld())
@@ -723,7 +723,7 @@ void WorldSession::HandlePetSpellAutocastOpcode(WorldPacket& recvPacket)
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellid);
// do not add not learned spells/ passive spells
- if (!pet->HasSpell(spellid) || spellInfo->IsAutocastable())
+ if (!pet->HasSpell(spellid) || !spellInfo->IsAutocastable())
return;
CharmInfo* charmInfo = pet->GetCharmInfo();
@@ -855,33 +855,33 @@ void WorldSession::SendPetNameInvalid(uint32 error, const std::string& name, Dec
SendPacket(&data);
}
-void WorldSession::HandlePetLearnTalent(WorldPacket & recv_data)
+void WorldSession::HandlePetLearnTalent(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_PET_LEARN_TALENT");
uint64 guid;
- uint32 talent_id, requested_rank;
- recv_data >> guid >> talent_id >> requested_rank;
+ uint32 talentId, requestedRank;
+ recvData >> guid >> talentId >> requestedRank;
- _player->LearnPetTalent(guid, talent_id, requested_rank);
+ _player->LearnPetTalent(guid, talentId, requestedRank);
_player->SendTalentsInfoData(true);
}
-void WorldSession::HandleLearnPreviewTalentsPet(WorldPacket & recv_data)
+void WorldSession::HandleLearnPreviewTalentsPet(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_LEARN_PREVIEW_TALENTS_PET");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
uint32 talentsCount;
- recv_data >> talentsCount;
+ recvData >> talentsCount;
uint32 talentId, talentRank;
for (uint32 i = 0; i < talentsCount; ++i)
{
- recv_data >> talentId >> talentRank;
+ recvData >> talentId >> talentRank;
_player->LearnPetTalent(guid, talentId, talentRank);
}
diff --git a/src/server/game/Handlers/PetitionsHandler.cpp b/src/server/game/Handlers/PetitionsHandler.cpp
index dd39973b37f..0da9c762ca9 100755
--- a/src/server/game/Handlers/PetitionsHandler.cpp
+++ b/src/server/game/Handlers/PetitionsHandler.cpp
@@ -33,12 +33,6 @@
#define CHARTER_DISPLAY_ID 16161
-/*enum PetitionType // dbc data
-{
- PETITION_TYPE_GUILD = 1,
- PETITION_TYPE_ARENA_TEAM = 3
-};*/
-
// Charters ID in item_template
enum CharterItemIDs
{
@@ -56,7 +50,7 @@ enum CharterCosts
ARENA_TEAM_CHARTER_5v5_COST = 2000000
};
-void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode CMSG_PETITION_BUY");
@@ -64,28 +58,28 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
uint32 clientIndex; // 1 for guild and arenaslot+1 for arenas in client
std::string name;
- recv_data >> guidNPC; // NPC GUID
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint64>(); // 0
- recv_data >> name; // name
- recv_data.read_skip<std::string>(); // some string
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint16>(); // 0
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint32>(); // 0
- recv_data.read_skip<uint32>(); // 0
+ recvData >> guidNPC; // NPC GUID
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint64>(); // 0
+ recvData >> name; // name
+ recvData.read_skip<std::string>(); // some string
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint16>(); // 0
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint32>(); // 0
+ recvData.read_skip<uint32>(); // 0
for (int i = 0; i < 10; ++i)
- recv_data.read_skip<std::string>();
+ recvData.read_skip<std::string>();
- recv_data >> clientIndex; // index
- recv_data.read_skip<uint32>(); // 0
+ recvData >> clientIndex; // index
+ recvData.read_skip<uint32>(); // 0
sLog->outDebug(LOG_FILTER_NETWORKIO, "Petitioner with GUID %u tried sell petition: name %s", GUID_LOPART(guidNPC), name.c_str());
@@ -157,12 +151,13 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
{
if (sGuildMgr->GetGuildByName(name))
{
- Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_EXISTS_S, name);
+ Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_NAME_EXISTS_S, name);
return;
}
+
if (sObjectMgr->IsReservedName(name) || !ObjectMgr::IsValidCharterName(name))
{
- Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_INVALID, name);
+ Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_NAME_INVALID, name);
return;
}
}
@@ -250,13 +245,13 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket & recv_data)
CharacterDatabase.CommitTransaction(trans);
}
-void WorldSession::HandlePetitionShowSignOpcode(WorldPacket& recv_data)
+void WorldSession::HandlePetitionShowSignOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode CMSG_PETITION_SHOW_SIGNATURES");
uint8 signs = 0;
uint64 petitionguid;
- recv_data >> petitionguid; // petition guid
+ recvData >> petitionguid; // petition guid
// solve (possible) some strange compile problems with explicit use GUID_LOPART(petitionguid) at some GCC versions (wrong code optimization in compiler?)
uint32 petitionGuidLow = GUID_LOPART(petitionguid);
@@ -310,14 +305,14 @@ void WorldSession::HandlePetitionShowSignOpcode(WorldPacket& recv_data)
SendPacket(&data);
}
-void WorldSession::HandlePetitionQueryOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePetitionQueryOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode CMSG_PETITION_QUERY"); // ok
uint32 guildguid;
uint64 petitionguid;
- recv_data >> guildguid; // in Trinity always same as GUID_LOPART(petitionguid)
- recv_data >> petitionguid; // petition guid
+ recvData >> guildguid; // in Trinity always same as GUID_LOPART(petitionguid)
+ recvData >> petitionguid; // petition guid
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_PETITION_QUERY Petition GUID %u Guild GUID %u", GUID_LOPART(petitionguid), guildguid);
SendPetitionQueryOpcode(petitionguid);
@@ -355,8 +350,9 @@ void WorldSession::SendPetitionQueryOpcode(uint64 petitionguid)
data << uint8(0); // some string
if (type == GUILD_CHARTER_TYPE)
{
- data << uint32(9);
- data << uint32(9);
+ uint32 needed = sWorld->getIntConfig(CONFIG_MIN_PETITION_SIGNS);
+ data << uint32(needed);
+ data << uint32(needed);
data << uint32(0); // bypass client - side limitation, a different value is needed here for each petition
}
else
@@ -379,15 +375,12 @@ void WorldSession::SendPetitionQueryOpcode(uint64 petitionguid)
data << uint32(0); // 14
- if (type == GUILD_CHARTER_TYPE)
- data << uint32(0); // 15 0 - guild, 1 - arena team
- else
- data << uint32(1);
+ data << uint32(type != GUILD_CHARTER_TYPE); // 15 0 - guild, 1 - arena team
SendPacket(&data);
}
-void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode MSG_PETITION_RENAME"); // ok
@@ -395,8 +388,8 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
uint32 type;
std::string newName;
- recv_data >> petitionGuid; // guid
- recv_data >> newName; // new name
+ recvData >> petitionGuid; // guid
+ recvData >> newName; // new name
Item* item = _player->GetItemByGuid(petitionGuid);
if (!item)
@@ -423,12 +416,12 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
{
if (sGuildMgr->GetGuildByName(newName))
{
- Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_EXISTS_S, newName);
+ Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_NAME_EXISTS_S, newName);
return;
}
if (sObjectMgr->IsReservedName(newName) || !ObjectMgr::IsValidCharterName(newName))
{
- Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_INVALID, newName);
+ Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_NAME_INVALID, newName);
return;
}
}
@@ -460,15 +453,15 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket & recv_data)
SendPacket(&data);
}
-void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePetitionSignOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode CMSG_PETITION_SIGN"); // ok
Field* fields;
uint64 petitionGuid;
uint8 unk;
- recv_data >> petitionGuid; // petition guid
- recv_data >> unk;
+ recvData >> petitionGuid; // petition guid
+ recvData >> unk;
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PETITION_SIGNATURES);
@@ -498,7 +491,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
if (type != GUILD_CHARTER_TYPE)
SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED);
else
- Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NOT_ALLIED);
+ Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_NOT_ALLIED);
return;
}
@@ -530,12 +523,12 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
{
if (_player->GetGuildId())
{
- Guild::SendCommandResult(this, GUILD_INVITE_S, ERR_ALREADY_IN_GUILD_S, _player->GetName().c_str());
+ Guild::SendCommandResult(this, GUILD_COMMAND_INVITE, ERR_ALREADY_IN_GUILD_S, _player->GetName());
return;
}
if (_player->GetGuildIdInvited())
{
- Guild::SendCommandResult(this, GUILD_INVITE_S, ERR_ALREADY_INVITED_TO_GUILD_S, _player->GetName().c_str());
+ Guild::SendCommandResult(this, GUILD_COMMAND_INVITE, ERR_ALREADY_INVITED_TO_GUILD_S, _player->GetName());
return;
}
}
@@ -597,13 +590,13 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket & recv_data)
owner->GetSession()->SendPacket(&data);
}
-void WorldSession::HandlePetitionDeclineOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePetitionDeclineOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode MSG_PETITION_DECLINE"); // ok
uint64 petitionguid;
uint64 ownerguid;
- recv_data >> petitionguid; // petition guid
+ recvData >> petitionguid; // petition guid
sLog->outDebug(LOG_FILTER_NETWORKIO, "Petition %u declined by %u", GUID_LOPART(petitionguid), _player->GetGUIDLow());
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PETITION_OWNER_BY_GUID);
@@ -627,7 +620,7 @@ void WorldSession::HandlePetitionDeclineOpcode(WorldPacket & recv_data)
}
}
-void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
+void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode CMSG_OFFER_PETITION"); // ok
@@ -635,9 +628,9 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
uint64 petitionguid, plguid;
uint32 type, junk;
Player* player;
- recv_data >> junk; // this is not petition type!
- recv_data >> petitionguid; // petition guid
- recv_data >> plguid; // player guid
+ recvData >> junk; // this is not petition type!
+ recvData >> petitionguid; // petition guid
+ recvData >> plguid; // player guid
player = ObjectAccessor::FindPlayer(plguid);
if (!player)
@@ -662,7 +655,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
if (type != GUILD_CHARTER_TYPE)
SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", "", ERR_ARENA_TEAM_NOT_ALLIED);
else
- Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NOT_ALLIED);
+ Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_NOT_ALLIED);
return;
}
@@ -696,13 +689,13 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
{
if (player->GetGuildId())
{
- Guild::SendCommandResult(this, GUILD_INVITE_S, ERR_ALREADY_IN_GUILD_S, _player->GetName().c_str());
+ Guild::SendCommandResult(this, GUILD_COMMAND_INVITE, ERR_ALREADY_IN_GUILD_S, _player->GetName());
return;
}
if (player->GetGuildIdInvited())
{
- Guild::SendCommandResult(this, GUILD_INVITE_S, ERR_ALREADY_INVITED_TO_GUILD_S, _player->GetName().c_str());
+ Guild::SendCommandResult(this, GUILD_COMMAND_INVITE, ERR_ALREADY_INVITED_TO_GUILD_S, _player->GetName());
return;
}
}
@@ -736,7 +729,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket & recv_data)
player->GetSession()->SendPacket(&data);
}
-void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
+void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received opcode CMSG_TURN_IN_PETITION");
@@ -744,7 +737,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
WorldPacket data;
uint64 petitionGuid;
- recv_data >> petitionGuid;
+ recvData >> petitionGuid;
// Check if player really has the required petition charter
Item* item = _player->GetItemByGuid(petitionGuid);
@@ -794,7 +787,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
// Check if guild name is already taken
if (sGuildMgr->GetGuildByName(name))
{
- Guild::SendCommandResult(this, GUILD_CREATE_S, ERR_GUILD_NAME_EXISTS_S, name);
+ Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_NAME_EXISTS_S, name);
return;
}
}
@@ -866,6 +859,8 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
// Register guild and add guild master
sGuildMgr->AddGuild(guild);
+ Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_COMMAND_SUCCESS, name);
+
// Add members from signatures
for (uint8 i = 0; i < signatures; ++i)
{
@@ -878,7 +873,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
{
// Receive the rest of the packet in arena team creation case
uint32 background, icon, iconcolor, border, bordercolor;
- recv_data >> background >> icon >> iconcolor >> border >> bordercolor;
+ recvData >> background >> icon >> iconcolor >> border >> bordercolor;
// Create arena team
ArenaTeam* arenaTeam = new ArenaTeam();
@@ -924,12 +919,12 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
SendPacket(&data);
}
-void WorldSession::HandlePetitionShowListOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePetitionShowListOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "Received CMSG_PETITION_SHOWLIST");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
SendPetitionShowList(guid);
}
@@ -954,7 +949,7 @@ void WorldSession::SendPetitionShowList(uint64 guid)
data << uint32(CHARTER_DISPLAY_ID); // charter display id
data << uint32(GUILD_CHARTER_COST); // charter cost
data << uint32(0); // unknown
- data << uint32(9); // required signs?
+ data << uint32(sWorld->getIntConfig(CONFIG_MIN_PETITION_SIGNS)); // required signs
}
else
{
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp
index d3f51867831..534f992b594 100755
--- a/src/server/game/Handlers/QueryHandler.cpp
+++ b/src/server/game/Handlers/QueryHandler.cpp
@@ -64,10 +64,10 @@ void WorldSession::SendNameQueryOpcode(uint64 guid)
SendPacket(&data);
}
-void WorldSession::HandleNameQueryOpcode(WorldPacket& recv_data)
+void WorldSession::HandleNameQueryOpcode(WorldPacket& recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
// This is disable by default to prevent lots of console spam
// sLog->outInfo(LOG_FILTER_NETWORKIO, "HandleNameQueryOpcode %u", guid);
@@ -75,7 +75,7 @@ void WorldSession::HandleNameQueryOpcode(WorldPacket& recv_data)
SendNameQueryOpcode(guid);
}
-void WorldSession::HandleQueryTimeOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleQueryTimeOpcode(WorldPacket & /*recvData*/)
{
SendQueryTimeResponse();
}
@@ -89,12 +89,12 @@ void WorldSession::SendQueryTimeResponse()
}
/// Only _static_ data is sent in this packet !!!
-void WorldSession::HandleCreatureQueryOpcode(WorldPacket & recv_data)
+void WorldSession::HandleCreatureQueryOpcode(WorldPacket & recvData)
{
uint32 entry;
- recv_data >> entry;
+ recvData >> entry;
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(entry);
if (ci)
@@ -152,12 +152,12 @@ void WorldSession::HandleCreatureQueryOpcode(WorldPacket & recv_data)
}
/// Only _static_ data is sent in this packet !!!
-void WorldSession::HandleGameObjectQueryOpcode(WorldPacket & recv_data)
+void WorldSession::HandleGameObjectQueryOpcode(WorldPacket & recvData)
{
uint32 entry;
- recv_data >> entry;
+ recvData >> entry;
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
const GameObjectTemplate* info = sObjectMgr->GetGameObjectTemplate(entry);
if (info)
@@ -207,7 +207,7 @@ void WorldSession::HandleGameObjectQueryOpcode(WorldPacket & recv_data)
}
}
-void WorldSession::HandleCorpseQueryOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleCorpseQueryOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received MSG_CORPSE_QUERY");
@@ -258,15 +258,15 @@ void WorldSession::HandleCorpseQueryOpcode(WorldPacket & /*recv_data*/)
SendPacket(&data);
}
-void WorldSession::HandleNpcTextQueryOpcode(WorldPacket & recv_data)
+void WorldSession::HandleNpcTextQueryOpcode(WorldPacket & recvData)
{
uint32 textID;
uint64 guid;
- recv_data >> textID;
+ recvData >> textID;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_NPC_TEXT_QUERY ID '%u'", textID);
- recv_data >> guid;
+ recvData >> guid;
GetPlayer()->SetSelection(guid);
GossipText const* pGossip = sObjectMgr->GetGossipText(textID);
@@ -342,13 +342,13 @@ void WorldSession::HandleNpcTextQueryOpcode(WorldPacket & recv_data)
}
/// Only _static_ data is sent in this packet !!!
-void WorldSession::HandlePageTextQueryOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePageTextQueryOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_PAGE_TEXT_QUERY");
uint32 pageID;
- recv_data >> pageID;
- recv_data.read_skip<uint64>(); // guid
+ recvData >> pageID;
+ recvData.read_skip<uint64>(); // guid
while (pageID)
{
@@ -382,12 +382,12 @@ void WorldSession::HandlePageTextQueryOpcode(WorldPacket & recv_data)
}
}
-void WorldSession::HandleCorpseMapPositionQuery(WorldPacket & recv_data)
+void WorldSession::HandleCorpseMapPositionQuery(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recv CMSG_CORPSE_MAP_POSITION_QUERY");
uint32 unk;
- recv_data >> unk;
+ recvData >> unk;
WorldPacket data(SMSG_CORPSE_MAP_POSITION_QUERY_RESPONSE, 4+4+4+4);
data << float(0);
@@ -397,14 +397,14 @@ void WorldSession::HandleCorpseMapPositionQuery(WorldPacket & recv_data)
SendPacket(&data);
}
-void WorldSession::HandleQuestPOIQuery(WorldPacket& recv_data)
+void WorldSession::HandleQuestPOIQuery(WorldPacket& recvData)
{
uint32 count;
- recv_data >> count; // quest count, max=25
+ recvData >> count; // quest count, max=25
if (count >= MAX_QUEST_LOG_SIZE)
{
- recv_data.rfinish();
+ recvData.rfinish();
return;
}
@@ -414,7 +414,7 @@ void WorldSession::HandleQuestPOIQuery(WorldPacket& recv_data)
for (uint32 i = 0; i < count; ++i)
{
uint32 questId;
- recv_data >> questId; // quest id
+ recvData >> questId; // quest id
bool questOk = false;
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 85f55fa7374..4196bc26b91 100755
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -33,10 +33,10 @@
#include "ScriptMgr.h"
#include "GameObjectAI.h"
-void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket & recv_data)
+void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket & recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
uint8 questStatus = DIALOG_STATUS_NONE;
uint8 defstatus = DIALOG_STATUS_NONE;
@@ -79,10 +79,10 @@ void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket & recv_data)
_player->PlayerTalkClass->SendQuestGiverStatus(questStatus, guid);
}
-void WorldSession::HandleQuestgiverHelloOpcode(WorldPacket & recv_data)
+void WorldSession::HandleQuestgiverHelloOpcode(WorldPacket & recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUESTGIVER_HELLO npc = %u", GUID_LOPART(guid));
@@ -109,12 +109,12 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPacket & recv_data)
creature->AI()->sGossipHello(_player);
}
-void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket & recv_data)
+void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket & recvData)
{
uint64 guid;
uint32 questId;
uint32 unk1;
- recv_data >> guid >> questId >> unk1;
+ recvData >> guid >> questId >> unk1;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUESTGIVER_ACCEPT_QUEST npc = %u, quest = %u, unk1 = %u", uint32(GUID_LOPART(guid)), questId, unk1);
@@ -230,12 +230,12 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket & recv_data)
_player->PlayerTalkClass->SendCloseGossip();
}
-void WorldSession::HandleQuestgiverQueryQuestOpcode(WorldPacket & recv_data)
+void WorldSession::HandleQuestgiverQueryQuestOpcode(WorldPacket & recvData)
{
uint64 guid;
uint32 questId;
uint8 unk1;
- recv_data >> guid >> questId >> unk1;
+ recvData >> guid >> questId >> unk1;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUESTGIVER_QUERY_QUEST npc = %u, quest = %u, unk1 = %u", uint32(GUID_LOPART(guid)), questId, unk1);
// Verify that the guid is valid and is a questgiver or involved in the requested quest
@@ -268,24 +268,24 @@ void WorldSession::HandleQuestgiverQueryQuestOpcode(WorldPacket & recv_data)
}
}
-void WorldSession::HandleQuestQueryOpcode(WorldPacket & recv_data)
+void WorldSession::HandleQuestQueryOpcode(WorldPacket & recvData)
{
if (!_player)
return;
uint32 questId;
- recv_data >> questId;
+ recvData >> questId;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUEST_QUERY quest = %u", questId);
if (Quest const* quest = sObjectMgr->GetQuestTemplate(questId))
_player->PlayerTalkClass->SendQuestQueryResponse(quest);
}
-void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket & recv_data)
+void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket & recvData)
{
uint32 questId, reward;
uint64 guid;
- recv_data >> guid >> questId >> reward;
+ recvData >> guid >> questId >> reward;
if (reward >= QUEST_REWARD_CHOICES_COUNT)
{
@@ -365,11 +365,11 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket & recv_data)
}
}
-void WorldSession::HandleQuestgiverRequestRewardOpcode(WorldPacket & recv_data)
+void WorldSession::HandleQuestgiverRequestRewardOpcode(WorldPacket & recvData)
{
uint32 questId;
uint64 guid;
- recv_data >> guid >> questId;
+ recvData >> guid >> questId;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUESTGIVER_REQUEST_REWARD npc = %u, quest = %u", uint32(GUID_LOPART(guid)), questId);
@@ -391,17 +391,17 @@ void WorldSession::HandleQuestgiverRequestRewardOpcode(WorldPacket & recv_data)
_player->PlayerTalkClass->SendQuestGiverOfferReward(quest, guid, true);
}
-void WorldSession::HandleQuestgiverCancel(WorldPacket& /*recv_data*/)
+void WorldSession::HandleQuestgiverCancel(WorldPacket& /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUESTGIVER_CANCEL");
_player->PlayerTalkClass->SendCloseGossip();
}
-void WorldSession::HandleQuestLogSwapQuest(WorldPacket& recv_data)
+void WorldSession::HandleQuestLogSwapQuest(WorldPacket& recvData)
{
uint8 slot1, slot2;
- recv_data >> slot1 >> slot2;
+ recvData >> slot1 >> slot2;
if (slot1 == slot2 || slot1 >= MAX_QUEST_LOG_SIZE || slot2 >= MAX_QUEST_LOG_SIZE)
return;
@@ -411,10 +411,10 @@ void WorldSession::HandleQuestLogSwapQuest(WorldPacket& recv_data)
GetPlayer()->SwapQuestSlot(slot1, slot2);
}
-void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recv_data)
+void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recvData)
{
uint8 slot;
- recv_data >> slot;
+ recvData >> slot;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUESTLOG_REMOVE_QUEST slot = %u", slot);
@@ -444,10 +444,10 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recv_data)
}
}
-void WorldSession::HandleQuestConfirmAccept(WorldPacket& recv_data)
+void WorldSession::HandleQuestConfirmAccept(WorldPacket& recvData)
{
uint32 questId;
- recv_data >> questId;
+ recvData >> questId;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUEST_CONFIRM_ACCEPT quest = %u", questId);
@@ -479,12 +479,12 @@ void WorldSession::HandleQuestConfirmAccept(WorldPacket& recv_data)
}
}
-void WorldSession::HandleQuestgiverCompleteQuest(WorldPacket& recv_data)
+void WorldSession::HandleQuestgiverCompleteQuest(WorldPacket& recvData)
{
uint32 questId;
uint64 guid;
- recv_data >> guid >> questId;
+ recvData >> guid >> questId;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_QUESTGIVER_COMPLETE_QUEST npc = %u, quest = %u", uint32(GUID_LOPART(guid)), questId);
@@ -760,7 +760,7 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket
SendPacket(&data);
}
-void WorldSession::HandleQueryQuestsCompleted(WorldPacket & /*recv_data*/)
+void WorldSession::HandleQueryQuestsCompleted(WorldPacket & /*recvData*/)
{
size_t rew_count = _player->GetRewardedQuestCount();
diff --git a/src/server/game/Handlers/ReferAFriendHandler.cpp b/src/server/game/Handlers/ReferAFriendHandler.cpp
index 58d425ddf98..7822c38d390 100644
--- a/src/server/game/Handlers/ReferAFriendHandler.cpp
+++ b/src/server/game/Handlers/ReferAFriendHandler.cpp
@@ -21,12 +21,12 @@
#include "Opcodes.h"
#include "Log.h"
-void WorldSession::HandleGrantLevel(WorldPacket& recv_data)
+void WorldSession::HandleGrantLevel(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_GRANT_LEVEL");
uint64 guid;
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
Player* target = ObjectAccessor::GetObjectInWorld(guid, _player);
@@ -63,12 +63,12 @@ void WorldSession::HandleGrantLevel(WorldPacket& recv_data)
target->GetSession()->SendPacket(&data2);
}
-void WorldSession::HandleAcceptGrantLevel(WorldPacket& recv_data)
+void WorldSession::HandleAcceptGrantLevel(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_ACCEPT_LEVEL_GRANT");
uint64 guid;
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
Player* other = ObjectAccessor::GetObjectInWorld(guid, _player);
if (!(other && other->GetSession()))
diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp
index 8872816f87d..88ae01f59be 100755
--- a/src/server/game/Handlers/SkillHandler.cpp
+++ b/src/server/game/Handlers/SkillHandler.cpp
@@ -26,10 +26,10 @@
#include "ObjectAccessor.h"
#include "UpdateMask.h"
-void WorldSession::HandleLearnTalentOpcode(WorldPacket & recv_data)
+void WorldSession::HandleLearnTalentOpcode(WorldPacket & recvData)
{
uint32 talent_id, requested_rank;
- recv_data >> talent_id >> requested_rank;
+ recvData >> talent_id >> requested_rank;
_player->LearnTalent(talent_id, requested_rank);
_player->SendTalentsInfoData(false);
@@ -54,11 +54,11 @@ void WorldSession::HandleLearnPreviewTalents(WorldPacket& recvPacket)
_player->SendTalentsInfoData(false);
}
-void WorldSession::HandleTalentWipeConfirmOpcode(WorldPacket & recv_data)
+void WorldSession::HandleTalentWipeConfirmOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "MSG_TALENT_WIPE_CONFIRM");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_TRAINER);
if (!unit)
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index ad57fd799af..1c834b323ac 100755
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -269,11 +269,11 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket)
pUser->SendLoot(item->GetGUID(), LOOT_CORPSE);
}
-void WorldSession::HandleGameObjectUseOpcode(WorldPacket & recv_data)
+void WorldSession::HandleGameObjectUseOpcode(WorldPacket & recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_GAMEOBJ_USE Message [guid=%u]", GUID_LOPART(guid));
@@ -485,9 +485,9 @@ void WorldSession::HandleCancelAutoRepeatSpellOpcode(WorldPacket& /*recvPacket*/
_player->InterruptSpell(CURRENT_AUTOREPEAT_SPELL);
}
-void WorldSession::HandleCancelChanneling(WorldPacket & recv_data)
+void WorldSession::HandleCancelChanneling(WorldPacket & recvData)
{
- recv_data.read_skip<uint32>(); // spellid, not used
+ recvData.read_skip<uint32>(); // spellid, not used
// ignore for remote control state (for player case)
Unit* mover = _player->m_mover;
@@ -520,7 +520,7 @@ void WorldSession::HandleTotemDestroyed(WorldPacket& recvPacket)
totem->ToTotem()->UnSummon();
}
-void WorldSession::HandleSelfResOpcode(WorldPacket & /*recv_data*/)
+void WorldSession::HandleSelfResOpcode(WorldPacket & /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_SELF_RES"); // empty opcode
@@ -537,10 +537,10 @@ void WorldSession::HandleSelfResOpcode(WorldPacket & /*recv_data*/)
}
}
-void WorldSession::HandleSpellClick(WorldPacket& recv_data)
+void WorldSession::HandleSpellClick(WorldPacket& recvData)
{
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
// this will get something not in world. crash
Creature* unit = ObjectAccessor::GetCreatureOrPetOrVehicle(*_player, guid);
@@ -555,11 +555,11 @@ void WorldSession::HandleSpellClick(WorldPacket& recv_data)
unit->HandleSpellClick(_player);
}
-void WorldSession::HandleMirrorImageDataRequest(WorldPacket & recv_data)
+void WorldSession::HandleMirrorImageDataRequest(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_GET_MIRRORIMAGE_DATA");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
// Get unit for which data is needed by client
Unit* unit = ObjectAccessor::GetObjectInWorld(guid, (Unit*)NULL);
diff --git a/src/server/game/Handlers/TaxiHandler.cpp b/src/server/game/Handlers/TaxiHandler.cpp
index b774fbcba70..16ffdfbc440 100755
--- a/src/server/game/Handlers/TaxiHandler.cpp
+++ b/src/server/game/Handlers/TaxiHandler.cpp
@@ -28,13 +28,13 @@
#include "Path.h"
#include "WaypointMovementGenerator.h"
-void WorldSession::HandleTaxiNodeStatusQueryOpcode(WorldPacket & recv_data)
+void WorldSession::HandleTaxiNodeStatusQueryOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_TAXINODE_STATUS_QUERY");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
SendTaxiStatus(guid);
}
@@ -63,12 +63,12 @@ void WorldSession::SendTaxiStatus(uint64 guid)
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_TAXINODE_STATUS");
}
-void WorldSession::HandleTaxiQueryAvailableNodes(WorldPacket & recv_data)
+void WorldSession::HandleTaxiQueryAvailableNodes(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_TAXIQUERYAVAILABLENODES");
uint64 guid;
- recv_data >> guid;
+ recvData >> guid;
// cheating checks
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_FLIGHTMASTER);
@@ -163,14 +163,14 @@ void WorldSession::SendDiscoverNewTaxiNode(uint32 nodeid)
}
}
-void WorldSession::HandleActivateTaxiExpressOpcode (WorldPacket & recv_data)
+void WorldSession::HandleActivateTaxiExpressOpcode (WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ACTIVATETAXIEXPRESS");
uint64 guid;
uint32 node_count;
- recv_data >> guid >> node_count;
+ recvData >> guid >> node_count;
Creature* npc = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_FLIGHTMASTER);
if (!npc)
@@ -183,7 +183,7 @@ void WorldSession::HandleActivateTaxiExpressOpcode (WorldPacket & recv_data)
for (uint32 i = 0; i < node_count; ++i)
{
uint32 node;
- recv_data >> node;
+ recvData >> node;
nodes.push_back(node);
}
@@ -195,17 +195,17 @@ void WorldSession::HandleActivateTaxiExpressOpcode (WorldPacket & recv_data)
GetPlayer()->ActivateTaxiPathTo(nodes, npc);
}
-void WorldSession::HandleMoveSplineDoneOpcode(WorldPacket& recv_data)
+void WorldSession::HandleMoveSplineDoneOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_MOVE_SPLINE_DONE");
uint64 guid; // used only for proper packet read
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
MovementInfo movementInfo; // used only for proper packet read
- ReadMovementInfo(recv_data, &movementInfo);
+ ReadMovementInfo(recvData, &movementInfo);
- recv_data.read_skip<uint32>(); // unk
+ recvData.read_skip<uint32>(); // unk
// in taxi flight packet received in 2 case:
// 1) end taxi path in far (multi-node) flight
@@ -273,7 +273,7 @@ void WorldSession::HandleMoveSplineDoneOpcode(WorldPacket& recv_data)
GetPlayer()->CastSpell(GetPlayer(), 2479, true);
}
-void WorldSession::HandleActivateTaxiOpcode(WorldPacket & recv_data)
+void WorldSession::HandleActivateTaxiOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ACTIVATETAXI");
@@ -281,7 +281,7 @@ void WorldSession::HandleActivateTaxiOpcode(WorldPacket & recv_data)
std::vector<uint32> nodes;
nodes.resize(2);
- recv_data >> guid >> nodes[0] >> nodes[1];
+ recvData >> guid >> nodes[0] >> nodes[1];
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ACTIVATETAXI from %d to %d", nodes[0], nodes[1]);
Creature* npc = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_FLIGHTMASTER);
if (!npc)
diff --git a/src/server/game/Handlers/VehicleHandler.cpp b/src/server/game/Handlers/VehicleHandler.cpp
index f0ccfc44e60..e16f535a757 100644
--- a/src/server/game/Handlers/VehicleHandler.cpp
+++ b/src/server/game/Handlers/VehicleHandler.cpp
@@ -23,7 +23,7 @@
#include "Log.h"
#include "ObjectAccessor.h"
-void WorldSession::HandleDismissControlledVehicle(WorldPacket &recv_data)
+void WorldSession::HandleDismissControlledVehicle(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_DISMISS_CONTROLLED_VEHICLE");
@@ -31,44 +31,44 @@ void WorldSession::HandleDismissControlledVehicle(WorldPacket &recv_data)
if (!vehicleGUID) // something wrong here...
{
- recv_data.rfinish(); // prevent warnings spam
+ recvData.rfinish(); // prevent warnings spam
return;
}
uint64 guid;
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
MovementInfo mi;
mi.guid = guid;
- ReadMovementInfo(recv_data, &mi);
+ ReadMovementInfo(recvData, &mi);
_player->m_movementInfo = mi;
_player->ExitVehicle();
}
-void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data)
+void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE");
Unit* vehicle_base = GetPlayer()->GetVehicleBase();
if (!vehicle_base)
{
- recv_data.rfinish(); // prevent warnings spam
+ recvData.rfinish(); // prevent warnings spam
return;
}
VehicleSeatEntry const* seat = GetPlayer()->GetVehicle()->GetSeatForPassenger(GetPlayer());
if (!seat->CanSwitchFromSeat())
{
- recv_data.rfinish(); // prevent warnings spam
+ recvData.rfinish(); // prevent warnings spam
sLog->outError(LOG_FILTER_NETWORKIO, "HandleChangeSeatsOnControlledVehicle, Opcode: %u, Player %u tried to switch seats but current seatflags %u don't permit that.",
- recv_data.GetOpcode(), GetPlayer()->GetGUIDLow(), seat->m_flags);
+ recvData.GetOpcode(), GetPlayer()->GetGUIDLow(), seat->m_flags);
return;
}
- switch (recv_data.GetOpcode())
+ switch (recvData.GetOpcode())
{
case CMSG_REQUEST_VEHICLE_PREV_SEAT:
GetPlayer()->ChangeSeat(-1, false);
@@ -79,17 +79,17 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data)
case CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE:
{
uint64 guid; // current vehicle guid
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
MovementInfo movementInfo;
- ReadMovementInfo(recv_data, &movementInfo);
+ ReadMovementInfo(recvData, &movementInfo);
vehicle_base->m_movementInfo = movementInfo;
uint64 accessory; // accessory guid
- recv_data.readPackGUID(accessory);
+ recvData.readPackGUID(accessory);
int8 seatId;
- recv_data >> seatId;
+ recvData >> seatId;
if (vehicle_base->GetGUID() != guid)
return;
@@ -107,10 +107,10 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data)
case CMSG_REQUEST_VEHICLE_SWITCH_SEAT:
{
uint64 guid; // current vehicle guid
- recv_data.readPackGUID(guid);
+ recvData.readPackGUID(guid);
int8 seatId;
- recv_data >> seatId;
+ recvData >> seatId;
if (vehicle_base->GetGUID() == guid)
GetPlayer()->ChangeSeat(seatId);
@@ -209,7 +209,7 @@ void WorldSession::HandleEjectPassenger(WorldPacket &data)
sLog->outError(LOG_FILTER_NETWORKIO, "HandleEjectPassenger: Player %u tried to eject invalid GUID "UI64FMTD, GetPlayer()->GetGUIDLow(), guid);
}
-void WorldSession::HandleRequestVehicleExit(WorldPacket& /*recv_data*/)
+void WorldSession::HandleRequestVehicleExit(WorldPacket& /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_REQUEST_VEHICLE_EXIT");
diff --git a/src/server/game/Handlers/VoiceChatHandler.cpp b/src/server/game/Handlers/VoiceChatHandler.cpp
index 34ad5ac3eae..785b4f8e5cd 100755
--- a/src/server/game/Handlers/VoiceChatHandler.cpp
+++ b/src/server/game/Handlers/VoiceChatHandler.cpp
@@ -22,24 +22,24 @@
#include "Opcodes.h"
#include "Log.h"
-void WorldSession::HandleVoiceSessionEnableOpcode(WorldPacket& recv_data)
+void WorldSession::HandleVoiceSessionEnableOpcode(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_VOICE_SESSION_ENABLE");
// uint8 isVoiceEnabled, uint8 isMicrophoneEnabled
- recv_data.read_skip<uint8>();
- recv_data.read_skip<uint8>();
+ recvData.read_skip<uint8>();
+ recvData.read_skip<uint8>();
}
-void WorldSession::HandleChannelVoiceOnOpcode(WorldPacket& /*recv_data*/)
+void WorldSession::HandleChannelVoiceOnOpcode(WorldPacket& /*recvData*/)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_CHANNEL_VOICE_ON");
// Enable Voice button in channel context menu
}
-void WorldSession::HandleSetActiveVoiceChannel(WorldPacket& recv_data)
+void WorldSession::HandleSetActiveVoiceChannel(WorldPacket& recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: CMSG_SET_ACTIVE_VOICE_CHANNEL");
- recv_data.read_skip<uint32>();
- recv_data.read_skip<char*>();
+ recvData.read_skip<uint32>();
+ recvData.read_skip<char*>();
}
diff --git a/src/server/game/Maps/MapUpdater.cpp b/src/server/game/Maps/MapUpdater.cpp
index b747d065a14..5e5f520505c 100644
--- a/src/server/game/Maps/MapUpdater.cpp
+++ b/src/server/game/Maps/MapUpdater.cpp
@@ -69,7 +69,7 @@ MapUpdater::~MapUpdater()
int MapUpdater::activate(size_t num_threads)
{
- return m_executor.activate((int)num_threads, new WDBThreadStartReq1, new WDBThreadEndReq1);
+ return m_executor.start((int)num_threads, new WDBThreadStartReq1, new WDBThreadEndReq1);
}
int MapUpdater::deactivate()
diff --git a/src/server/game/Movement/MovementGenerator.h b/src/server/game/Movement/MovementGenerator.h
index 0a2ebcfaeee..0c1fc8114ca 100755
--- a/src/server/game/Movement/MovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerator.h
@@ -52,29 +52,23 @@ class MovementGeneratorMedium : public MovementGenerator
void Initialize(Unit &u)
{
//u->AssertIsType<T>();
- (static_cast<D*>(this))->Initialize(*((T*)&u));
+ (static_cast<D*>(this))->DoInitialize(*((T*)&u));
}
void Finalize(Unit &u)
{
//u->AssertIsType<T>();
- (static_cast<D*>(this))->Finalize(*((T*)&u));
+ (static_cast<D*>(this))->DoFinalize(*((T*)&u));
}
void Reset(Unit &u)
{
//u->AssertIsType<T>();
- (static_cast<D*>(this))->Reset(*((T*)&u));
+ (static_cast<D*>(this))->DoReset(*((T*)&u));
}
bool Update(Unit &u, const uint32& time_diff)
{
//u->AssertIsType<T>();
- return (static_cast<D*>(this))->Update(*((T*)&u), time_diff);
+ return (static_cast<D*>(this))->DoUpdate(*((T*)&u), time_diff);
}
- public:
- // will not link if not overridden in the generators
- void Initialize(T &u);
- void Finalize(T &u);
- void Reset(T &u);
- bool Update(T &u, const uint32& time_diff);
};
struct SelectableMovement : public FactoryHolder<MovementGenerator, MovementGeneratorType>
diff --git a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp
index bd75e1c8912..b8925c8b512 100755
--- a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp
@@ -30,7 +30,7 @@
#endif
template<class T>
-void ConfusedMovementGenerator<T>::Initialize(T &unit)
+void ConfusedMovementGenerator<T>::DoInitialize(T &unit)
{
unit.StopMoving();
float const wander_distance = 4;
@@ -100,7 +100,7 @@ void ConfusedMovementGenerator<Player>::_InitSpecific(Player &, bool &is_water_o
}
template<class T>
-void ConfusedMovementGenerator<T>::Reset(T &unit)
+void ConfusedMovementGenerator<T>::DoReset(T &unit)
{
i_nextMove = 1;
i_nextMoveTime.Reset(0);
@@ -109,7 +109,7 @@ void ConfusedMovementGenerator<T>::Reset(T &unit)
}
template<class T>
-bool ConfusedMovementGenerator<T>::Update(T &unit, const uint32 &diff)
+bool ConfusedMovementGenerator<T>::DoUpdate(T &unit, const uint32 &diff)
{
if (unit.HasUnitState(UNIT_STATE_ROOT | UNIT_STATE_STUNNED | UNIT_STATE_DISTRACTED))
return true;
@@ -149,14 +149,14 @@ bool ConfusedMovementGenerator<T>::Update(T &unit, const uint32 &diff)
}
template<>
-void ConfusedMovementGenerator<Player>::Finalize(Player &unit)
+void ConfusedMovementGenerator<Player>::DoFinalize(Player &unit)
{
unit.RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_CONFUSED);
unit.ClearUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_CONFUSED_MOVE);
}
template<>
-void ConfusedMovementGenerator<Creature>::Finalize(Creature &unit)
+void ConfusedMovementGenerator<Creature>::DoFinalize(Creature &unit)
{
unit.RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_CONFUSED);
unit.ClearUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_CONFUSED_MOVE);
@@ -164,10 +164,10 @@ void ConfusedMovementGenerator<Creature>::Finalize(Creature &unit)
unit.SetTarget(unit.getVictim()->GetGUID());
}
-template void ConfusedMovementGenerator<Player>::Initialize(Player &player);
-template void ConfusedMovementGenerator<Creature>::Initialize(Creature &creature);
-template void ConfusedMovementGenerator<Player>::Reset(Player &player);
-template void ConfusedMovementGenerator<Creature>::Reset(Creature &creature);
-template bool ConfusedMovementGenerator<Player>::Update(Player &player, const uint32 &diff);
-template bool ConfusedMovementGenerator<Creature>::Update(Creature &creature, const uint32 &diff);
+template void ConfusedMovementGenerator<Player>::DoInitialize(Player &player);
+template void ConfusedMovementGenerator<Creature>::DoInitialize(Creature &creature);
+template void ConfusedMovementGenerator<Player>::DoReset(Player &player);
+template void ConfusedMovementGenerator<Creature>::DoReset(Creature &creature);
+template bool ConfusedMovementGenerator<Player>::DoUpdate(Player &player, const uint32 &diff);
+template bool ConfusedMovementGenerator<Creature>::DoUpdate(Creature &creature, const uint32 &diff);
diff --git a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h
index 7f2226ea069..1943b113888 100755
--- a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h
@@ -30,10 +30,10 @@ class ConfusedMovementGenerator : public MovementGeneratorMedium< T, ConfusedMov
public:
explicit ConfusedMovementGenerator() : i_nextMoveTime(0) {}
- void Initialize(T &);
- void Finalize(T &);
- void Reset(T &);
- bool Update(T &, const uint32 &);
+ void DoInitialize(T &);
+ void DoFinalize(T &);
+ void DoReset(T &);
+ bool DoUpdate(T &, const uint32 &);
MovementGeneratorType GetMovementGeneratorType() { return CONFUSED_MOTION_TYPE; }
private:
diff --git a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp
index c9497784988..e57e8ac7390 100755
--- a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp
@@ -282,7 +282,7 @@ bool FleeingMovementGenerator<T>::_setMoveData(T &owner)
}
template<class T>
-void FleeingMovementGenerator<T>::Initialize(T &owner)
+void FleeingMovementGenerator<T>::DoInitialize(T &owner)
{
if (!&owner)
return;
@@ -331,7 +331,7 @@ void FleeingMovementGenerator<Player>::_Init(Player &)
}
template<>
-void FleeingMovementGenerator<Player>::Finalize(Player &owner)
+void FleeingMovementGenerator<Player>::DoFinalize(Player &owner)
{
owner.RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING);
owner.ClearUnitState(UNIT_STATE_FLEEING|UNIT_STATE_FLEEING_MOVE);
@@ -339,7 +339,7 @@ void FleeingMovementGenerator<Player>::Finalize(Player &owner)
}
template<>
-void FleeingMovementGenerator<Creature>::Finalize(Creature &owner)
+void FleeingMovementGenerator<Creature>::DoFinalize(Creature &owner)
{
owner.RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING);
owner.ClearUnitState(UNIT_STATE_FLEEING|UNIT_STATE_FLEEING_MOVE);
@@ -348,13 +348,13 @@ void FleeingMovementGenerator<Creature>::Finalize(Creature &owner)
}
template<class T>
-void FleeingMovementGenerator<T>::Reset(T &owner)
+void FleeingMovementGenerator<T>::DoReset(T &owner)
{
- Initialize(owner);
+ DoInitialize(owner);
}
template<class T>
-bool FleeingMovementGenerator<T>::Update(T &owner, const uint32 &time_diff)
+bool FleeingMovementGenerator<T>::DoUpdate(T &owner, const uint32 &time_diff)
{
if (!&owner || !owner.isAlive())
return false;
@@ -371,18 +371,18 @@ bool FleeingMovementGenerator<T>::Update(T &owner, const uint32 &time_diff)
return true;
}
-template void FleeingMovementGenerator<Player>::Initialize(Player &);
-template void FleeingMovementGenerator<Creature>::Initialize(Creature &);
+template void FleeingMovementGenerator<Player>::DoInitialize(Player &);
+template void FleeingMovementGenerator<Creature>::DoInitialize(Creature &);
template bool FleeingMovementGenerator<Player>::_setMoveData(Player &);
template bool FleeingMovementGenerator<Creature>::_setMoveData(Creature &);
template bool FleeingMovementGenerator<Player>::_getPoint(Player &, float &, float &, float &);
template bool FleeingMovementGenerator<Creature>::_getPoint(Creature &, float &, float &, float &);
template void FleeingMovementGenerator<Player>::_setTargetLocation(Player &);
template void FleeingMovementGenerator<Creature>::_setTargetLocation(Creature &);
-template void FleeingMovementGenerator<Player>::Reset(Player &);
-template void FleeingMovementGenerator<Creature>::Reset(Creature &);
-template bool FleeingMovementGenerator<Player>::Update(Player &, const uint32 &);
-template bool FleeingMovementGenerator<Creature>::Update(Creature &, const uint32 &);
+template void FleeingMovementGenerator<Player>::DoReset(Player &);
+template void FleeingMovementGenerator<Creature>::DoReset(Creature &);
+template bool FleeingMovementGenerator<Player>::DoUpdate(Player &, const uint32 &);
+template bool FleeingMovementGenerator<Creature>::DoUpdate(Creature &, const uint32 &);
void TimedFleeingMovementGenerator::Finalize(Unit &owner)
{
diff --git a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h
index aec93ad3375..288abbb5753 100755
--- a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h
@@ -27,10 +27,10 @@ class FleeingMovementGenerator : public MovementGeneratorMedium< T, FleeingMovem
public:
FleeingMovementGenerator(uint64 fright) : i_frightGUID(fright), i_nextCheckTime(0) {}
- void Initialize(T &);
- void Finalize(T &);
- void Reset(T &);
- bool Update(T &, const uint32 &);
+ void DoInitialize(T &);
+ void DoFinalize(T &);
+ void DoReset(T &);
+ bool DoUpdate(T &, const uint32 &);
MovementGeneratorType GetMovementGeneratorType() { return FLEEING_MOTION_TYPE; }
diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp
index a8bdb698432..1e9ea3156d8 100755
--- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp
@@ -23,12 +23,12 @@
#include "MoveSplineInit.h"
#include "MoveSpline.h"
-void HomeMovementGenerator<Creature>::Initialize(Creature & owner)
+void HomeMovementGenerator<Creature>::DoInitialize(Creature & owner)
{
_setTargetLocation(owner);
}
-void HomeMovementGenerator<Creature>::Reset(Creature &)
+void HomeMovementGenerator<Creature>::DoReset(Creature &)
{
}
@@ -53,13 +53,13 @@ void HomeMovementGenerator<Creature>::_setTargetLocation(Creature & owner)
owner.ClearUnitState(UNIT_STATE_ALL_STATE & ~UNIT_STATE_EVADE);
}
-bool HomeMovementGenerator<Creature>::Update(Creature &owner, const uint32 /*time_diff*/)
+bool HomeMovementGenerator<Creature>::DoUpdate(Creature &owner, const uint32 /*time_diff*/)
{
arrived = owner.movespline->Finalized();
return !arrived;
}
-void HomeMovementGenerator<Creature>::Finalize(Creature& owner)
+void HomeMovementGenerator<Creature>::DoFinalize(Creature& owner)
{
if (arrived)
{
diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h
index 95eb05f281c..a3d53e24510 100755
--- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h
@@ -34,10 +34,10 @@ class HomeMovementGenerator<Creature> : public MovementGeneratorMedium< Creature
HomeMovementGenerator() : arrived(false) {}
~HomeMovementGenerator() {}
- void Initialize(Creature &);
- void Finalize(Creature &);
- void Reset(Creature &);
- bool Update(Creature &, const uint32);
+ void DoInitialize(Creature &);
+ void DoFinalize(Creature &);
+ void DoReset(Creature &);
+ bool DoUpdate(Creature &, const uint32);
MovementGeneratorType GetMovementGeneratorType() { return HOME_MOTION_TYPE; }
private:
diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
index 07a5761517e..91f77e8ebfe 100755
--- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp
@@ -27,7 +27,7 @@
//----- Point Movement Generator
template<class T>
-void PointMovementGenerator<T>::Initialize(T &unit)
+void PointMovementGenerator<T>::DoInitialize(T &unit)
{
if (!unit.IsStopped())
unit.StopMoving();
@@ -42,7 +42,7 @@ void PointMovementGenerator<T>::Initialize(T &unit)
}
template<class T>
-bool PointMovementGenerator<T>::Update(T &unit, const uint32 & /*diff*/)
+bool PointMovementGenerator<T>::DoUpdate(T &unit, const uint32 & /*diff*/)
{
if (!&unit)
return false;
@@ -69,7 +69,7 @@ bool PointMovementGenerator<T>::Update(T &unit, const uint32 & /*diff*/)
}
template<class T>
-void PointMovementGenerator<T>::Finalize(T &unit)
+void PointMovementGenerator<T>::DoFinalize(T &unit)
{
unit.ClearUnitState(UNIT_STATE_ROAMING|UNIT_STATE_ROAMING_MOVE);
@@ -78,7 +78,7 @@ void PointMovementGenerator<T>::Finalize(T &unit)
}
template<class T>
-void PointMovementGenerator<T>::Reset(T &unit)
+void PointMovementGenerator<T>::DoReset(T &unit)
{
if (!unit.IsStopped())
unit.StopMoving();
@@ -97,14 +97,14 @@ template <> void PointMovementGenerator<Creature>::MovementInform(Creature &unit
unit.AI()->MovementInform(POINT_MOTION_TYPE, id);
}
-template void PointMovementGenerator<Player>::Initialize(Player&);
-template void PointMovementGenerator<Creature>::Initialize(Creature&);
-template void PointMovementGenerator<Player>::Finalize(Player&);
-template void PointMovementGenerator<Creature>::Finalize(Creature&);
-template void PointMovementGenerator<Player>::Reset(Player&);
-template void PointMovementGenerator<Creature>::Reset(Creature&);
-template bool PointMovementGenerator<Player>::Update(Player &, const uint32 &);
-template bool PointMovementGenerator<Creature>::Update(Creature&, const uint32 &);
+template void PointMovementGenerator<Player>::DoInitialize(Player&);
+template void PointMovementGenerator<Creature>::DoInitialize(Creature&);
+template void PointMovementGenerator<Player>::DoFinalize(Player&);
+template void PointMovementGenerator<Creature>::DoFinalize(Creature&);
+template void PointMovementGenerator<Player>::DoReset(Player&);
+template void PointMovementGenerator<Creature>::DoReset(Creature&);
+template bool PointMovementGenerator<Player>::DoUpdate(Player &, const uint32 &);
+template bool PointMovementGenerator<Creature>::DoUpdate(Creature&, const uint32 &);
void AssistanceMovementGenerator::Finalize(Unit &unit)
{
diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h
index d2833a5ee10..62ffb931e6d 100755
--- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h
@@ -29,10 +29,10 @@ class PointMovementGenerator : public MovementGeneratorMedium< T, PointMovementG
PointMovementGenerator(uint32 _id, float _x, float _y, float _z, float _speed = 0.0f) : id(_id),
i_x(_x), i_y(_y), i_z(_z), speed(_speed) {}
- void Initialize(T &);
- void Finalize(T &);
- void Reset(T &);
- bool Update(T &, const uint32 &);
+ void DoInitialize(T &);
+ void DoFinalize(T &);
+ void DoReset(T &);
+ bool DoUpdate(T &, const uint32 &);
void MovementInform(T &);
diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
index 72725570826..4d74ba20d96 100755
--- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
@@ -114,7 +114,7 @@ void RandomMovementGenerator<Creature>::_setRandomLocation(Creature& creature)
}
template<>
-void RandomMovementGenerator<Creature>::Initialize(Creature &creature)
+void RandomMovementGenerator<Creature>::DoInitialize(Creature &creature)
{
if (!creature.isAlive())
return;
@@ -127,20 +127,20 @@ void RandomMovementGenerator<Creature>::Initialize(Creature &creature)
}
template<>
-void RandomMovementGenerator<Creature>::Reset(Creature &creature)
+void RandomMovementGenerator<Creature>::DoReset(Creature &creature)
{
- Initialize(creature);
+ DoInitialize(creature);
}
template<>
-void RandomMovementGenerator<Creature>::Finalize(Creature &creature)
+void RandomMovementGenerator<Creature>::DoFinalize(Creature &creature)
{
creature.ClearUnitState(UNIT_STATE_ROAMING|UNIT_STATE_ROAMING_MOVE);
creature.SetWalk(false);
}
template<>
-bool RandomMovementGenerator<Creature>::Update(Creature &creature, const uint32 diff)
+bool RandomMovementGenerator<Creature>::DoUpdate(Creature &creature, const uint32 diff)
{
if (creature.HasUnitState(UNIT_STATE_ROOT | UNIT_STATE_STUNNED | UNIT_STATE_DISTRACTED))
{
diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h
index 07ec3647052..449b2686a2d 100755
--- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h
@@ -28,10 +28,10 @@ class RandomMovementGenerator : public MovementGeneratorMedium< T, RandomMovemen
RandomMovementGenerator(float spawn_dist = 0.0f) : i_nextMoveTime(0), wander_distance(spawn_dist) {}
void _setRandomLocation(T &);
- void Initialize(T &);
- void Finalize(T &);
- void Reset(T &);
- bool Update(T &, const uint32);
+ void DoInitialize(T &);
+ void DoFinalize(T &);
+ void DoReset(T &);
+ bool DoUpdate(T &, const uint32);
bool GetResetPosition(T&, float& x, float& y, float& z);
MovementGeneratorType GetMovementGeneratorType() { return RANDOM_MOTION_TYPE; }
private:
diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp
index 2cd3d745750..7e74907040f 100755
--- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp
@@ -89,7 +89,6 @@ void TargetedMovementGeneratorMedium<T,D>::_setTargetLocation(T &owner)
Movement::MoveSplineInit init(owner);
init.MoveTo(x,y,z);
- init.SetFacing(i_target.getTarget());
init.SetWalk(((D*)this)->EnableWalking());
init.Launch();
}
@@ -121,7 +120,7 @@ void TargetedMovementGeneratorMedium<Creature,FollowMovementGenerator<Creature>
}
template<class T, typename D>
-bool TargetedMovementGeneratorMedium<T,D>::Update(T &owner, const uint32 & time_diff)
+bool TargetedMovementGeneratorMedium<T,D>::DoUpdate(T &owner, const uint32 & time_diff)
{
if (!i_target.isValid() || !i_target->IsInWorld())
return false;
@@ -190,14 +189,14 @@ void ChaseMovementGenerator<T>::_reachTarget(T &owner)
}
template<>
-void ChaseMovementGenerator<Player>::Initialize(Player &owner)
+void ChaseMovementGenerator<Player>::DoInitialize(Player &owner)
{
owner.AddUnitState(UNIT_STATE_CHASE|UNIT_STATE_CHASE_MOVE);
_setTargetLocation(owner);
}
template<>
-void ChaseMovementGenerator<Creature>::Initialize(Creature &owner)
+void ChaseMovementGenerator<Creature>::DoInitialize(Creature &owner)
{
owner.SetWalk(false);
owner.AddUnitState(UNIT_STATE_CHASE|UNIT_STATE_CHASE_MOVE);
@@ -205,15 +204,15 @@ void ChaseMovementGenerator<Creature>::Initialize(Creature &owner)
}
template<class T>
-void ChaseMovementGenerator<T>::Finalize(T &owner)
+void ChaseMovementGenerator<T>::DoFinalize(T &owner)
{
owner.ClearUnitState(UNIT_STATE_CHASE|UNIT_STATE_CHASE_MOVE);
}
template<class T>
-void ChaseMovementGenerator<T>::Reset(T &owner)
+void ChaseMovementGenerator<T>::DoReset(T &owner)
{
- Initialize(owner);
+ DoInitialize(owner);
}
template<class T>
@@ -261,7 +260,7 @@ void FollowMovementGenerator<Creature>::_updateSpeed(Creature &u)
}
template<>
-void FollowMovementGenerator<Player>::Initialize(Player &owner)
+void FollowMovementGenerator<Player>::DoInitialize(Player &owner)
{
owner.AddUnitState(UNIT_STATE_FOLLOW|UNIT_STATE_FOLLOW_MOVE);
_updateSpeed(owner);
@@ -269,7 +268,7 @@ void FollowMovementGenerator<Player>::Initialize(Player &owner)
}
template<>
-void FollowMovementGenerator<Creature>::Initialize(Creature &owner)
+void FollowMovementGenerator<Creature>::DoInitialize(Creature &owner)
{
owner.AddUnitState(UNIT_STATE_FOLLOW|UNIT_STATE_FOLLOW_MOVE);
_updateSpeed(owner);
@@ -277,16 +276,16 @@ void FollowMovementGenerator<Creature>::Initialize(Creature &owner)
}
template<class T>
-void FollowMovementGenerator<T>::Finalize(T &owner)
+void FollowMovementGenerator<T>::DoFinalize(T &owner)
{
owner.ClearUnitState(UNIT_STATE_FOLLOW|UNIT_STATE_FOLLOW_MOVE);
_updateSpeed(owner);
}
template<class T>
-void FollowMovementGenerator<T>::Reset(T &owner)
+void FollowMovementGenerator<T>::DoReset(T &owner)
{
- Initialize(owner);
+ DoInitialize(owner);
}
template<class T>
@@ -307,21 +306,21 @@ template void TargetedMovementGeneratorMedium<Player,ChaseMovementGenerator<Play
template void TargetedMovementGeneratorMedium<Player,FollowMovementGenerator<Player> >::_setTargetLocation(Player &);
template void TargetedMovementGeneratorMedium<Creature,ChaseMovementGenerator<Creature> >::_setTargetLocation(Creature &);
template void TargetedMovementGeneratorMedium<Creature,FollowMovementGenerator<Creature> >::_setTargetLocation(Creature &);
-template bool TargetedMovementGeneratorMedium<Player,ChaseMovementGenerator<Player> >::Update(Player &, const uint32 &);
-template bool TargetedMovementGeneratorMedium<Player,FollowMovementGenerator<Player> >::Update(Player &, const uint32 &);
-template bool TargetedMovementGeneratorMedium<Creature,ChaseMovementGenerator<Creature> >::Update(Creature &, const uint32 &);
-template bool TargetedMovementGeneratorMedium<Creature,FollowMovementGenerator<Creature> >::Update(Creature &, const uint32 &);
+template bool TargetedMovementGeneratorMedium<Player,ChaseMovementGenerator<Player> >::DoUpdate(Player &, const uint32 &);
+template bool TargetedMovementGeneratorMedium<Player,FollowMovementGenerator<Player> >::DoUpdate(Player &, const uint32 &);
+template bool TargetedMovementGeneratorMedium<Creature,ChaseMovementGenerator<Creature> >::DoUpdate(Creature &, const uint32 &);
+template bool TargetedMovementGeneratorMedium<Creature,FollowMovementGenerator<Creature> >::DoUpdate(Creature &, const uint32 &);
template void ChaseMovementGenerator<Player>::_reachTarget(Player &);
template void ChaseMovementGenerator<Creature>::_reachTarget(Creature &);
-template void ChaseMovementGenerator<Player>::Finalize(Player &);
-template void ChaseMovementGenerator<Creature>::Finalize(Creature &);
-template void ChaseMovementGenerator<Player>::Reset(Player &);
-template void ChaseMovementGenerator<Creature>::Reset(Creature &);
+template void ChaseMovementGenerator<Player>::DoFinalize(Player &);
+template void ChaseMovementGenerator<Creature>::DoFinalize(Creature &);
+template void ChaseMovementGenerator<Player>::DoReset(Player &);
+template void ChaseMovementGenerator<Creature>::DoReset(Creature &);
template void ChaseMovementGenerator<Player>::MovementInform(Player &unit);
-template void FollowMovementGenerator<Player>::Finalize(Player &);
-template void FollowMovementGenerator<Creature>::Finalize(Creature &);
-template void FollowMovementGenerator<Player>::Reset(Player &);
-template void FollowMovementGenerator<Creature>::Reset(Creature &);
+template void FollowMovementGenerator<Player>::DoFinalize(Player &);
+template void FollowMovementGenerator<Creature>::DoFinalize(Creature &);
+template void FollowMovementGenerator<Player>::DoReset(Player &);
+template void FollowMovementGenerator<Creature>::DoReset(Creature &);
template void FollowMovementGenerator<Player>::MovementInform(Player &unit);
diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h
index 29fd73624e1..94b4078efbd 100755
--- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h
@@ -46,7 +46,7 @@ class TargetedMovementGeneratorMedium : public MovementGeneratorMedium< T, D >,
~TargetedMovementGeneratorMedium() {}
public:
- bool Update(T &, const uint32 &);
+ bool DoUpdate(T &, const uint32 &);
Unit* GetTarget() const { return i_target.getTarget(); }
void unitSpeedChanged() { i_recalculateTravel=true; }
@@ -74,9 +74,9 @@ class ChaseMovementGenerator : public TargetedMovementGeneratorMedium<T, ChaseMo
MovementGeneratorType GetMovementGeneratorType() { return CHASE_MOTION_TYPE; }
- void Initialize(T &);
- void Finalize(T &);
- void Reset(T &);
+ void DoInitialize(T &);
+ void DoFinalize(T &);
+ void DoReset(T &);
void MovementInform(T &);
static void _clearUnitStateMove(T &u) { u.ClearUnitState(UNIT_STATE_CHASE_MOVE); }
@@ -98,9 +98,9 @@ class FollowMovementGenerator : public TargetedMovementGeneratorMedium<T, Follow
MovementGeneratorType GetMovementGeneratorType() { return FOLLOW_MOTION_TYPE; }
- void Initialize(T &);
- void Finalize(T &);
- void Reset(T &);
+ void DoInitialize(T &);
+ void DoFinalize(T &);
+ void DoReset(T &);
void MovementInform(T &);
static void _clearUnitStateMove(T &u) { u.ClearUnitState(UNIT_STATE_FOLLOW_MOVE); }
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
index 37a1fa84d80..5a65e6e3493 100755
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
@@ -48,19 +48,19 @@ void WaypointMovementGenerator<Creature>::LoadPath(Creature &creature)
StartMoveNow(creature);
}
-void WaypointMovementGenerator<Creature>::Initialize(Creature &creature)
+void WaypointMovementGenerator<Creature>::DoInitialize(Creature &creature)
{
LoadPath(creature);
creature.AddUnitState(UNIT_STATE_ROAMING|UNIT_STATE_ROAMING_MOVE);
}
-void WaypointMovementGenerator<Creature>::Finalize(Creature &creature)
+void WaypointMovementGenerator<Creature>::DoFinalize(Creature &creature)
{
creature.ClearUnitState(UNIT_STATE_ROAMING|UNIT_STATE_ROAMING_MOVE);
creature.SetWalk(false);
}
-void WaypointMovementGenerator<Creature>::Reset(Creature &creature)
+void WaypointMovementGenerator<Creature>::DoReset(Creature &creature)
{
creature.AddUnitState(UNIT_STATE_ROAMING|UNIT_STATE_ROAMING_MOVE);
StartMoveNow(creature);
@@ -130,7 +130,7 @@ bool WaypointMovementGenerator<Creature>::StartMove(Creature &creature)
return true;
}
-bool WaypointMovementGenerator<Creature>::Update(Creature &creature, const uint32 &diff)
+bool WaypointMovementGenerator<Creature>::DoUpdate(Creature &creature, const uint32 &diff)
{
// Waypoint movement can be switched on/off
// This is quite handy for escort quests and other stuff
@@ -196,13 +196,13 @@ uint32 FlightPathMovementGenerator::GetPathAtMapEnd() const
return i_path->size();
}
-void FlightPathMovementGenerator::Initialize(Player &player)
+void FlightPathMovementGenerator::DoInitialize(Player &player)
{
- Reset(player);
+ DoReset(player);
InitEndGridInfo();
}
-void FlightPathMovementGenerator::Finalize(Player& player)
+void FlightPathMovementGenerator::DoFinalize(Player& player)
{
// remove flag to prevent send object build movement packets for flight state and crash (movement generator already not at top of stack)
player.ClearUnitState(UNIT_STATE_IN_FLIGHT);
@@ -222,7 +222,7 @@ void FlightPathMovementGenerator::Finalize(Player& player)
#define PLAYER_FLIGHT_SPEED 32.0f
-void FlightPathMovementGenerator::Reset(Player & player)
+void FlightPathMovementGenerator::DoReset(Player & player)
{
player.getHostileRefManager().setOnlineOfflineState(false);
player.AddUnitState(UNIT_STATE_IN_FLIGHT);
@@ -241,7 +241,7 @@ void FlightPathMovementGenerator::Reset(Player & player)
init.Launch();
}
-bool FlightPathMovementGenerator::Update(Player &player, const uint32& /*diff*/)
+bool FlightPathMovementGenerator::DoUpdate(Player &player, const uint32& /*diff*/)
{
uint32 pointId = (uint32)player.movespline->currentPathIdx();
if (pointId > i_currentNode)
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
index 0d8f047c83a..bb6381da2f0 100755
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
@@ -65,10 +65,10 @@ class WaypointMovementGenerator<Creature> : public MovementGeneratorMedium< Crea
WaypointMovementGenerator(uint32 _path_id = 0, bool _repeating = true)
: i_nextMoveTime(0), m_isArrivalDone(false), path_id(_path_id), repeating(_repeating) {}
~WaypointMovementGenerator() { i_path = NULL; }
- void Initialize(Creature &);
- void Finalize(Creature &);
- void Reset(Creature &);
- bool Update(Creature &, const uint32 &diff);
+ void DoInitialize(Creature &);
+ void DoFinalize(Creature &);
+ void DoReset(Creature &);
+ bool DoUpdate(Creature &, const uint32 &diff);
void MovementInform(Creature &);
@@ -118,10 +118,10 @@ class FlightPathMovementGenerator : public MovementGeneratorMedium< Player, Flig
i_path = &pathnodes;
i_currentNode = startNode;
}
- void Initialize(Player &);
- void Reset(Player &);
- void Finalize(Player &);
- bool Update(Player &, const uint32&);
+ void DoInitialize(Player &);
+ void DoReset(Player &);
+ void DoFinalize(Player &);
+ bool DoUpdate(Player &, const uint32&);
MovementGeneratorType GetMovementGeneratorType() { return FLIGHT_MOTION_TYPE; }
TaxiPathNodeList const& GetPath() { return *i_path; }
diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp
index 699d054be4b..7160f64c0fb 100644
--- a/src/server/game/Movement/Spline/MoveSpline.cpp
+++ b/src/server/game/Movement/Spline/MoveSpline.cpp
@@ -19,6 +19,7 @@
#include "MoveSpline.h"
#include <sstream>
#include "Log.h"
+#include "Creature.h"
namespace Movement{
@@ -195,12 +196,12 @@ MoveSpline::MoveSpline() : m_Id(0), time_passed(0),
/// ============================================================================================
-bool MoveSplineInitArgs::Validate() const
+bool MoveSplineInitArgs::Validate(Unit* unit) const
{
#define CHECK(exp) \
if (!(exp))\
{\
- sLog->outError(LOG_FILTER_GENERAL, "MoveSplineInitArgs::Validate: expression '%s' failed", #exp);\
+ sLog->outError(LOG_FILTER_GENERAL, "MoveSplineInitArgs::Validate: expression '%s' failed for GUID: %u", #exp, unit->GetTypeId() == TYPEID_PLAYER ? unit->GetGUIDLow() : unit->ToCreature()->GetDBTableGUIDLow());\
return false;\
}
CHECK(path.size() > 1);
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp
index fec629c3329..7d533593878 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.cpp
+++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp
@@ -98,7 +98,7 @@ namespace Movement
if (!args.HasVelocity)
args.velocity = unit.GetSpeed(SelectSpeedType(moveFlags));
- if (!args.Validate())
+ if (!args.Validate(&unit))
return;
if (moveFlags & MOVEMENTFLAG_ROOT)
diff --git a/src/server/game/Movement/Spline/MoveSplineInitArgs.h b/src/server/game/Movement/Spline/MoveSplineInitArgs.h
index de02b35d0a0..32045629c9f 100644
--- a/src/server/game/Movement/Spline/MoveSplineInitArgs.h
+++ b/src/server/game/Movement/Spline/MoveSplineInitArgs.h
@@ -22,6 +22,8 @@
#include "MoveSplineFlag.h"
#include <G3D/Vector3.h>
+class Unit;
+
namespace Movement
{
typedef std::vector<Vector3> PointsArray;
@@ -61,7 +63,7 @@ namespace Movement
bool TransformForTransport;
/** Returns true to show that the arguments were configured correctly and MoveSpline initialization will succeed. */
- bool Validate() const;
+ bool Validate(Unit* unit) const;
private:
bool _checkPathBounds() const;
};
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index af2ff2c6d86..9078f6720a0 100755
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -688,7 +688,7 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
/*0x293*/ { "SMSG_LFG_OFFER_CONTINUE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
/*0x294*/ { "CMSG_TEST_DROP_RATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL },
/*0x295*/ { "SMSG_TEST_DROP_RATE_RESULT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
- /*0x296*/ { "CMSG_LFG_GET_STATUS", STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL },
+ /*0x296*/ { "CMSG_LFG_GET_STATUS", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleLfgGetStatus },
/*0x297*/ { "SMSG_SHOW_MAILBOX", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
/*0x298*/ { "SMSG_RESET_RANGED_COMBAT_TIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
/*0x299*/ { "SMSG_MEETINGSTONE_MEMBER_ADDED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide },
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index e91ef9530c2..1158559f315 100755
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -418,7 +418,7 @@ class WorldSession
void HandlePlayerLoginOpcode(WorldPacket& recvPacket);
void HandleCharEnum(PreparedQueryResult result);
void HandlePlayerLogin(LoginQueryHolder * holder);
- void HandleCharFactionOrRaceChange(WorldPacket& recv_data);
+ void HandleCharFactionOrRaceChange(WorldPacket& recvData);
// played time
void HandlePlayedTime(WorldPacket& recvPacket);
@@ -435,15 +435,15 @@ class WorldSession
void HandleInspectHonorStatsOpcode(WorldPacket& recvPacket);
void HandleMoveWaterWalkAck(WorldPacket& recvPacket);
- void HandleFeatherFallAck(WorldPacket& recv_data);
+ void HandleFeatherFallAck(WorldPacket& recvData);
- void HandleMoveHoverAck(WorldPacket& recv_data);
+ void HandleMoveHoverAck(WorldPacket& recvData);
void HandleMountSpecialAnimOpcode(WorldPacket& recvdata);
// character view
- void HandleShowingHelmOpcode(WorldPacket& recv_data);
- void HandleShowingCloakOpcode(WorldPacket& recv_data);
+ void HandleShowingHelmOpcode(WorldPacket& recvData);
+ void HandleShowingCloakOpcode(WorldPacket& recvData);
// repair
void HandleRepairItemOpcode(WorldPacket& recvPacket);
@@ -452,7 +452,7 @@ class WorldSession
void HandleMoveKnockBackAck(WorldPacket& recvPacket);
void HandleMoveTeleportAck(WorldPacket& recvPacket);
- void HandleForceSpeedChangeAck(WorldPacket& recv_data);
+ void HandleForceSpeedChangeAck(WorldPacket& recvData);
void HandlePingOpcode(WorldPacket& recvPacket);
void HandleAuthSessionOpcode(WorldPacket& recvPacket);
@@ -497,10 +497,10 @@ class WorldSession
void HandleAreaTriggerOpcode(WorldPacket& recvPacket);
- void HandleSetFactionAtWar(WorldPacket& recv_data);
- void HandleSetFactionCheat(WorldPacket& recv_data);
- void HandleSetWatchedFactionOpcode(WorldPacket& recv_data);
- void HandleSetFactionInactiveOpcode(WorldPacket& recv_data);
+ void HandleSetFactionAtWar(WorldPacket& recvData);
+ void HandleSetFactionCheat(WorldPacket& recvData);
+ void HandleSetWatchedFactionOpcode(WorldPacket& recvData);
+ void HandleSetFactionInactiveOpcode(WorldPacket& recvData);
void HandleUpdateAccountData(WorldPacket& recvPacket);
void HandleRequestAccountData(WorldPacket& recvPacket);
@@ -522,17 +522,17 @@ class WorldSession
void HandleMoveWorldportAckOpcode(); // for server-side calls
void HandleMovementOpcodes(WorldPacket& recvPacket);
- void HandleSetActiveMoverOpcode(WorldPacket& recv_data);
- void HandleMoveNotActiveMover(WorldPacket& recv_data);
- void HandleDismissControlledVehicle(WorldPacket& recv_data);
- void HandleRequestVehicleExit(WorldPacket& recv_data);
- void HandleChangeSeatsOnControlledVehicle(WorldPacket& recv_data);
- void HandleMoveTimeSkippedOpcode(WorldPacket& recv_data);
+ void HandleSetActiveMoverOpcode(WorldPacket& recvData);
+ void HandleMoveNotActiveMover(WorldPacket& recvData);
+ void HandleDismissControlledVehicle(WorldPacket& recvData);
+ void HandleRequestVehicleExit(WorldPacket& recvData);
+ void HandleChangeSeatsOnControlledVehicle(WorldPacket& recvData);
+ void HandleMoveTimeSkippedOpcode(WorldPacket& recvData);
- void HandleRequestRaidInfoOpcode(WorldPacket& recv_data);
+ void HandleRequestRaidInfoOpcode(WorldPacket& recvData);
- void HandleBattlefieldStatusOpcode(WorldPacket& recv_data);
- void HandleBattleMasterHelloOpcode(WorldPacket& recv_data);
+ void HandleBattlefieldStatusOpcode(WorldPacket& recvData);
+ void HandleBattleMasterHelloOpcode(WorldPacket& recvData);
void HandleGroupInviteOpcode(WorldPacket& recvPacket);
//void HandleGroupCancelOpcode(WorldPacket& recvPacket);
@@ -542,26 +542,26 @@ class WorldSession
void HandleGroupUninviteGuidOpcode(WorldPacket& recvPacket);
void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
void HandleGroupDisbandOpcode(WorldPacket& recvPacket);
- void HandleOptOutOfLootOpcode(WorldPacket& recv_data);
+ void HandleOptOutOfLootOpcode(WorldPacket& recvData);
void HandleLootMethodOpcode(WorldPacket& recvPacket);
- void HandleLootRoll(WorldPacket& recv_data);
- void HandleRequestPartyMemberStatsOpcode(WorldPacket& recv_data);
- void HandleRaidTargetUpdateOpcode(WorldPacket& recv_data);
- void HandleRaidReadyCheckOpcode(WorldPacket& recv_data);
- void HandleRaidReadyCheckFinishedOpcode(WorldPacket& recv_data);
- void HandleGroupRaidConvertOpcode(WorldPacket& recv_data);
- void HandleGroupChangeSubGroupOpcode(WorldPacket& recv_data);
- void HandleGroupAssistantLeaderOpcode(WorldPacket& recv_data);
- void HandlePartyAssignmentOpcode(WorldPacket& recv_data);
-
- void HandlePetitionBuyOpcode(WorldPacket& recv_data);
- void HandlePetitionShowSignOpcode(WorldPacket& recv_data);
- void HandlePetitionQueryOpcode(WorldPacket& recv_data);
- void HandlePetitionRenameOpcode(WorldPacket& recv_data);
- void HandlePetitionSignOpcode(WorldPacket& recv_data);
- void HandlePetitionDeclineOpcode(WorldPacket& recv_data);
- void HandleOfferPetitionOpcode(WorldPacket& recv_data);
- void HandleTurnInPetitionOpcode(WorldPacket& recv_data);
+ void HandleLootRoll(WorldPacket& recvData);
+ void HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData);
+ void HandleRaidTargetUpdateOpcode(WorldPacket& recvData);
+ void HandleRaidReadyCheckOpcode(WorldPacket& recvData);
+ void HandleRaidReadyCheckFinishedOpcode(WorldPacket& recvData);
+ void HandleGroupRaidConvertOpcode(WorldPacket& recvData);
+ void HandleGroupChangeSubGroupOpcode(WorldPacket& recvData);
+ void HandleGroupAssistantLeaderOpcode(WorldPacket& recvData);
+ void HandlePartyAssignmentOpcode(WorldPacket& recvData);
+
+ void HandlePetitionBuyOpcode(WorldPacket& recvData);
+ void HandlePetitionShowSignOpcode(WorldPacket& recvData);
+ void HandlePetitionQueryOpcode(WorldPacket& recvData);
+ void HandlePetitionRenameOpcode(WorldPacket& recvData);
+ void HandlePetitionSignOpcode(WorldPacket& recvData);
+ void HandlePetitionDeclineOpcode(WorldPacket& recvData);
+ void HandleOfferPetitionOpcode(WorldPacket& recvData);
+ void HandleTurnInPetitionOpcode(WorldPacket& recvData);
void HandleGuildQueryOpcode(WorldPacket& recvPacket);
void HandleGuildCreateOpcode(WorldPacket& recvPacket);
@@ -629,25 +629,25 @@ class WorldSession
void HandleUnacceptTradeOpcode(WorldPacket& recvPacket);
void HandleAuctionHelloOpcode(WorldPacket& recvPacket);
- void HandleAuctionListItems(WorldPacket& recv_data);
- void HandleAuctionListBidderItems(WorldPacket& recv_data);
- void HandleAuctionSellItem(WorldPacket& recv_data);
- void HandleAuctionRemoveItem(WorldPacket& recv_data);
- void HandleAuctionListOwnerItems(WorldPacket& recv_data);
- void HandleAuctionPlaceBid(WorldPacket& recv_data);
- void HandleAuctionListPendingSales(WorldPacket& recv_data);
-
- void HandleGetMailList(WorldPacket& recv_data);
- void HandleSendMail(WorldPacket& recv_data);
- void HandleMailTakeMoney(WorldPacket& recv_data);
- void HandleMailTakeItem(WorldPacket& recv_data);
- void HandleMailMarkAsRead(WorldPacket& recv_data);
- void HandleMailReturnToSender(WorldPacket& recv_data);
- void HandleMailDelete(WorldPacket& recv_data);
- void HandleItemTextQuery(WorldPacket& recv_data);
- void HandleMailCreateTextItem(WorldPacket& recv_data);
- void HandleQueryNextMailTime(WorldPacket& recv_data);
- void HandleCancelChanneling(WorldPacket& recv_data);
+ void HandleAuctionListItems(WorldPacket& recvData);
+ void HandleAuctionListBidderItems(WorldPacket& recvData);
+ void HandleAuctionSellItem(WorldPacket& recvData);
+ void HandleAuctionRemoveItem(WorldPacket& recvData);
+ void HandleAuctionListOwnerItems(WorldPacket& recvData);
+ void HandleAuctionPlaceBid(WorldPacket& recvData);
+ void HandleAuctionListPendingSales(WorldPacket& recvData);
+
+ void HandleGetMailList(WorldPacket& recvData);
+ void HandleSendMail(WorldPacket& recvData);
+ void HandleMailTakeMoney(WorldPacket& recvData);
+ void HandleMailTakeItem(WorldPacket& recvData);
+ void HandleMailMarkAsRead(WorldPacket& recvData);
+ void HandleMailReturnToSender(WorldPacket& recvData);
+ void HandleMailDelete(WorldPacket& recvData);
+ void HandleItemTextQuery(WorldPacket& recvData);
+ void HandleMailCreateTextItem(WorldPacket& recvData);
+ void HandleQueryNextMailTime(WorldPacket& recvData);
+ void HandleCancelChanneling(WorldPacket& recvData);
void SendItemPageInfo(ItemTemplate* itemProto);
void HandleSplitItemOpcode(WorldPacket& recvPacket);
@@ -693,16 +693,15 @@ class WorldSession
void HandleQuestgiverChooseRewardOpcode(WorldPacket& recvPacket);
void HandleQuestgiverRequestRewardOpcode(WorldPacket& recvPacket);
void HandleQuestQueryOpcode(WorldPacket& recvPacket);
- void HandleQuestgiverCancel(WorldPacket& recv_data);
- void HandleQuestLogSwapQuest(WorldPacket& recv_data);
- void HandleQuestLogRemoveQuest(WorldPacket& recv_data);
- void HandleQuestConfirmAccept(WorldPacket& recv_data);
- void HandleQuestgiverCompleteQuest(WorldPacket& recv_data);
+ void HandleQuestgiverCancel(WorldPacket& recvData);
+ void HandleQuestLogSwapQuest(WorldPacket& recvData);
+ void HandleQuestLogRemoveQuest(WorldPacket& recvData);
+ void HandleQuestConfirmAccept(WorldPacket& recvData);
+ void HandleQuestgiverCompleteQuest(WorldPacket& recvData);
void HandleQuestgiverQuestAutoLaunch(WorldPacket& recvPacket);
void HandlePushQuestToParty(WorldPacket& recvPacket);
void HandleQuestPushResult(WorldPacket& recvPacket);
- bool processChatmessageFurtherAfterSecurityChecks(std::string&, uint32);
void HandleMessagechatOpcode(WorldPacket& recvPacket);
void SendPlayerNotFoundNotice(std::string const& name);
void SendPlayerAmbiguousNotice(std::string const& name);
@@ -715,7 +714,7 @@ class WorldSession
void HandleCorpseQueryOpcode(WorldPacket& recvPacket);
void HandleCorpseMapPositionQuery(WorldPacket& recvPacket);
void HandleResurrectResponseOpcode(WorldPacket& recvPacket);
- void HandleSummonResponseOpcode(WorldPacket& recv_data);
+ void HandleSummonResponseOpcode(WorldPacket& recvData);
void HandleJoinChannel(WorldPacket& recvPacket);
void HandleLeaveChannel(WorldPacket& recvPacket);
@@ -744,58 +743,58 @@ class WorldSession
void HandlePageQuerySkippedOpcode(WorldPacket& recvPacket);
void HandlePageTextQueryOpcode(WorldPacket& recvPacket);
- void HandleTutorialFlag (WorldPacket& recv_data);
- void HandleTutorialClear(WorldPacket& recv_data);
- void HandleTutorialReset(WorldPacket& recv_data);
+ void HandleTutorialFlag (WorldPacket& recvData);
+ void HandleTutorialClear(WorldPacket& recvData);
+ void HandleTutorialReset(WorldPacket& recvData);
//Pet
- void HandlePetAction(WorldPacket& recv_data);
- void HandlePetStopAttack(WorldPacket& recv_data);
- void HandlePetActionHelper(Unit* pet, uint64 guid1, uint16 spellid, uint16 flag, uint64 guid2);
- void HandlePetNameQuery(WorldPacket& recv_data);
- void HandlePetSetAction(WorldPacket& recv_data);
- void HandlePetAbandon(WorldPacket& recv_data);
- void HandlePetRename(WorldPacket& recv_data);
+ void HandlePetAction(WorldPacket& recvData);
+ void HandlePetStopAttack(WorldPacket& recvData);
+ void HandlePetActionHelper(Unit* pet, uint64 guid1, uint32 spellid, uint16 flag, uint64 guid2);
+ void HandlePetNameQuery(WorldPacket& recvData);
+ void HandlePetSetAction(WorldPacket& recvData);
+ void HandlePetAbandon(WorldPacket& recvData);
+ void HandlePetRename(WorldPacket& recvData);
void HandlePetCancelAuraOpcode(WorldPacket& recvPacket);
void HandlePetSpellAutocastOpcode(WorldPacket& recvPacket);
void HandlePetCastSpellOpcode(WorldPacket& recvPacket);
void HandlePetLearnTalent(WorldPacket& recvPacket);
void HandleLearnPreviewTalentsPet(WorldPacket& recvPacket);
- void HandleSetActionBarToggles(WorldPacket& recv_data);
+ void HandleSetActionBarToggles(WorldPacket& recvData);
- void HandleCharRenameOpcode(WorldPacket& recv_data);
+ void HandleCharRenameOpcode(WorldPacket& recvData);
void HandleChangePlayerNameOpcodeCallBack(PreparedQueryResult result, std::string const& newName);
- void HandleSetPlayerDeclinedNames(WorldPacket& recv_data);
+ void HandleSetPlayerDeclinedNames(WorldPacket& recvData);
- void HandleTotemDestroyed(WorldPacket& recv_data);
- void HandleDismissCritter(WorldPacket& recv_data);
+ void HandleTotemDestroyed(WorldPacket& recvData);
+ void HandleDismissCritter(WorldPacket& recvData);
//Battleground
- void HandleBattlemasterHelloOpcode(WorldPacket& recv_data);
- void HandleBattlemasterJoinOpcode(WorldPacket& recv_data);
- void HandleBattlegroundPlayerPositionsOpcode(WorldPacket& recv_data);
- void HandlePVPLogDataOpcode(WorldPacket& recv_data);
- void HandleBattleFieldPortOpcode(WorldPacket& recv_data);
- void HandleBattlefieldListOpcode(WorldPacket& recv_data);
- void HandleLeaveBattlefieldOpcode(WorldPacket& recv_data);
- void HandleBattlemasterJoinArena(WorldPacket& recv_data);
- void HandleReportPvPAFK(WorldPacket& recv_data);
-
- void HandleWardenDataOpcode(WorldPacket& recv_data);
- void HandleWorldTeleportOpcode(WorldPacket& recv_data);
- void HandleMinimapPingOpcode(WorldPacket& recv_data);
- void HandleRandomRollOpcode(WorldPacket& recv_data);
- void HandleFarSightOpcode(WorldPacket& recv_data);
- void HandleSetDungeonDifficultyOpcode(WorldPacket& recv_data);
- void HandleSetRaidDifficultyOpcode(WorldPacket& recv_data);
- void HandleMoveSetCanFlyAckOpcode(WorldPacket& recv_data);
- void HandleSetTitleOpcode(WorldPacket& recv_data);
- void HandleRealmSplitOpcode(WorldPacket& recv_data);
- void HandleTimeSyncResp(WorldPacket& recv_data);
- void HandleWhoisOpcode(WorldPacket& recv_data);
- void HandleResetInstancesOpcode(WorldPacket& recv_data);
- void HandleHearthAndResurrect(WorldPacket& recv_data);
+ void HandleBattlemasterHelloOpcode(WorldPacket& recvData);
+ void HandleBattlemasterJoinOpcode(WorldPacket& recvData);
+ void HandleBattlegroundPlayerPositionsOpcode(WorldPacket& recvData);
+ void HandlePVPLogDataOpcode(WorldPacket& recvData);
+ void HandleBattleFieldPortOpcode(WorldPacket& recvData);
+ void HandleBattlefieldListOpcode(WorldPacket& recvData);
+ void HandleLeaveBattlefieldOpcode(WorldPacket& recvData);
+ void HandleBattlemasterJoinArena(WorldPacket& recvData);
+ void HandleReportPvPAFK(WorldPacket& recvData);
+
+ void HandleWardenDataOpcode(WorldPacket& recvData);
+ void HandleWorldTeleportOpcode(WorldPacket& recvData);
+ void HandleMinimapPingOpcode(WorldPacket& recvData);
+ void HandleRandomRollOpcode(WorldPacket& recvData);
+ void HandleFarSightOpcode(WorldPacket& recvData);
+ void HandleSetDungeonDifficultyOpcode(WorldPacket& recvData);
+ void HandleSetRaidDifficultyOpcode(WorldPacket& recvData);
+ void HandleMoveSetCanFlyAckOpcode(WorldPacket& recvData);
+ void HandleSetTitleOpcode(WorldPacket& recvData);
+ void HandleRealmSplitOpcode(WorldPacket& recvData);
+ void HandleTimeSyncResp(WorldPacket& recvData);
+ void HandleWhoisOpcode(WorldPacket& recvData);
+ void HandleResetInstancesOpcode(WorldPacket& recvData);
+ void HandleHearthAndResurrect(WorldPacket& recvData);
void HandleInstanceLockResponse(WorldPacket& recvPacket);
// Battlefield
@@ -804,22 +803,23 @@ class WorldSession
void SendBfQueueInviteResponse(uint32 BattleId,uint32 ZoneId, bool CanQueue = true, bool Full = false);
void SendBfEntered(uint32 BattleId);
void SendBfLeaveMessage(uint32 BattleId, BFLeaveReason reason = BF_LEAVE_REASON_EXITED);
- void HandleBfQueueInviteResponse(WorldPacket &recv_data);
- void HandleBfEntryInviteResponse(WorldPacket &recv_data);
- void HandleBfExitRequest(WorldPacket &recv_data);
+ void HandleBfQueueInviteResponse(WorldPacket &recvData);
+ void HandleBfEntryInviteResponse(WorldPacket &recvData);
+ void HandleBfExitRequest(WorldPacket &recvData);
// Looking for Dungeon/Raid
- void HandleLfgSetCommentOpcode(WorldPacket& recv_data);
- void HandleLfgPlayerLockInfoRequestOpcode(WorldPacket& recv_data);
- void HandleLfgPartyLockInfoRequestOpcode(WorldPacket& recv_data);
- void HandleLfgJoinOpcode(WorldPacket& recv_data);
- void HandleLfgLeaveOpcode(WorldPacket& recv_data);
- void HandleLfgSetRolesOpcode(WorldPacket& recv_data);
- void HandleLfgProposalResultOpcode(WorldPacket& recv_data);
- void HandleLfgSetBootVoteOpcode(WorldPacket& recv_data);
- void HandleLfgTeleportOpcode(WorldPacket& recv_data);
- void HandleLfrJoinOpcode(WorldPacket& recv_data);
- void HandleLfrLeaveOpcode(WorldPacket& recv_data);
+ void HandleLfgSetCommentOpcode(WorldPacket& recvData);
+ void HandleLfgPlayerLockInfoRequestOpcode(WorldPacket& recvData);
+ void HandleLfgPartyLockInfoRequestOpcode(WorldPacket& recvData);
+ void HandleLfgJoinOpcode(WorldPacket& recvData);
+ void HandleLfgLeaveOpcode(WorldPacket& recvData);
+ void HandleLfgSetRolesOpcode(WorldPacket& recvData);
+ void HandleLfgProposalResultOpcode(WorldPacket& recvData);
+ void HandleLfgSetBootVoteOpcode(WorldPacket& recvData);
+ void HandleLfgTeleportOpcode(WorldPacket& recvData);
+ void HandleLfrJoinOpcode(WorldPacket& recvData);
+ void HandleLfrLeaveOpcode(WorldPacket& recvData);
+ void HandleLfgGetStatus(WorldPacket& recvData);
void SendLfgUpdatePlayer(const LfgUpdateData& updateData);
void SendLfgUpdateParty(const LfgUpdateData& updateData);
@@ -836,55 +836,55 @@ class WorldSession
void SendLfgTeleportError(uint8 err);
// Arena Team
- void HandleInspectArenaTeamsOpcode(WorldPacket& recv_data);
- void HandleArenaTeamQueryOpcode(WorldPacket& recv_data);
- void HandleArenaTeamRosterOpcode(WorldPacket& recv_data);
- void HandleArenaTeamInviteOpcode(WorldPacket& recv_data);
- void HandleArenaTeamAcceptOpcode(WorldPacket& recv_data);
- void HandleArenaTeamDeclineOpcode(WorldPacket& recv_data);
- void HandleArenaTeamLeaveOpcode(WorldPacket& recv_data);
- void HandleArenaTeamRemoveOpcode(WorldPacket& recv_data);
- void HandleArenaTeamDisbandOpcode(WorldPacket& recv_data);
- void HandleArenaTeamLeaderOpcode(WorldPacket& recv_data);
-
- void HandleAreaSpiritHealerQueryOpcode(WorldPacket& recv_data);
- void HandleAreaSpiritHealerQueueOpcode(WorldPacket& recv_data);
- void HandleCancelMountAuraOpcode(WorldPacket& recv_data);
- void HandleSelfResOpcode(WorldPacket& recv_data);
- void HandleComplainOpcode(WorldPacket& recv_data);
- void HandleRequestPetInfoOpcode(WorldPacket& recv_data);
+ void HandleInspectArenaTeamsOpcode(WorldPacket& recvData);
+ void HandleArenaTeamQueryOpcode(WorldPacket& recvData);
+ void HandleArenaTeamRosterOpcode(WorldPacket& recvData);
+ void HandleArenaTeamInviteOpcode(WorldPacket& recvData);
+ void HandleArenaTeamAcceptOpcode(WorldPacket& recvData);
+ void HandleArenaTeamDeclineOpcode(WorldPacket& recvData);
+ void HandleArenaTeamLeaveOpcode(WorldPacket& recvData);
+ void HandleArenaTeamRemoveOpcode(WorldPacket& recvData);
+ void HandleArenaTeamDisbandOpcode(WorldPacket& recvData);
+ void HandleArenaTeamLeaderOpcode(WorldPacket& recvData);
+
+ void HandleAreaSpiritHealerQueryOpcode(WorldPacket& recvData);
+ void HandleAreaSpiritHealerQueueOpcode(WorldPacket& recvData);
+ void HandleCancelMountAuraOpcode(WorldPacket& recvData);
+ void HandleSelfResOpcode(WorldPacket& recvData);
+ void HandleComplainOpcode(WorldPacket& recvData);
+ void HandleRequestPetInfoOpcode(WorldPacket& recvData);
// Socket gem
- void HandleSocketOpcode(WorldPacket& recv_data);
+ void HandleSocketOpcode(WorldPacket& recvData);
- void HandleCancelTempEnchantmentOpcode(WorldPacket& recv_data);
+ void HandleCancelTempEnchantmentOpcode(WorldPacket& recvData);
- void HandleItemRefundInfoRequest(WorldPacket& recv_data);
- void HandleItemRefund(WorldPacket& recv_data);
+ void HandleItemRefundInfoRequest(WorldPacket& recvData);
+ void HandleItemRefund(WorldPacket& recvData);
- void HandleChannelVoiceOnOpcode(WorldPacket& recv_data);
- void HandleVoiceSessionEnableOpcode(WorldPacket& recv_data);
- void HandleSetActiveVoiceChannel(WorldPacket& recv_data);
- void HandleSetTaxiBenchmarkOpcode(WorldPacket& recv_data);
+ void HandleChannelVoiceOnOpcode(WorldPacket& recvData);
+ void HandleVoiceSessionEnableOpcode(WorldPacket& recvData);
+ void HandleSetActiveVoiceChannel(WorldPacket& recvData);
+ void HandleSetTaxiBenchmarkOpcode(WorldPacket& recvData);
// Guild Bank
- void HandleGuildPermissions(WorldPacket& recv_data);
- void HandleGuildBankMoneyWithdrawn(WorldPacket& recv_data);
- void HandleGuildBankerActivate(WorldPacket& recv_data);
- void HandleGuildBankQueryTab(WorldPacket& recv_data);
- void HandleGuildBankLogQuery(WorldPacket& recv_data);
- void HandleGuildBankDepositMoney(WorldPacket& recv_data);
- void HandleGuildBankWithdrawMoney(WorldPacket& recv_data);
- void HandleGuildBankSwapItems(WorldPacket& recv_data);
-
- void HandleGuildBankUpdateTab(WorldPacket& recv_data);
- void HandleGuildBankBuyTab(WorldPacket& recv_data);
- void HandleQueryGuildBankTabText(WorldPacket& recv_data);
- void HandleSetGuildBankTabText(WorldPacket& recv_data);
+ void HandleGuildPermissions(WorldPacket& recvData);
+ void HandleGuildBankMoneyWithdrawn(WorldPacket& recvData);
+ void HandleGuildBankerActivate(WorldPacket& recvData);
+ void HandleGuildBankQueryTab(WorldPacket& recvData);
+ void HandleGuildBankLogQuery(WorldPacket& recvData);
+ void HandleGuildBankDepositMoney(WorldPacket& recvData);
+ void HandleGuildBankWithdrawMoney(WorldPacket& recvData);
+ void HandleGuildBankSwapItems(WorldPacket& recvData);
+
+ void HandleGuildBankUpdateTab(WorldPacket& recvData);
+ void HandleGuildBankBuyTab(WorldPacket& recvData);
+ void HandleQueryGuildBankTabText(WorldPacket& recvData);
+ void HandleSetGuildBankTabText(WorldPacket& recvData);
// Refer-a-Friend
- void HandleGrantLevel(WorldPacket& recv_data);
- void HandleAcceptGrantLevel(WorldPacket& recv_data);
+ void HandleGrantLevel(WorldPacket& recvData);
+ void HandleAcceptGrantLevel(WorldPacket& recvData);
// Calendar
void HandleCalendarGetCalendar(WorldPacket& recvData);
@@ -918,19 +918,19 @@ class WorldSession
void SendCalendarRaidLockoutUpdated(InstanceSave const* save);
void SendCalendarCommandResult(CalendarError err, char const* param = NULL);
- void HandleSpellClick(WorldPacket& recv_data);
- void HandleMirrorImageDataRequest(WorldPacket& recv_data);
- void HandleAlterAppearance(WorldPacket& recv_data);
- void HandleRemoveGlyph(WorldPacket& recv_data);
- void HandleCharCustomize(WorldPacket& recv_data);
- void HandleQueryInspectAchievements(WorldPacket& recv_data);
- void HandleEquipmentSetSave(WorldPacket& recv_data);
- void HandleEquipmentSetDelete(WorldPacket& recv_data);
- void HandleEquipmentSetUse(WorldPacket& recv_data);
- void HandleWorldStateUITimerUpdate(WorldPacket& recv_data);
- void HandleReadyForAccountDataTimes(WorldPacket& recv_data);
- void HandleQueryQuestsCompleted(WorldPacket& recv_data);
- void HandleQuestPOIQuery(WorldPacket& recv_data);
+ void HandleSpellClick(WorldPacket& recvData);
+ void HandleMirrorImageDataRequest(WorldPacket& recvData);
+ void HandleAlterAppearance(WorldPacket& recvData);
+ void HandleRemoveGlyph(WorldPacket& recvData);
+ void HandleCharCustomize(WorldPacket& recvData);
+ void HandleQueryInspectAchievements(WorldPacket& recvData);
+ void HandleEquipmentSetSave(WorldPacket& recvData);
+ void HandleEquipmentSetDelete(WorldPacket& recvData);
+ void HandleEquipmentSetUse(WorldPacket& recvData);
+ void HandleWorldStateUITimerUpdate(WorldPacket& recvData);
+ void HandleReadyForAccountDataTimes(WorldPacket& recvData);
+ void HandleQueryQuestsCompleted(WorldPacket& recvData);
+ void HandleQuestPOIQuery(WorldPacket& recvData);
void HandleEjectPassenger(WorldPacket& data);
void HandleEnterPlayerVehicle(WorldPacket& data);
void HandleUpdateProjectilePosition(WorldPacket& recvPacket);
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index ee54c8d662c..377f0cb3a1f 100755
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -857,6 +857,17 @@ int WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
uint32 recruiter = fields[9].GetUInt32();
std::string os = fields[10].GetString();
+ // Must be done before WorldSession is created
+ if (sWorld->getBoolConfig(CONFIG_WARDEN_ENABLED) && os != "Win" && os != "OSX")
+ {
+ packet.Initialize(SMSG_AUTH_RESPONSE, 1);
+ packet << uint8(AUTH_REJECT);
+ SendPacket(packet);
+
+ sLog->outError(LOG_FILTER_NETWORKIO, "WorldSocket::HandleAuthSession: Client %s attempted to log in using invalid client OS (%s).", GetRemoteAddress().c_str(), os.c_str());
+ return -1;
+ }
+
// Checks gmlevel per Realm
stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_GMLEVEL_BY_REALMID);
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 6709bde541b..1f0532d9b1e 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -2399,7 +2399,7 @@ void Spell::EffectSummonType(SpellEffIndex effIndex)
// randomize position for multiple summons
m_caster->GetRandomPoint(*destTarget, radius, pos);
- summon = m_originalCaster->SummonCreature(entry, *destTarget, summonType, duration);
+ summon = m_originalCaster->SummonCreature(entry, pos, summonType, duration);
if (!summon)
continue;
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 37f6a4b8640..27b4f22bbcf 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -2338,7 +2338,7 @@ bool SpellInfo::_IsPositiveEffect(uint8 effIndex, bool deep) const
continue;
// if non-positive trigger cast targeted to positive target this main cast is non-positive
// this will place this spell auras as debuffs
- if (_IsPositiveTarget(spellTriggeredProto->Effects[i].TargetA.GetTarget(), spellTriggeredProto->Effects[effIndex].TargetB.GetTarget()) && !spellTriggeredProto->_IsPositiveEffect(i, true))
+ if (_IsPositiveTarget(spellTriggeredProto->Effects[i].TargetA.GetTarget(), spellTriggeredProto->Effects[i].TargetB.GetTarget()) && !spellTriggeredProto->_IsPositiveEffect(i, true))
return false;
}
}
diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp
index 5c2639175d2..d50757868ed 100755
--- a/src/server/game/Texts/CreatureTextMgr.cpp
+++ b/src/server/game/Texts/CreatureTextMgr.cpp
@@ -170,7 +170,7 @@ void CreatureTextMgr::LoadCreatureTextLocales()
}
-uint32 CreatureTextMgr::SendChat(Creature* source, uint8 textGroup, uint64 whisperGuid /*= 0*/, ChatMsg msgType /*= CHAT_MSG_ADDON*/, Language language /*= LANG_ADDON*/, TextRange range /*= TEXT_RANGE_NORMAL*/, uint32 sound /*= 0*/, Team team /*= TEAM_OTHER*/, bool gmOnly /*= false*/, Player* srcPlr /*= NULL*/)
+uint32 CreatureTextMgr::SendChat(Creature* source, uint8 textGroup, uint64 whisperGuid /*= 0*/, ChatMsg msgType /*= CHAT_MSG_ADDON*/, Language language /*= LANG_ADDON*/, CreatureTextRange range /*= TEXT_RANGE_NORMAL*/, uint32 sound /*= 0*/, Team team /*= TEAM_OTHER*/, bool gmOnly /*= false*/, Player* srcPlr /*= NULL*/)
{
if (!source)
return 0;
@@ -288,7 +288,7 @@ float CreatureTextMgr::GetRangeForChatType(ChatMsg msgType) const
return dist;
}
-void CreatureTextMgr::SendSound(Creature* source, uint32 sound, ChatMsg msgType, uint64 whisperGuid, TextRange range, Team team, bool gmOnly)
+void CreatureTextMgr::SendSound(Creature* source, uint32 sound, ChatMsg msgType, uint64 whisperGuid, CreatureTextRange range, Team team, bool gmOnly)
{
if (!sound || !source)
return;
@@ -298,7 +298,7 @@ void CreatureTextMgr::SendSound(Creature* source, uint32 sound, ChatMsg msgType,
SendNonChatPacket(source, &data, msgType, whisperGuid, range, team, gmOnly);
}
-void CreatureTextMgr::SendNonChatPacket(WorldObject* source, WorldPacket* data, ChatMsg msgType, uint64 whisperGuid, TextRange range, Team team, bool gmOnly) const
+void CreatureTextMgr::SendNonChatPacket(WorldObject* source, WorldPacket* data, ChatMsg msgType, uint64 whisperGuid, CreatureTextRange range, Team team, bool gmOnly) const
{
float dist = GetRangeForChatType(msgType);
diff --git a/src/server/game/Texts/CreatureTextMgr.h b/src/server/game/Texts/CreatureTextMgr.h
index 8ed0b01fcd5..a86a1059e7d 100755
--- a/src/server/game/Texts/CreatureTextMgr.h
+++ b/src/server/game/Texts/CreatureTextMgr.h
@@ -37,7 +37,7 @@ struct CreatureTextEntry
uint32 sound;
};
-enum TextRange
+enum CreatureTextRange
{
TEXT_RANGE_NORMAL = 0,
TEXT_RANGE_AREA = 1,
@@ -89,21 +89,21 @@ class CreatureTextMgr
void LoadCreatureTextLocales();
CreatureTextMap const& GetTextMap() const { return mTextMap; }
- void SendSound(Creature* source, uint32 sound, ChatMsg msgType, uint64 whisperGuid, TextRange range, Team team, bool gmOnly);
+ void SendSound(Creature* source, uint32 sound, ChatMsg msgType, uint64 whisperGuid, CreatureTextRange range, Team team, bool gmOnly);
void SendEmote(Unit* source, uint32 emote);
//if sent, returns the 'duration' of the text else 0 if error
- uint32 SendChat(Creature* source, uint8 textGroup, uint64 whisperGuid = 0, ChatMsg msgType = CHAT_MSG_ADDON, Language language = LANG_ADDON, TextRange range = TEXT_RANGE_NORMAL, uint32 sound = 0, Team team = TEAM_OTHER, bool gmOnly = false, Player* srcPlr = NULL);
+ uint32 SendChat(Creature* source, uint8 textGroup, uint64 whisperGuid = 0, ChatMsg msgType = CHAT_MSG_ADDON, Language language = LANG_ADDON, CreatureTextRange range = TEXT_RANGE_NORMAL, uint32 sound = 0, Team team = TEAM_OTHER, bool gmOnly = false, Player* srcPlr = NULL);
bool TextExist(uint32 sourceEntry, uint8 textGroup);
std::string GetLocalizedChatString(uint32 entry, uint8 textGroup, uint32 id, LocaleConstant locale) const;
template<class Builder>
- void SendChatPacket(WorldObject* source, Builder const& builder, ChatMsg msgType, uint64 whisperGuid = 0, TextRange range = TEXT_RANGE_NORMAL, Team team = TEAM_OTHER, bool gmOnly = false) const;
+ void SendChatPacket(WorldObject* source, Builder const& builder, ChatMsg msgType, uint64 whisperGuid = 0, CreatureTextRange range = TEXT_RANGE_NORMAL, Team team = TEAM_OTHER, bool gmOnly = false) const;
private:
CreatureTextRepeatIds GetRepeatGroup(Creature* source, uint8 textGroup);
void SetRepeatId(Creature* source, uint8 textGroup, uint8 id);
- void SendNonChatPacket(WorldObject* source, WorldPacket* data, ChatMsg msgType, uint64 whisperGuid, TextRange range, Team team, bool gmOnly) const;
+ void SendNonChatPacket(WorldObject* source, WorldPacket* data, ChatMsg msgType, uint64 whisperGuid, CreatureTextRange range, Team team, bool gmOnly) const;
float GetRangeForChatType(ChatMsg msgType) const;
CreatureTextMap mTextMap;
@@ -172,7 +172,7 @@ class CreatureTextLocalizer
};
template<class Builder>
-void CreatureTextMgr::SendChatPacket(WorldObject* source, Builder const& builder, ChatMsg msgType, uint64 whisperGuid, TextRange range, Team team, bool gmOnly) const
+void CreatureTextMgr::SendChatPacket(WorldObject* source, Builder const& builder, ChatMsg msgType, uint64 whisperGuid, CreatureTextRange range, Team team, bool gmOnly) const
{
if (!source)
return;
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 10a1581906f..2e5c7b19800 100755
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -980,6 +980,13 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_RANDOM_BG_RESET_HOUR] = 6;
}
+ m_int_configs[CONFIG_GUILD_RESET_HOUR] = ConfigMgr::GetIntDefault("Guild.ResetHour", 6);
+ if (m_int_configs[CONFIG_GUILD_RESET_HOUR] > 23)
+ {
+ sLog->outError(LOG_FILTER_GENERAL, "Guild.ResetHour (%i) can't be load. Set to 6.", m_int_configs[CONFIG_GUILD_RESET_HOUR]);
+ m_int_configs[CONFIG_GUILD_RESET_HOUR] = 6;
+ }
+
m_bool_configs[CONFIG_DETECT_POS_COLLISION] = ConfigMgr::GetBoolDefault("DetectPosCollision", true);
m_bool_configs[CONFIG_RESTRICTED_LFG_CHANNEL] = ConfigMgr::GetBoolDefault("Channel.RestrictedLfg", true);
@@ -1771,6 +1778,9 @@ void World::SetInitialWorldSettings()
sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Calculate random battleground reset time...");
InitRandomBGResetTime();
+ sLog->outInfo(LOG_FILTER_SERVER_LOADING, "Calculate Guild cap reset time...");
+ InitGuildResetTime();
+
LoadCharacterNameData();
uint32 startupDuration = GetMSTimeDiffToNow(startupBegin);
@@ -1926,6 +1936,9 @@ void World::Update(uint32 diff)
if (m_gameTime > m_NextRandomBGReset)
ResetRandomBG();
+ if (m_gameTime > m_NextGuildReset)
+ ResetGuildCap();
+
/// <ul><li> Handle auctions when the timer has passed
if (m_timers[WUPDATE_AUCTIONS].Passed())
{
@@ -2736,6 +2749,33 @@ void World::InitRandomBGResetTime()
sWorld->setWorldState(WS_BG_DAILY_RESET_TIME, uint64(m_NextRandomBGReset));
}
+void World::InitGuildResetTime()
+{
+ time_t gtime = uint64(getWorldState(WS_GUILD_DAILY_RESET_TIME));
+ if (!gtime)
+ m_NextGuildReset = time_t(time(NULL)); // game time not yet init
+
+ // generate time by config
+ time_t curTime = time(NULL);
+ tm localTm = *localtime(&curTime);
+ localTm.tm_hour = getIntConfig(CONFIG_GUILD_RESET_HOUR);
+ localTm.tm_min = 0;
+ localTm.tm_sec = 0;
+
+ // current day reset time
+ time_t nextDayResetTime = mktime(&localTm);
+
+ // next reset time before current moment
+ if (curTime >= nextDayResetTime)
+ nextDayResetTime += DAY;
+
+ // normalize reset time
+ m_NextGuildReset = gtime < curTime ? nextDayResetTime - DAY : nextDayResetTime;
+
+ if (!gtime)
+ sWorld->setWorldState(WS_GUILD_DAILY_RESET_TIME, uint64(m_NextGuildReset));
+}
+
void World::ResetDailyQuests()
{
sLog->outInfo(LOG_FILTER_GENERAL, "Daily quests reset for all characters.");
@@ -2812,6 +2852,15 @@ void World::ResetRandomBG()
sWorld->setWorldState(WS_BG_DAILY_RESET_TIME, uint64(m_NextRandomBGReset));
}
+void World::ResetGuildCap()
+{
+ sLog->outInfo(LOG_FILTER_GENERAL, "Guild Daily Cap reset.");
+
+ m_NextGuildReset = time_t(m_NextGuildReset + DAY);
+ sWorld->setWorldState(WS_GUILD_DAILY_RESET_TIME, uint64(m_NextGuildReset));
+ sGuildMgr->ResetTimes();
+}
+
void World::UpdateMaxSessionCounters()
{
m_maxActiveSessionCount = std::max(m_maxActiveSessionCount, uint32(m_sessions.size()-m_QueuedPlayer.size()));
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 9046486a181..ee4bfdfd208 100755
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -303,6 +303,7 @@ enum WorldIntConfigs
CONFIG_GUILD_BANK_EVENT_LOG_COUNT,
CONFIG_MIN_LEVEL_STAT_SAVE,
CONFIG_RANDOM_BG_RESET_HOUR,
+ CONFIG_GUILD_RESET_HOUR,
CONFIG_CHARDELETE_KEEP_DAYS,
CONFIG_CHARDELETE_METHOD,
CONFIG_CHARDELETE_MIN_LEVEL,
@@ -468,8 +469,9 @@ enum RealmZone
enum WorldStates
{
- WS_WEEKLY_QUEST_RESET_TIME = 20002, // Next weekly reset time
- WS_BG_DAILY_RESET_TIME = 20003 // Next daily BG reset time
+ WS_WEEKLY_QUEST_RESET_TIME = 20002, // Next weekly reset time
+ WS_BG_DAILY_RESET_TIME = 20003, // Next daily BG reset time
+ WS_GUILD_DAILY_RESET_TIME = 20006, // Next guild cap reset time
};
// DB scripting commands
@@ -776,9 +778,11 @@ class World
void InitDailyQuestResetTime();
void InitWeeklyQuestResetTime();
void InitRandomBGResetTime();
+ void InitGuildResetTime();
void ResetDailyQuests();
void ResetWeeklyQuests();
void ResetRandomBG();
+ void ResetGuildCap();
private:
static ACE_Atomic_Op<ACE_Thread_Mutex, bool> m_stopEvent;
static uint8 m_ExitCode;
@@ -839,6 +843,7 @@ class World
time_t m_NextDailyQuestReset;
time_t m_NextWeeklyQuestReset;
time_t m_NextRandomBGReset;
+ time_t m_NextGuildReset;
//Player Queue
Queue m_QueuedPlayer;
diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt
index 59dfc0f990f..8e636ee1208 100644
--- a/src/server/scripts/CMakeLists.txt
+++ b/src/server/scripts/CMakeLists.txt
@@ -9,18 +9,11 @@
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# Enable precompiled headers when using the GCC compiler.
-if( USE_SCRIPTPCH )
- include_directories(
- ${CMAKE_CURRENT_BINARY_DIR}
- )
-endif()
-if( USE_SCRIPTPCH AND MSVC )
- set(scripts_STAT_SRCS
- PrecompiledHeaders/ScriptPCH.cpp
- PrecompiledHeaders/ScriptPCH.h
- )
-endif()
+if (USE_SCRIPTPCH)
+ set(scripts_STAT_PCH_HDR PrecompiledHeaders/ScriptPCH.h)
+ set(scripts_STAT_PCH_SRC PrecompiledHeaders/ScriptPCH.cpp)
+endif ()
message(STATUS "SCRIPT PREPARATIONS")
include(Spells/CMakeLists.txt)
@@ -148,15 +141,14 @@ include_directories(
${MYSQL_INCLUDE_DIR}
)
-add_library(scripts STATIC ${scripts_STAT_SRCS})
+add_library(scripts STATIC
+ ${scripts_STAT_SRCS}
+ ${scripts_STAT_PCH_SRC}
+)
add_dependencies(scripts revision.h)
# Generate precompiled header
-if( USE_SCRIPTPCH )
- if(CMAKE_COMPILER_IS_GNUCXX)
- add_precompiled_header(scripts ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/ScriptPCH.h)
- elseif(MSVC)
- add_native_precompiled_header(scripts ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/ScriptPCH)
- endif()
+if (USE_SCRIPTPCH)
+ add_cxx_pch(scripts ${scripts_STAT_PCH_HDR} ${scripts_STAT_PCH_SRC})
endif()
diff --git a/src/server/scripts/Commands/cs_lfg.cpp b/src/server/scripts/Commands/cs_lfg.cpp
index e07458ac691..5f1ed59176f 100644
--- a/src/server/scripts/Commands/cs_lfg.cpp
+++ b/src/server/scripts/Commands/cs_lfg.cpp
@@ -28,9 +28,9 @@ void GetPlayerInfo(ChatHandler* handler, Player* player)
uint64 guid = player->GetGUID();
LfgDungeonSet dungeons = sLFGMgr->GetSelectedDungeons(guid);
- char const * const state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid));
+ std::string const& state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid));
handler->PSendSysMessage(LANG_LFG_PLAYER_INFO, player->GetName().c_str(),
- state, uint8(dungeons.size()), sLFGMgr->ConcatenateDungeons(dungeons).c_str(),
+ state.c_str(), uint8(dungeons.size()), sLFGMgr->ConcatenateDungeons(dungeons).c_str(),
sLFGMgr->GetRolesString(sLFGMgr->GetRoles(guid)).c_str(), sLFGMgr->GetComment(guid).c_str());
}
@@ -85,9 +85,9 @@ public:
}
uint64 guid = grp->GetGUID();
- char const * const state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid));
+ std::string const& state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid));
handler->PSendSysMessage(LANG_LFG_GROUP_INFO, grp->isLFGGroup(),
- state, sLFGMgr->GetDungeon(guid));
+ state.c_str(), sLFGMgr->GetDungeon(guid));
for (GroupReference* itr = grp->GetFirstMember(); itr != NULL; itr = itr->next())
GetPlayerInfo(handler, itr->getSource());
@@ -114,9 +114,9 @@ public:
return true;
}
- static bool HandleLfgQueueInfoCommand(ChatHandler* handler, char const* /*args*/)
+ static bool HandleLfgQueueInfoCommand(ChatHandler* handler, char const* args)
{
- handler->SendSysMessage(sLFGMgr->DumpQueueInfo().c_str());
+ handler->SendSysMessage(sLFGMgr->DumpQueueInfo(*args).c_str());
return true;
}
diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp
index e3cd185e4a3..10a18c3ed36 100644
--- a/src/server/scripts/Commands/cs_wp.cpp
+++ b/src/server/scripts/Commands/cs_wp.cpp
@@ -941,7 +941,7 @@ public:
{
wpCreature->SetDisplayId(target->GetDisplayId());
wpCreature->SetObjectScale(0.5f);
- wpCreature->SetLevel(point > STRONG_MAX_LEVEL ? STRONG_MAX_LEVEL : point);
+ wpCreature->SetLevel(std::min<uint32>(point, STRONG_MAX_LEVEL));
}
}
while (result->NextRow());
diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp
index b2b4083f9c6..cef95b607c7 100644
--- a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp
+++ b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp
@@ -24,8 +24,8 @@ enum Spells
SPELL_CLEAVE = 40504,
SPELL_DEMORALIZING_SHOUT = 23511,
SPELL_ENRAGE = 8599,
- SPELL_WHIRLWIND1 = 15589,
- SPELL_WHIRLWIND2 = 13736,
+ SPELL_WHIRLWIND = 13736,
+
SPELL_NORTH_MARSHAL = 45828,
SPELL_SOUTH_MARSHAL = 45829,
SPELL_STONEHEARTH_MARSHAL = 45830,
@@ -48,38 +48,55 @@ enum Creatures
NPC_WEST_FROSTWOLF_WARMASTER = 14777
};
+enum Events
+{
+ EVENT_CHARGE_TARGET = 1,
+ EVENT_CLEAVE = 2,
+ EVENT_DEMORALIZING_SHOUT = 3,
+ EVENT_WHIRLWIND = 4,
+ EVENT_ENRAGE = 5,
+ EVENT_CHECK_RESET = 6
+};
+
+struct SpellPair
+{
+ uint32 npcEntry;
+ uint32 spellId;
+};
+
+uint8 const MAX_SPELL_PAIRS = 8;
+SpellPair const _auraPairs[MAX_SPELL_PAIRS] =
+{
+ { NPC_NORTH_MARSHAL, SPELL_NORTH_MARSHAL },
+ { NPC_SOUTH_MARSHAL, SPELL_SOUTH_MARSHAL },
+ { NPC_STONEHEARTH_MARSHAL, SPELL_STONEHEARTH_MARSHAL },
+ { NPC_ICEWING_MARSHAL, SPELL_ICEWING_MARSHAL },
+ { NPC_EAST_FROSTWOLF_WARMASTER, SPELL_EAST_FROSTWOLF_WARMASTER },
+ { NPC_WEST_FROSTWOLF_WARMASTER, SPELL_WEST_FROSTWOLF_WARMASTER },
+ { NPC_TOWER_POINT_WARMASTER, SPELL_TOWER_POINT_WARMASTER },
+ { NPC_ICEBLOOD_WARMASTER, SPELL_ICEBLOOD_WARMASTER }
+};
+
class mob_av_marshal_or_warmaster : public CreatureScript
{
public:
-
- mob_av_marshal_or_warmaster()
- : CreatureScript("mob_av_marshal_or_warmaster") {}
+ mob_av_marshal_or_warmaster() : CreatureScript("mob_av_marshal_or_warmaster") { }
struct mob_av_marshal_or_warmasterAI : public ScriptedAI
{
- mob_av_marshal_or_warmasterAI(Creature* creature) : ScriptedAI(creature) {}
-
- uint32 ChargeTimer;
- uint32 CleaveTimer;
- uint32 DemoralizingShoutTimer;
- uint32 Whirlwind1Timer;
- uint32 Whirlwind2Timer;
- uint32 EnrageTimer;
- uint32 ResetTimer;
-
- bool bHasAura;
+ mob_av_marshal_or_warmasterAI(Creature* creature) : ScriptedAI(creature) { }
void Reset()
{
- ChargeTimer = urand(2 * IN_MILLISECONDS, 12 * IN_MILLISECONDS);
- CleaveTimer = urand(1 * IN_MILLISECONDS, 11 * IN_MILLISECONDS);
- DemoralizingShoutTimer = urand(2 * IN_MILLISECONDS, 2 * IN_MILLISECONDS);
- Whirlwind1Timer = urand(1 * IN_MILLISECONDS, 12 * IN_MILLISECONDS);
- Whirlwind2Timer = urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
- EnrageTimer = urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
- ResetTimer = 5 * IN_MILLISECONDS;
-
- bHasAura = false;
+ events.Reset();
+ events.ScheduleEvent(EVENT_CHARGE_TARGET, urand(2 * IN_MILLISECONDS, 12 * IN_MILLISECONDS));
+ events.ScheduleEvent(EVENT_CLEAVE, urand(1 * IN_MILLISECONDS, 11 * IN_MILLISECONDS));
+ events.ScheduleEvent(EVENT_DEMORALIZING_SHOUT, 2000);
+ events.ScheduleEvent(EVENT_WHIRLWIND, urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS));
+ events.ScheduleEvent(EVENT_ENRAGE, urand(5 * IN_MILLISECONDS, 20 * IN_MILLISECONDS));
+ events.ScheduleEvent(EVENT_CHECK_RESET, 5000);
+
+ _hasAura = false;
}
void JustRespawned()
@@ -87,90 +104,70 @@ class mob_av_marshal_or_warmaster : public CreatureScript
Reset();
}
- void UpdateAI(const uint32 diff)
+ void UpdateAI(uint32 const diff)
{
- if (!bHasAura)
+ // I have a feeling this isn't blizzlike, but owell, I'm only passing by and cleaning up.
+ if (!_hasAura)
{
- switch (me->GetEntry())
- {
- case NPC_NORTH_MARSHAL:
- DoCast(me, SPELL_NORTH_MARSHAL);
- break;
- case NPC_SOUTH_MARSHAL:
- DoCast(me, SPELL_SOUTH_MARSHAL);
- break;
- case NPC_STONEHEARTH_MARSHAL:
- DoCast(me, SPELL_STONEHEARTH_MARSHAL);
- break;
- case NPC_ICEWING_MARSHAL:
- DoCast(me, SPELL_ICEWING_MARSHAL);
- break;
- case NPC_EAST_FROSTWOLF_WARMASTER:
- DoCast(me, SPELL_EAST_FROSTWOLF_WARMASTER);
- break;
- case NPC_WEST_FROSTWOLF_WARMASTER:
- DoCast(me, SPELL_WEST_FROSTWOLF_WARMASTER);
- break;
- case NPC_ICEBLOOD_WARMASTER:
- DoCast(me, SPELL_ICEBLOOD_WARMASTER);
- break;
- case NPC_TOWER_POINT_WARMASTER:
- DoCast(me, SPELL_TOWER_POINT_WARMASTER);
- break;
- }
+ for (uint8 i = 0; i < MAX_SPELL_PAIRS; ++i)
+ if (_auraPairs[i].npcEntry == me->GetEntry())
+ DoCast(me, _auraPairs[i].spellId);
- bHasAura = true;
+ _hasAura = true;
}
if (!UpdateVictim())
return;
- if (ChargeTimer <= diff)
- {
- DoCast(me->getVictim(), SPELL_CHARGE);
- ChargeTimer = urand(10 * IN_MILLISECONDS, 25 * IN_MILLISECONDS);
- } else ChargeTimer -= diff;
-
- if (CleaveTimer <= diff)
- {
- DoCast(me->getVictim(), SPELL_CLEAVE);
- CleaveTimer = urand(10 * IN_MILLISECONDS, 16 * IN_MILLISECONDS);
- } else CleaveTimer -= diff;
-
- if (DemoralizingShoutTimer <= diff)
- {
- DoCast(me->getVictim(), SPELL_DEMORALIZING_SHOUT);
- DemoralizingShoutTimer = urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS);
- } else DemoralizingShoutTimer -= diff;
+ events.Update(diff);
- if (Whirlwind1Timer <= diff)
- {
- DoCast(me->getVictim(), SPELL_WHIRLWIND1);
- Whirlwind1Timer = urand(6 * IN_MILLISECONDS, 20 * IN_MILLISECONDS);
- } else Whirlwind1Timer -= diff;
-
- if (Whirlwind2Timer <= diff)
- {
- DoCast(me->getVictim(), SPELL_WHIRLWIND2);
- Whirlwind2Timer = urand(10 * IN_MILLISECONDS, 25 * IN_MILLISECONDS);
- } else Whirlwind2Timer -= diff;
-
- if (EnrageTimer <= diff)
- {
- DoCast(me->getVictim(), SPELL_ENRAGE);
- EnrageTimer = urand(10 * IN_MILLISECONDS, 30 * IN_MILLISECONDS);
- }else EnrageTimer -= diff;
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
- // check if creature is not outside of building
- if (ResetTimer <= diff)
+ while (uint32 eventId = events.ExecuteEvent())
{
- if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50)
- EnterEvadeMode();
- ResetTimer = 5 * IN_MILLISECONDS;
- } else ResetTimer -= diff;
+ switch (eventId)
+ {
+ case EVENT_CHARGE_TARGET:
+ DoCast(me->getVictim(), SPELL_CHARGE);
+ events.ScheduleEvent(EVENT_CHARGE, urand(10 * IN_MILLISECONDS, 25 * IN_MILLISECONDS));
+ break;
+ case EVENT_CLEAVE:
+ DoCast(me->getVictim(), SPELL_CLEAVE);
+ events.ScheduleEvent(EVENT_CLEAVE, urand(10 * IN_MILLISECONDS, 16 * IN_MILLISECONDS));
+ break;
+ case EVENT_DEMORALIZING_SHOUT:
+ DoCast(me, SPELL_DEMORALIZING_SHOUT);
+ events.ScheduleEvent(EVENT_DEMORALIZING_SHOUT, urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS));
+ break;
+ case EVENT_WHIRLWIND:
+ DoCast(me, SPELL_WHIRLWIND);
+ events.ScheduleEvent(EVENT_WHIRLWIND, urand(10 * IN_MILLISECONDS, 25 * IN_MILLISECONDS));
+ break;
+ case EVENT_ENRAGE:
+ DoCast(me, SPELL_ENRAGE);
+ events.ScheduleEvent(EVENT_ENRAGE, urand(10 * IN_MILLISECONDS, 30 * IN_MILLISECONDS));
+ break;
+ case EVENT_CHECK_RESET:
+ {
+ Position const& _homePosition = me->GetHomePosition();
+ if (me->GetDistance2d(_homePosition.GetPositionX(), _homePosition.GetPositionY()) > 50.0f)
+ {
+ EnterEvadeMode();
+ return;
+ }
+ events.ScheduleEvent(EVENT_CHECK_RESET, 5000);
+ break;
+ }
+ }
+ }
DoMeleeAttackIfReady();
}
+
+ private:
+ EventMap events;
+ bool _hasAura;
};
CreatureAI* GetAI(Creature* creature) const
diff --git a/src/server/scripts/EasternKingdoms/silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/silverpine_forest.cpp
index c52e69787d4..b2cd3b16e7b 100644
--- a/src/server/scripts/EasternKingdoms/silverpine_forest.cpp
+++ b/src/server/scripts/EasternKingdoms/silverpine_forest.cpp
@@ -232,18 +232,16 @@ public:
{
Unit* target = NULL;
if (PlayerGUID)
- {
- if (Unit* player = Unit::GetPlayer(*me, PlayerGUID)->ToUnit())
- target = RAND((Unit*)me, player);
- } else
+ if (Player* player = Unit::GetPlayer(*me, PlayerGUID))
+ if (player->isAlive() && RAND(0, 1))
+ target = player;
+
+ if (!target)
target = me;
- if (target)
- {
- summoned->setFaction(168);
- summoned->AddThreat(target, 32.0f);
- summoned->AI()->AttackStart(target);
- }
+ summoned->setFaction(168);
+ summoned->AddThreat(target, 32.0f);
+ summoned->AI()->AttackStart(target);
}
}
diff --git a/src/server/scripts/Events/childrens_week.cpp b/src/server/scripts/Events/childrens_week.cpp
index d09d82130de..763961271d8 100644
--- a/src/server/scripts/Events/childrens_week.cpp
+++ b/src/server/scripts/Events/childrens_week.cpp
@@ -17,6 +17,7 @@
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
+#include "SpellAuras.h"
enum Orphans
{
@@ -85,7 +86,7 @@ enum Quests
QUEST_STONEWROUGHT_DAM = 1558,
QUEST_DARK_PORTAL_H = 10951,
QUEST_DARK_PORTAL_A = 10952,
- QUEST_LORDAERON_THRONE_ROOM = 1800,
+ QUEST_LORDAERON_THRONE_ROOM = 1800,
QUEST_AUCHINDOUN_AND_THE_RING = 10950,
QUEST_TIME_TO_VISIT_THE_CAVERNS_H = 10963,
QUEST_TIME_TO_VISIT_THE_CAVERNS_A = 10962,
@@ -114,7 +115,7 @@ enum Areatriggers
NPC_EXODAR_01_CW_TRIGGER = 22851,
NPC_EXODAR_02_CW_TRIGGER = 22905,
NPC_AERIS_LANDING_CW_TRIGGER = 22838,
- NPC_AUCHINDOUN_CW_TRIGGER = 22831,
+ NPC_AUCHINDOUN_CW_TRIGGER = 22831,
NPC_SPOREGGAR_CW_TRIGGER = 22829,
NPC_THRONE_OF_ELEMENTS_CW_TRIGGER = 22839,
NPC_SILVERMOON_01_CW_TRIGGER = 22866,
@@ -159,7 +160,7 @@ class npc_winterfin_playmate : public CreatureScript
}
void MoveInLineOfSight(Unit* who)
- {
+ {
if (!phase && who && who->GetDistance2d(me) < 10.0f)
if (Player* player = who->ToPlayer())
if (player->GetQuestStatus(QUEST_PLAYMATE_ORACLE) == QUEST_STATUS_INCOMPLETE)
@@ -188,7 +189,7 @@ class npc_winterfin_playmate : public CreatureScript
switch(phase)
{
- case 1:
+ case 1:
orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5,me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ());
orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_1);
timer = 3000;
@@ -256,7 +257,7 @@ class npc_snowfall_glade_playmate : public CreatureScript
}
void MoveInLineOfSight(Unit* who)
- {
+ {
if (!phase && who && who->GetDistance2d(me) < 10.0f)
if (Player* player = who->ToPlayer())
if (player->GetQuestStatus(QUEST_PLAYMATE_WOLVAR) == QUEST_STATUS_INCOMPLETE)
@@ -273,7 +274,7 @@ class npc_snowfall_glade_playmate : public CreatureScript
return;
if (timer <= diff)
- {
+ {
Player* player = Player::GetPlayer(*me, playerGUID);
Creature* orphan = Creature::GetCreature(*me, orphanGUID);
@@ -401,7 +402,7 @@ class npc_the_biggest_tree : public CreatureScript
}
++phase;
}
- else
+ else
timer -= diff;
}
@@ -440,7 +441,7 @@ class npc_high_oracle_soo_roo : public CreatureScript
}
void MoveInLineOfSight(Unit* who)
- {
+ {
if (!phase && who && who->GetDistance2d(me) < 10.0f)
if (Player* player = who->ToPlayer())
if (player->GetQuestStatus(QUEST_THE_BRONZE_DRAGONSHRINE_ORACLE) == QUEST_STATUS_INCOMPLETE)
@@ -527,7 +528,7 @@ class npc_elder_kekek : public CreatureScript
}
void MoveInLineOfSight(Unit* who)
- {
+ {
if (!phase && who && who->GetDistance2d(me) < 10.0f)
if (Player* player = who->ToPlayer())
if (player->GetQuestStatus(QUEST_THE_BRONZE_DRAGONSHRINE_WOLVAR) == QUEST_STATUS_INCOMPLETE)
@@ -577,7 +578,7 @@ class npc_elder_kekek : public CreatureScript
else
timer -= diff;
}
-
+
private:
uint32 timer;
int8 phase;
@@ -594,7 +595,7 @@ class npc_elder_kekek : public CreatureScript
/*######
## npc_the_etymidian
-## TODO: A red crystal as a gift for the great one should be spawned during the event.
+## TODO: A red crystal as a gift for the great one should be spawned during the event.
######*/
class npc_the_etymidian : public CreatureScript
{
@@ -614,7 +615,7 @@ class npc_the_etymidian : public CreatureScript
}
void MoveInLineOfSight(Unit* who)
- {
+ {
if (!phase && who && who->GetDistance2d(me) < 10.0f)
if (Player* player = who->ToPlayer())
if (player->GetQuestStatus(QUEST_MEETING_A_GREAT_ONE) == QUEST_STATUS_INCOMPLETE)
@@ -936,7 +937,7 @@ class npc_cw_area_trigger : public CreatureScript
questId = QUEST_THE_SEAT_OF_THE_NARUU;
orphanId = ORPHAN_DRAENEI;
break;
- case NPC_EXODAR_02_CW_TRIGGER:
+ case NPC_EXODAR_02_CW_TRIGGER:
questId = QUEST_CALL_ON_THE_FARSEER;
orphanId = ORPHAN_DRAENEI;
break;
@@ -959,27 +960,27 @@ class npc_cw_area_trigger : public CreatureScript
case NPC_SILVERMOON_01_CW_TRIGGER:
if (player->GetQuestStatus(QUEST_NOW_WHEN_I_GROW_UP) == QUEST_STATUS_INCOMPLETE && getOrphanGUID(player, ORPHAN_BLOOD_ELF))
{
- player->AreaExploredOrEventHappens(QUEST_NOW_WHEN_I_GROW_UP);
+ player->AreaExploredOrEventHappens(QUEST_NOW_WHEN_I_GROW_UP);
if (player->GetQuestStatus(QUEST_NOW_WHEN_I_GROW_UP) == QUEST_STATUS_COMPLETE)
if (Creature* samuro = me->FindNearestCreature(25151, 20.0f))
{
uint32 emote = 0;
switch(urand(1,5))
{
- case 1:
- emote = EMOTE_ONESHOT_WAVE;
+ case 1:
+ emote = EMOTE_ONESHOT_WAVE;
break;
case 2:
- emote = EMOTE_ONESHOT_ROAR;
+ emote = EMOTE_ONESHOT_ROAR;
break;
- case 3:
- emote = EMOTE_ONESHOT_FLEX;
+ case 3:
+ emote = EMOTE_ONESHOT_FLEX;
break;
case 4:
- emote = EMOTE_ONESHOT_SALUTE;
+ emote = EMOTE_ONESHOT_SALUTE;
break;
- case 5:
- emote = EMOTE_ONESHOT_DANCE;
+ case 5:
+ emote = EMOTE_ONESHOT_DANCE;
break;
}
samuro->HandleEmoteCommand(emote);
@@ -1009,13 +1010,13 @@ class npc_grizzlemaw_cw_trigger : public CreatureScript
struct npc_grizzlemaw_cw_triggerAI : public ScriptedAI
{
- npc_grizzlemaw_cw_triggerAI(Creature* creature) : ScriptedAI (creature)
+ npc_grizzlemaw_cw_triggerAI(Creature* creature) : ScriptedAI (creature)
{
me->SetDisplayId(DISPLAY_INVISIBLE);
}
void MoveInLineOfSight(Unit* who)
- {
+ {
if (who && who->GetDistance2d(me) < 10.0f)
if (Player* player = who->ToPlayer())
if (player->GetQuestStatus(QUEST_HOME_OF_THE_BEAR_MEN) == QUEST_STATUS_INCOMPLETE)
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index 059f513f12c..1d0b0fd6ee6 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -369,7 +369,7 @@ class boss_halion : public CreatureScript
{
events.SetPhase(PHASE_TWO);
Talk(SAY_PHASE_TWO);
-
+
me->CastStop();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
DoCast(me, SPELL_TWILIGHT_PHASING);
@@ -1375,7 +1375,7 @@ class spell_halion_combustion_consumption : public SpellScriptLoader
public:
spell_halion_combustion_consumption_AuraScript(uint32 spellID) : AuraScript(), _markSpell(spellID) { }
- bool Validate(SpellEntry const* /*spell*/)
+ bool Validate(SpellInfo const* /*spell*/)
{
if (!sSpellMgr->GetSpellInfo(_markSpell))
return false;
@@ -1434,7 +1434,7 @@ class spell_halion_marks : public SpellScriptLoader
spell_halion_marks_AuraScript(uint32 summonSpell, uint32 removeSpell) : AuraScript(),
_summonSpellId(summonSpell), _removeSpellId(removeSpell) { }
- bool Validate(SpellEntry const* /*spell*/)
+ bool Validate(SpellInfo const* /*spell*/)
{
if (!sSpellMgr->GetSpellInfo(_summonSpellId))
return false;
@@ -1741,7 +1741,7 @@ void AddSC_boss_halion()
{
new boss_halion();
new boss_twilight_halion();
-
+
new npc_halion_controller();
new npc_meteor_strike_initial();
new npc_meteor_strike();
diff --git a/src/server/scripts/Northrend/sholazar_basin.cpp b/src/server/scripts/Northrend/sholazar_basin.cpp
index d734b4b4e58..63960f13bb7 100644
--- a/src/server/scripts/Northrend/sholazar_basin.cpp
+++ b/src/server/scripts/Northrend/sholazar_basin.cpp
@@ -33,6 +33,7 @@ EndContentData */
#include "ScriptedGossip.h"
#include "ScriptedEscortAI.h"
#include "SpellScript.h"
+#include "SpellAuras.h"
/*######
## npc_injured_rainspeaker_oracle
@@ -480,7 +481,7 @@ enum utils
enum NesingwaryChildrensWeek
{
SPELL_ORPHAN_OUT = 58818,
-
+
QUEST_THE_MIGHTY_HEMET_NESINGWARY = 13957,
ORPHAN_WOLVAR = 33532,
@@ -680,7 +681,7 @@ public:
uint32 timer;
int8 phase;
uint64 playerGUID;
- uint64 orphanGUID;
+ uint64 orphanGUID;
};
CreatureAI* GetAI(Creature* creature) const
diff --git a/src/server/scripts/Northrend/wintergrasp.cpp b/src/server/scripts/Northrend/wintergrasp.cpp
index d4a3f83ab70..b7901f1a44a 100644
--- a/src/server/scripts/Northrend/wintergrasp.cpp
+++ b/src/server/scripts/Northrend/wintergrasp.cpp
@@ -560,7 +560,7 @@ public:
if (Battlefield* wg = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG))
if (Player* target = GetExplTargetUnit()->ToPlayer())
// check if we are in Wintergrasp at all, SotA uses same teleport spells
- if ((target->GetZoneId() == 4197) && target->GetTeamId() != wg->GetDefenderTeam() || target->HasAura(SPELL_WINTERGRASP_TELEPORT_TRIGGER))
+ if ((target->GetZoneId() == 4197 && target->GetTeamId() != wg->GetDefenderTeam()) || target->HasAura(SPELL_WINTERGRASP_TELEPORT_TRIGGER))
return SPELL_FAILED_BAD_TARGETS;
return SPELL_CAST_OK;
}
diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp
index db35e84b930..67aeda314bf 100644
--- a/src/server/scripts/World/areatrigger_scripts.cpp
+++ b/src/server/scripts/World/areatrigger_scripts.cpp
@@ -246,7 +246,7 @@ class AreaTrigger_at_sholazar_waygate : public AreaTriggerScript
bool OnTrigger(Player* player, AreaTriggerEntry const* trigger)
{
- if (!player->isDead() && (player->GetQuestStatus(QUEST_MEETING_A_GREAT_ONE) != QUEST_STATUS_NONE ||
+ if (!player->isDead() && (player->GetQuestStatus(QUEST_MEETING_A_GREAT_ONE) != QUEST_STATUS_NONE ||
(player->GetQuestStatus(QUEST_THE_MAKERS_OVERLOOK) == QUEST_STATUS_REWARDED && player->GetQuestStatus(QUEST_THE_MAKERS_PERCH) == QUEST_STATUS_REWARDED)))
{
switch (trigger->id)
diff --git a/src/server/scripts/World/npc_taxi.cpp b/src/server/scripts/World/npc_taxi.cpp
index efdd4da73d6..18f776e7171 100644
--- a/src/server/scripts/World/npc_taxi.cpp
+++ b/src/server/scripts/World/npc_taxi.cpp
@@ -51,8 +51,6 @@ EndScriptData
#define GOSSIP_TARIOLSTRASZ2 "Can you spare a drake to travel to Lord Of Afrasastrasz, in the middle of the temple?"
#define GOSSIP_TORASTRASZA1 "I would like to see Lord Of Afrasastrasz, in the middle of the temple."
#define GOSSIP_TORASTRASZA2 "Yes, Please. I would like to return to the ground floor of the temple."
-#define GOSSIP_CAMILLE1 "I need to fly to the Windrunner Official business!"
-#define GOSSIP_CAMILLE2 "<The riding bat for the special task is necessary to me.>"
#define GOSSIP_CRIMSONWING "<Ride the gryphons to Survey Alcaz Island>"
#define GOSSIP_THRICESTAR1 "Do you think I could take a ride on one of those flying machines?"
#define GOSSIP_THRICESTAR2 "Kara, I need to be flown out the Dens of Dying to find Bixie."
@@ -159,12 +157,6 @@ public:
// top -> ground
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TORASTRASZA2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22);
break;
- case 23816: // Howling Fjord - Bat Handler Camille
- if (!player->GetQuestRewardStatus(11229))
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CAMILLE1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 23);
- if (player->GetQuestStatus(11170) == QUEST_STATUS_INCOMPLETE)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CAMILLE2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 24);
- break;
case 23704: // Dustwallow Marsh - Cassa Crimsonwing
if (player->GetQuestStatus(11142) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CRIMSONWING, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+25);
diff --git a/src/server/shared/AutoPtr.h b/src/server/shared/AutoPtr.h
index f4199880abd..9afa05325c9 100644
--- a/src/server/shared/AutoPtr.h
+++ b/src/server/shared/AutoPtr.h
@@ -22,32 +22,32 @@
namespace Trinity
{
- template <class Pointer, class Lock>
- class AutoPtr : public ACE_Strong_Bound_Ptr<Pointer, Lock>
+
+template <class Pointer, class Lock>
+class AutoPtr : public ACE_Strong_Bound_Ptr<Pointer, Lock>
+{
+ typedef ACE_Strong_Bound_Ptr<Pointer, Lock> Base;
+
+public:
+ AutoPtr()
+ : Base()
+ { }
+
+ AutoPtr(Pointer* x)
+ : Base(x)
+ { }
+
+ operator bool() const
+ {
+ return !Base::null();
+ }
+
+ bool operator !() const
{
- public:
- AutoPtr() : ACE_Strong_Bound_Ptr<Pointer, Lock>() {}
-
- AutoPtr(Pointer* x)
- {
- ACE_Strong_Bound_Ptr<Pointer, Lock>::reset(x);
- }
-
- operator bool() const
- {
- return ACE_Strong_Bound_Ptr<Pointer, Lock>::get() != NULL;
- }
-
- bool operator !() const
- {
- return ACE_Strong_Bound_Ptr<Pointer, Lock>::get() == NULL;
- }
-
- bool operator !=(Pointer* x) const
- {
- return ACE_Strong_Bound_Ptr<Pointer, Lock>::get() != x;
- }
- };
-}
+ return Base::null();
+ }
+};
+
+} // namespace Trinity
#endif
diff --git a/src/server/shared/CMakeLists.txt b/src/server/shared/CMakeLists.txt
index de998442419..e9f414d34e5 100644
--- a/src/server/shared/CMakeLists.txt
+++ b/src/server/shared/CMakeLists.txt
@@ -28,11 +28,9 @@ file(GLOB sources_localdir *.cpp *.h)
# Build shared sourcelist
#
-if( USE_COREPCH AND MSVC )
- set(shared_STAT_SRCS
- PrecompiledHeaders/sharedPCH.cpp
- PrecompiledHeaders/sharedPCH.h
- )
+if (USE_COREPCH)
+ set(shared_STAT_PCH_HDR PrecompiledHeaders/sharedPCH.h)
+ set(shared_STAT_PCH_SRC PrecompiledHeaders/sharedPCH.cpp)
endif()
set(shared_STAT_SRCS
@@ -73,18 +71,16 @@ include_directories(
${OPENSSL_INCLUDE_DIR}
)
-add_library(shared STATIC ${shared_STAT_SRCS})
+add_library(shared STATIC
+ ${shared_STAT_SRCS}
+ ${shared_STAT_PCH_SRC}
+)
target_link_libraries(shared
${ACE_LIBRARY}
)
# Generate precompiled header
-if( USE_COREPCH )
- if(CMAKE_COMPILER_IS_GNUCXX)
- add_precompiled_header(shared ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/sharedPCH.h)
- elseif(MSVC)
- add_native_precompiled_header(shared ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/sharedPCH)
- endif()
-endif()
-
+if (USE_COREPCH)
+ add_cxx_pch(shared ${shared_STAT_PCH_HDR} ${shared_STAT_PCH_SRC})
+endif ()
diff --git a/src/server/shared/Cryptography/BigNumber.cpp b/src/server/shared/Cryptography/BigNumber.cpp
index 8e424e9bcdb..def0a7fd02e 100755
--- a/src/server/shared/Cryptography/BigNumber.cpp
+++ b/src/server/shared/Cryptography/BigNumber.cpp
@@ -192,12 +192,12 @@ uint8 *BigNumber::AsByteArray(int minSize, bool reverse)
return _array;
}
-const char *BigNumber::AsHexStr()
+char * BigNumber::AsHexStr() const
{
return BN_bn2hex(_bn);
}
-const char *BigNumber::AsDecStr()
+char * BigNumber::AsDecStr() const
{
return BN_bn2dec(_bn);
}
diff --git a/src/server/shared/Cryptography/BigNumber.h b/src/server/shared/Cryptography/BigNumber.h
index a27d74fb5c7..36a618056a5 100755
--- a/src/server/shared/Cryptography/BigNumber.h
+++ b/src/server/shared/Cryptography/BigNumber.h
@@ -84,8 +84,8 @@ class BigNumber
uint32 AsDword();
uint8* AsByteArray(int minSize = 0, bool reverse = true);
- const char *AsHexStr();
- const char *AsDecStr();
+ char * AsHexStr() const;
+ char * AsDecStr() const;
private:
struct bignum_st *_bn;
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index d9b517c098f..db9a5646a69 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -169,10 +169,9 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_INS_GUILD_BANK_ITEM, "INSERT INTO guild_bank_item (guildid, TabId, SlotId, item_guid) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_ITEM, "DELETE FROM guild_bank_item WHERE guildid = ? AND TabId = ? AND SlotId = ?", CONNECTION_ASYNC) // 0: uint32, 1: uint8, 2: uint8
PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_ITEMS, "DELETE FROM guild_bank_item WHERE guildid = ?", CONNECTION_ASYNC) // 0: uint32
- PREPARE_STATEMENT(CHAR_INS_GUILD_BANK_RIGHT_DEFAULT, "INSERT INTO guild_bank_right (guildid, TabId, rid) VALUES (?, ?, ?)", CONNECTION_ASYNC) // 0: uint32, 1: uint8, 2: uint8
// 0: uint32, 1: uint8, 2: uint8, 3: uint8, 4: uint32
- PREPARE_STATEMENT(CHAR_INS_GUILD_BANK_RIGHT, "INSERT INTO guild_bank_right (guildid, TabId, rid, gbright, SlotPerDay) VALUES (?, ?, ?, ?, ?)", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_RIGHT, "DELETE FROM guild_bank_right WHERE guildid = ? AND TabId = ? AND rid = ?", CONNECTION_ASYNC) // 0: uint32, 1: uint8, 2: uint8
+ PREPARE_STATEMENT(CHAR_INS_GUILD_BANK_RIGHT, "INSERT INTO guild_bank_right (guildid, TabId, rid, gbright, SlotPerDay) VALUES (?, ?, ?, ?, ?) "
+ "ON DUPLICATE KEY UPDATE gbright = VALUES(gbright), SlotPerDay = VALUES(SlotPerDay)", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_RIGHTS, "DELETE FROM guild_bank_right WHERE guildid = ?", CONNECTION_ASYNC) // 0: uint32
PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_RIGHTS_FOR_RANK, "DELETE FROM guild_bank_right WHERE guildid = ? AND rid = ?", CONNECTION_ASYNC) // 0: uint32, 1: uint8
// 0-1: uint32, 2-3: uint8, 4-5: uint32, 6: uint16, 7: uint8, 8: uint64
@@ -198,32 +197,15 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_UPD_GUILD_BANK_MONEY, "UPDATE guild SET BankMoney = ? WHERE guildid = ?", CONNECTION_ASYNC) // 0: uint64, 1: uint32
// 0: uint8, 1: uint32, 2: uint8, 3: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_BANK_EVENTLOG_TAB, "UPDATE guild_bank_eventlog SET TabId = ? WHERE guildid = ? AND TabId = ? AND LogGuid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_MONEY, "UPDATE guild_member SET BankRemMoney = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC) // 0: uint32, 1: uint32, 2: uint32
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_TIME_MONEY, "UPDATE guild_member SET BankResetTimeMoney = ?, BankRemMoney = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC) // 0: uint32, 1: uint32, 2: uint32, 3: uint32
- PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_RESET_TIME, "UPDATE guild_member SET BankResetTimeMoney = 0 WHERE guildid = ? AND rank = ?", CONNECTION_ASYNC) // 0: uint32, 1: uint8
PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_MONEY, "UPDATE guild_rank SET BankMoneyPerDay = ? WHERE rid = ? AND guildid = ?", CONNECTION_ASYNC) // 0: uint32, 1: uint8, 2: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_BANK_TAB_TEXT, "UPDATE guild_bank_tab SET TabText = ? WHERE guildid = ? AND TabId = ?", CONNECTION_ASYNC) // 0: string, 1: uint32, 2: uint8
+
+ PREPARE_STATEMENT(CHAR_INS_GUILD_MEMBER_WITHDRAW,
+ "INSERT INTO guild_member_withdraw (guid, tab0, tab1, tab2, tab3, tab4, tab5, money) VALUES (?, ?, ?, ?, ?, ?, ?, ?) "
+ "ON DUPLICATE KEY UPDATE tab0 = VALUES (tab0), tab1 = VALUES (tab1), tab2 = VALUES (tab2), tab3 = VALUES (tab3), tab4 = VALUES (tab4), tab5 = VALUES (tab5)", CONNECTION_ASYNC)
+ PREPARE_STATEMENT(CHAR_DEL_GUILD_MEMBER_WITHDRAW, "TRUNCATE guild_member_withdraw", CONNECTION_ASYNC)
+
// 0: uint32, 1: uint32, 2: uint32
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS0, "UPDATE guild_member SET BankRemSlotsTab0 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS1, "UPDATE guild_member SET BankRemSlotsTab1 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS2, "UPDATE guild_member SET BankRemSlotsTab2 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS3, "UPDATE guild_member SET BankRemSlotsTab3 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS4, "UPDATE guild_member SET BankRemSlotsTab4 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS5, "UPDATE guild_member SET BankRemSlotsTab5 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- // 0: uint32, 1: uint32, 2: uint32, 3: uint32
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS0, "UPDATE guild_member SET BankResetTimeTab0 = ?, BankRemSlotsTab0 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS1, "UPDATE guild_member SET BankResetTimeTab1 = ?, BankRemSlotsTab1 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS2, "UPDATE guild_member SET BankResetTimeTab2 = ?, BankRemSlotsTab2 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS3, "UPDATE guild_member SET BankResetTimeTab3 = ?, BankRemSlotsTab3 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS4, "UPDATE guild_member SET BankResetTimeTab4 = ?, BankRemSlotsTab4 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS5, "UPDATE guild_member SET BankResetTimeTab5 = ?, BankRemSlotsTab5 = ? WHERE guildid = ? AND guid = ?", CONNECTION_ASYNC)
- // 0: uint32, 1: uint8
- PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_TIME0, "UPDATE guild_member SET BankResetTimeTab0 = 0 WHERE guildid = ? AND rank = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_TIME1, "UPDATE guild_member SET BankResetTimeTab1 = 0 WHERE guildid = ? AND rank = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_TIME2, "UPDATE guild_member SET BankResetTimeTab2 = 0 WHERE guildid = ? AND rank = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_TIME3, "UPDATE guild_member SET BankResetTimeTab3 = 0 WHERE guildid = ? AND rank = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_TIME4, "UPDATE guild_member SET BankResetTimeTab4 = 0 WHERE guildid = ? AND rank = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_TIME5, "UPDATE guild_member SET BankResetTimeTab5 = 0 WHERE guildid = ? AND rank = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHAR_DATA_FOR_GUILD, "SELECT name, level, class, zone, account FROM characters WHERE guid = ?", CONNECTION_SYNCH)
// Chat channel handling
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index 88018997e4b..e421a7917ca 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -173,9 +173,7 @@ enum CharacterDatabaseStatements
CHAR_INS_GUILD_BANK_ITEM,
CHAR_DEL_GUILD_BANK_ITEM,
CHAR_DEL_GUILD_BANK_ITEMS,
- CHAR_INS_GUILD_BANK_RIGHT_DEFAULT,
CHAR_INS_GUILD_BANK_RIGHT,
- CHAR_DEL_GUILD_BANK_RIGHT,
CHAR_DEL_GUILD_BANK_RIGHTS,
CHAR_DEL_GUILD_BANK_RIGHTS_FOR_RANK,
CHAR_INS_GUILD_BANK_EVENTLOG,
@@ -196,29 +194,10 @@ enum CharacterDatabaseStatements
CHAR_UPD_GUILD_BANK_TAB_INFO,
CHAR_UPD_GUILD_BANK_MONEY,
CHAR_UPD_GUILD_BANK_EVENTLOG_TAB,
- CHAR_UPD_GUILD_MEMBER_BANK_REM_MONEY,
- CHAR_UPD_GUILD_MEMBER_BANK_TIME_MONEY,
- CHAR_UPD_GUILD_RANK_BANK_RESET_TIME,
CHAR_UPD_GUILD_RANK_BANK_MONEY,
CHAR_UPD_GUILD_BANK_TAB_TEXT,
- CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS0,
- CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS1,
- CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS2,
- CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS3,
- CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS4,
- CHAR_UPD_GUILD_MEMBER_BANK_TIME_REM_SLOTS5,
- CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS0,
- CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS1,
- CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS2,
- CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS3,
- CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS4,
- CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS5,
- CHAR_UPD_GUILD_RANK_BANK_TIME0,
- CHAR_UPD_GUILD_RANK_BANK_TIME1,
- CHAR_UPD_GUILD_RANK_BANK_TIME2,
- CHAR_UPD_GUILD_RANK_BANK_TIME3,
- CHAR_UPD_GUILD_RANK_BANK_TIME4,
- CHAR_UPD_GUILD_RANK_BANK_TIME5,
+ CHAR_INS_GUILD_MEMBER_WITHDRAW,
+ CHAR_DEL_GUILD_MEMBER_WITHDRAW,
CHAR_SEL_CHAR_DATA_FOR_GUILD,
CHAR_SEL_CHANNEL,
diff --git a/src/server/shared/Database/PreparedStatement.h b/src/server/shared/Database/PreparedStatement.h
index 11ece3e3032..90ea435d1f9 100755
--- a/src/server/shared/Database/PreparedStatement.h
+++ b/src/server/shared/Database/PreparedStatement.h
@@ -21,6 +21,10 @@
#include "SQLOperation.h"
#include <ace/Future.h>
+#ifdef __APPLE__
+#undef TYPE_BOOL
+#endif
+
//- Union for data buffer (upper-level bind -> queue -> lower-level bind)
union PreparedStatementDataUnion
{
@@ -157,4 +161,4 @@ class PreparedStatementTask : public SQLOperation
bool m_has_result;
PreparedQueryResultFuture m_result;
};
-#endif \ No newline at end of file
+#endif
diff --git a/src/server/shared/Database/QueryResult.h b/src/server/shared/Database/QueryResult.h
index e32b16555bc..be7fa7b649c 100755
--- a/src/server/shared/Database/QueryResult.h
+++ b/src/server/shared/Database/QueryResult.h
@@ -23,7 +23,6 @@
#include <ace/Thread_Mutex.h>
#include "Field.h"
-#include "Log.h"
#ifdef _WIN32
#include <winsock2.h>
diff --git a/src/server/shared/Logging/Appender.cpp b/src/server/shared/Logging/Appender.cpp
index 348ec4b3c7c..0bfcc8abbd2 100644
--- a/src/server/shared/Logging/Appender.cpp
+++ b/src/server/shared/Logging/Appender.cpp
@@ -217,6 +217,8 @@ char const* Appender::getLogFilterTypeString(LogFilterType type)
return "SERVER LOADING";
case LOG_FILTER_OPCODES:
return "OPCODE";
+ case LOG_FILTER_SOAP:
+ return "SOAP";
default:
break;
}
diff --git a/src/server/shared/Logging/Appender.h b/src/server/shared/Logging/Appender.h
index 2d6145b14af..89d0016ce2b 100644
--- a/src/server/shared/Logging/Appender.h
+++ b/src/server/shared/Logging/Appender.h
@@ -66,10 +66,11 @@ enum LogFilterType
LOG_FILTER_PLAYER_DUMP = 38,
LOG_FILTER_BATTLEFIELD = 39,
LOG_FILTER_SERVER_LOADING = 40,
- LOG_FILTER_OPCODES = 41
+ LOG_FILTER_OPCODES = 41,
+ LOG_FILTER_SOAP = 42
};
-const uint8 MaxLogFilter = uint8(LOG_FILTER_OPCODES) + 1;
+const uint8 MaxLogFilter = 43;
// Values assigned have their equivalent in enum ACE_Log_Priority
enum LogLevel
diff --git a/src/server/shared/Threading/DelayExecutor.cpp b/src/server/shared/Threading/DelayExecutor.cpp
index cfc4987387f..685e86e2a2f 100644
--- a/src/server/shared/Threading/DelayExecutor.cpp
+++ b/src/server/shared/Threading/DelayExecutor.cpp
@@ -59,7 +59,7 @@ int DelayExecutor::svc()
return 0;
}
-int DelayExecutor::activate(int num_threads, ACE_Method_Request* pre_svc_hook, ACE_Method_Request* post_svc_hook)
+int DelayExecutor::start(int num_threads, ACE_Method_Request* pre_svc_hook, ACE_Method_Request* post_svc_hook)
{
if (activated())
return -1;
diff --git a/src/server/shared/Threading/DelayExecutor.h b/src/server/shared/Threading/DelayExecutor.h
index 664d8ca78a2..5eaaacdb98b 100644
--- a/src/server/shared/Threading/DelayExecutor.h
+++ b/src/server/shared/Threading/DelayExecutor.h
@@ -16,7 +16,7 @@ class DelayExecutor : protected ACE_Task_Base
int execute(ACE_Method_Request* new_req);
- int activate(int num_threads = 1, ACE_Method_Request* pre_svc_hook = NULL, ACE_Method_Request* post_svc_hook = NULL);
+ int start(int num_threads = 1, ACE_Method_Request* pre_svc_hook = NULL, ACE_Method_Request* post_svc_hook = NULL);
int deactivate();
diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt
index eb5bb04d766..58167aad703 100644
--- a/src/server/worldserver/CMakeLists.txt
+++ b/src/server/worldserver/CMakeLists.txt
@@ -14,15 +14,9 @@ file(GLOB_RECURSE sources_TCSoap TCSoap/*.cpp TCSoap/*.h)
file(GLOB_RECURSE sources_WorldThread WorldThread/*.cpp WorldThread/*.h)
file(GLOB sources_localdir *.cpp *.h)
-if( USE_COREPCH )
- include_directories(${CMAKE_CURRENT_BINARY_DIR})
-endif()
-
-if ( USE_COREPCH AND MSVC )
- set(worldserver_SRCS
- PrecompiledHeaders/worldPCH.cpp
- PrecompiledHeaders/worldPCH.h
- )
+if (USE_COREPCH)
+ set(worldserver_PCH_HDR PrecompiledHeaders/worldPCH.h)
+ set(worldserver_PCH_SRC PrecompiledHeaders/worldPCH.cpp)
endif()
set(worldserver_SRCS
@@ -143,17 +137,21 @@ include_directories(
${OPENSSL_INCLUDE_DIR}
)
-set(worldserver_LINK_FLAGS "")
-
-add_executable(worldserver ${worldserver_SRCS})
+add_executable(worldserver
+ ${worldserver_SRCS}
+ ${worldserver_PCH_SRC}
+)
if( NOT WIN32 )
- add_definitions(-D_TRINITY_CORE_CONFIG='"${CONF_DIR}/worldserver.conf"')
+ set_target_properties(worldserver PROPERTIES
+ COMPILE_DEFINITIONS _TRINITY_CORE_CONFIG="${CONF_DIR}/worldserver.conf"
+ )
endif()
add_dependencies(worldserver revision.h)
-if( UNIX )
+
+if( UNIX AND NOT NOJEM )
set(worldserver_LINK_FLAGS "-pthread -lncurses ${worldserver_LINK_FLAGS}")
endif()
@@ -172,9 +170,7 @@ target_link_libraries(worldserver
${ACE_LIBRARY}
${MYSQL_LIBRARY}
${OPENSSL_LIBRARIES}
- ${OPENSSL_EXTRA_LIBRARIES}
${ZLIB_LIBRARIES}
- ${OSX_LIBS}
)
if( WIN32 )
@@ -194,9 +190,5 @@ endif()
# Generate precompiled header
if( USE_COREPCH )
- if(CMAKE_COMPILER_IS_GNUCXX)
- add_precompiled_header(worldserver ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/worldPCH.h)
- elseif(MSVC)
- add_native_precompiled_header(worldserver ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders/worldPCH)
- endif()
+ add_cxx_pch(worldserver ${worldserver_PCH_HDR} ${worldserver_PCH_SRC})
endif()
diff --git a/src/server/worldserver/TCSoap/TCSoap.cpp b/src/server/worldserver/TCSoap/TCSoap.cpp
index 3ce4d4f59cb..40b35df9aee 100755
--- a/src/server/worldserver/TCSoap/TCSoap.cpp
+++ b/src/server/worldserver/TCSoap/TCSoap.cpp
@@ -32,18 +32,18 @@ void TCSoapRunnable::run()
soap.send_timeout = 5;
if (!soap_valid_socket(soap_bind(&soap, m_host.c_str(), m_port, 100)))
{
- sLog->outError(LOG_FILTER_WORLDSERVER, "TCSoap: couldn't bind to %s:%d", m_host.c_str(), m_port);
+ sLog->outError(LOG_FILTER_SOAP, "Couldn't bind to %s:%d", m_host.c_str(), m_port);
exit(-1);
}
- sLog->outInfo(LOG_FILTER_WORLDSERVER, "TCSoap: bound to http://%s:%d", m_host.c_str(), m_port);
+ sLog->outInfo(LOG_FILTER_SOAP, "Bound to http://%s:%d", m_host.c_str(), m_port);
while (!World::IsStopped())
{
if (!soap_valid_socket(soap_accept(&soap)))
continue; // ran into an accept timeout
- sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: accepted connection from IP=%d.%d.%d.%d", (int)(soap.ip>>24)&0xFF, (int)(soap.ip>>16)&0xFF, (int)(soap.ip>>8)&0xFF, (int)soap.ip&0xFF);
+ sLog->outDebug(LOG_FILTER_SOAP, "Accepted connection from IP=%d.%d.%d.%d", (int)(soap.ip>>24)&0xFF, (int)(soap.ip>>16)&0xFF, (int)(soap.ip>>8)&0xFF, (int)soap.ip&0xFF);
struct soap* thread_soap = soap_copy(&soap);// make a safe copy
ACE_Message_Block* mb = new ACE_Message_Block(sizeof(struct soap*));
@@ -78,33 +78,33 @@ int ns1__executeCommand(soap* soap, char* command, char** result)
// security check
if (!soap->userid || !soap->passwd)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: Client didn't provide login information");
+ sLog->outDebug(LOG_FILTER_SOAP, "Client didn't provide login information");
return 401;
}
uint32 accountId = AccountMgr::GetId(soap->userid);
if (!accountId)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: Client used invalid username '%s'", soap->userid);
+ sLog->outDebug(LOG_FILTER_SOAP, "Client used invalid username '%s'", soap->userid);
return 401;
}
if (!AccountMgr::CheckPassword(accountId, soap->passwd))
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: invalid password for account '%s'", soap->userid);
+ sLog->outDebug(LOG_FILTER_SOAP, "Invalid password for account '%s'", soap->userid);
return 401;
}
if (AccountMgr::GetSecurity(accountId) < SEC_ADMINISTRATOR)
{
- sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: %s's gmlevel is too low", soap->userid);
+ sLog->outDebug(LOG_FILTER_SOAP, "%s's gmlevel is too low", soap->userid);
return 403;
}
if (!command || !*command)
return soap_sender_fault(soap, "Command mustn't be empty", "The supplied command was an empty string");
- sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: got command '%s'", command);
+ sLog->outDebug(LOG_FILTER_SOAP, "Got command '%s'", command);
SOAPCommand connection;
// commands are executed in the world thread. We have to wait for them to be completed
@@ -119,7 +119,7 @@ int ns1__executeCommand(soap* soap, char* command, char** result)
int acc = connection.pendingCommands.acquire();
if (acc)
{
- sLog->outError(LOG_FILTER_WORLDSERVER, "TCSoap: Error while acquiring lock, acc = %i, errno = %u", acc, errno);
+ sLog->outError(LOG_FILTER_SOAP, "Error while acquiring lock, acc = %i, errno = %u", acc, errno);
}
// alright, command finished
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 8f79cff8f46..fafc1362cad 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -976,6 +976,14 @@ Quests.IgnoreAutoComplete = 0
Guild.EventLogRecordsCount = 100
#
+# Guild.ResetHour
+# Description: Hour of the day when the daily cap resets occur.
+# Range: 0-23
+# Default: 6 - (06:00 AM)
+
+Guild.ResetHour = 6
+
+#
# Guild.BankEventLogRecordsCount
# Description: Number of log entries for guild bank events that are stored per guild. Old
# entries will be overwritten if the number of log entries exceed the
@@ -2786,6 +2794,8 @@ Appenders=Console Server GM DBErrors Char RA Warden Chat
# 39 - Battlefield
# 40 - Server Loading
# 41 - Opcodes (just id and name sent / received)
+# 42 - SOAP
+#
# LogLevel
# 0 - (Disabled)
# 1 - (Trace)