aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/ArenaTeamHandler.cpp
diff options
context:
space:
mode:
authorTuxity <kevin.darcel@gmail.com>2012-11-20 10:37:25 +0100
committerTuxity <kevin.darcel@gmail.com>2012-11-20 10:37:25 +0100
commit172c5f0b93d8810ed06dde48af529d0e1998a48c (patch)
treec45ea1bc76f881394f404eb37c9853e416c4cd16 /src/server/game/Handlers/ArenaTeamHandler.cpp
parentfff684ec7884440500aad7ca5a90e39709dc675e (diff)
Core/Arenas: Fix arena system, you can now enter in arenas and fight !
Countdown in preparation time are also displayed EnnemyUnitFrame while fighting works too N.B: There might be some little typos to fix.
Diffstat (limited to 'src/server/game/Handlers/ArenaTeamHandler.cpp')
-rwxr-xr-xsrc/server/game/Handlers/ArenaTeamHandler.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/server/game/Handlers/ArenaTeamHandler.cpp b/src/server/game/Handlers/ArenaTeamHandler.cpp
index 0790acb4ae6..0d1fa986b87 100755
--- a/src/server/game/Handlers/ArenaTeamHandler.cpp
+++ b/src/server/game/Handlers/ArenaTeamHandler.cpp
@@ -74,6 +74,54 @@ void WorldSession::HandleArenaTeamRosterOpcode(WorldPacket & recvData)
arenaTeam->Roster(this);
}
+void WorldSession::HandleArenaTeamCreateOpcode(WorldPacket & recvData)
+{
+ sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ARENA_TEAM_CREATE");
+
+ uint32 slot, icon, iconcolor, border, bordercolor, background;
+ std::string name;
+
+ recvData >> slot;
+ recvData >> iconcolor;
+ recvData >> bordercolor;
+ recvData >> icon;
+ recvData >> background;
+ recvData >> border;
+ name = recvData.ReadString(recvData.ReadBits(8));
+
+ uint8 type = ArenaTeam::GetTypeBySlot(slot);
+
+ if (_player->GetArenaTeamId(slot))
+ {
+ SendArenaTeamCommandResult(ERR_ARENA_TEAM_INVITE_SS, "", _player->GetName(), ERR_ALREADY_IN_ARENA_TEAM_S);
+ return;
+ }
+
+ if (sObjectMgr->IsReservedName(name) || !ObjectMgr::IsValidCharterName(name))
+ {
+ SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, name, "", ERR_ARENA_TEAM_NAME_INVALID);
+ return;
+ }
+
+ if (sArenaTeamMgr->GetArenaTeamByName(name))
+ {
+ SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, name, "", ERR_ARENA_TEAM_NAME_EXISTS_S);
+ return;
+ }
+
+ ArenaTeam* arenaTeam = new ArenaTeam;
+ if (!arenaTeam->Create(GUID_LOPART(_player->GetGUID()), type, name, background, icon, iconcolor, border, bordercolor))
+ {
+ sLog->outError(LOG_FILTER_ARENAS, "Arena team create failed.");
+ delete arenaTeam;
+ return;
+ }
+
+ sArenaTeamMgr->AddArenaTeam(arenaTeam);
+
+ SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, name, "", ERR_ARENA_TEAM_CREATED);
+}
+
void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recvData)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_ARENA_TEAM_INVITE");
@@ -112,6 +160,12 @@ void WorldSession::HandleArenaTeamInviteOpcode(WorldPacket & recvData)
return;
}
+ if (arenaTeam->GetCaptain() != _player->GetGUID())
+ {
+ SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_PERMISSIONS);
+ return;
+ }
+
// OK result but don't send invite
if (player->GetSocial()->HasIgnore(GetPlayer()->GetGUIDLow()))
return;