aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2013_07_18_00_world_conditions.sql2
-rw-r--r--src/server/game/Globals/ObjectMgr.h2
-rw-r--r--src/server/scripts/Commands/cs_arena.cpp88
3 files changed, 54 insertions, 38 deletions
diff --git a/sql/updates/world/2013_07_18_00_world_conditions.sql b/sql/updates/world/2013_07_18_00_world_conditions.sql
new file mode 100644
index 00000000000..90a16d32fb3
--- /dev/null
+++ b/sql/updates/world/2013_07_18_00_world_conditions.sql
@@ -0,0 +1,2 @@
+-- Fix There's Something About the Squire
+UPDATE `conditions` SET `ConditionTarget`=1 WHERE `SourceTypeOrReferenceId`=17 AND `SourceGroup`=0 AND `SourceEntry`=63126 AND `ConditionTypeOrReference`=9;
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 1c986e2e48a..ddabc56fbb6 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -723,6 +723,8 @@ class ObjectMgr
* If the player is online, the name is retrieved immediately otherwise
* a database query is done.
*
+ * @remark Use sWorld->GetCharacterNameData because it doesn't require a database query when player is offline
+ *
* @param guid player full guid
* @param name returned name
*
diff --git a/src/server/scripts/Commands/cs_arena.cpp b/src/server/scripts/Commands/cs_arena.cpp
index b6a1b27b830..4dbdab25747 100644
--- a/src/server/scripts/Commands/cs_arena.cpp
+++ b/src/server/scripts/Commands/cs_arena.cpp
@@ -70,9 +70,11 @@ public:
char* name = handler->extractQuotedArg(tailStr);
if (!name)
return false;
+
char* typeStr = strtok(NULL, "");
if (!typeStr)
return false;
+
int8 type = atoi(typeStr);
if (sArenaTeamMgr->GetArenaTeamByName(name))
{
@@ -90,18 +92,18 @@ public:
return false;
}
- ArenaTeam* Arena = new ArenaTeam();
+ ArenaTeam* arena = new ArenaTeam();
- if (!Arena->Create(target->GetGUID(), type, name, 4293102085, 101, 4293253939, 4, 4284049911))
+ if (!arena->Create(target->GetGUID(), type, name, 4293102085, 101, 4293253939, 4, 4284049911))
{
- delete Arena;
+ delete arena;
handler->SendSysMessage(LANG_BAD_VALUE);
handler->SetSentErrorMessage(true);
return false;
}
- sArenaTeamMgr->AddArenaTeam(Arena);
- handler->PSendSysMessage(LANG_ARENA_CREATE, Arena->GetName().c_str(), Arena->GetId(), Arena->GetType(), Arena->GetCaptain());
+ sArenaTeamMgr->AddArenaTeam(arena);
+ handler->PSendSysMessage(LANG_ARENA_CREATE, arena->GetName().c_str(), arena->GetId(), arena->GetType(), arena->GetCaptain());
}
else
{
@@ -109,6 +111,7 @@ public:
handler->SetSentErrorMessage(true);
return false;
}
+
return true;
}
@@ -121,29 +124,32 @@ public:
if (!teamId)
return false;
- ArenaTeam* Arena = sArenaTeamMgr->GetArenaTeamById(teamId);
+ ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
- if (!Arena)
+ if (!arena)
{
handler->PSendSysMessage(LANG_ARENA_ERROR_NOT_FOUND, teamId);
handler->SetSentErrorMessage(true);
return false;
}
- if (Arena->IsFighting())
+ if (arena->IsFighting())
{
handler->SendSysMessage(LANG_ARENA_ERROR_COMBAT);
handler->SetSentErrorMessage(true);
return false;
}
- std::string name = Arena->GetName();
- Arena->Disband();
+
+ std::string name = arena->GetName();
+ arena->Disband();
if (handler->GetSession())
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "GameMaster: %s [GUID: %u] disbanded arena team type: %u [Id: %u].",
- handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), Arena->GetType(), teamId);
+ handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), arena->GetType(), teamId);
else
- TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: disbanded arena team type: %u [Id: %u].", Arena->GetType(), teamId);
- delete(Arena);
+ TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: disbanded arena team type: %u [Id: %u].", arena->GetType(), teamId);
+
+ delete(arena);
+
handler->PSendSysMessage(LANG_ARENA_DISBAND, name.c_str(), teamId);
return true;
}
@@ -171,8 +177,8 @@ public:
return false;
}
- ArenaTeam* Arena = sArenaTeamMgr->GetArenaTeamByName(oldArenaStr);
- if (!Arena)
+ ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamByName(oldArenaStr);
+ if (!arena)
{
handler->PSendSysMessage(LANG_AREAN_ERROR_NAME_NOT_FOUND, oldArenaStr);
handler->SetSentErrorMessage(true);
@@ -186,25 +192,27 @@ public:
return false;
}
- if (Arena->IsFighting())
+ if (arena->IsFighting())
{
handler->SendSysMessage(LANG_ARENA_ERROR_COMBAT);
handler->SetSentErrorMessage(true);
return false;
}
- if (!Arena->SetName(newArenaStr))
+ if (!arena->SetName(newArenaStr))
{
handler->SendSysMessage(LANG_BAD_VALUE);
handler->SetSentErrorMessage(true);
return false;
}
- handler->PSendSysMessage(LANG_ARENA_RENAME, Arena->GetId(), oldArenaStr, newArenaStr);
+
+ handler->PSendSysMessage(LANG_ARENA_RENAME, arena->GetId(), oldArenaStr, newArenaStr);
if (handler->GetSession())
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "GameMaster: %s [GUID: %u] rename arena team \"%s\"[Id: %u] to \"%s\"",
- handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), oldArenaStr, Arena->GetId(), newArenaStr);
+ handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), oldArenaStr, arena->GetId(), newArenaStr);
else
- TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: rename arena team \"%s\"[Id: %u] to \"%s\"", oldArenaStr, Arena->GetId(), newArenaStr);
+ TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: rename arena team \"%s\"[Id: %u] to \"%s\"", oldArenaStr, arena->GetId(), newArenaStr);
+
return true;
}
@@ -265,17 +273,23 @@ public:
return false;
}
- std::string oldCaptainName;
- sObjectMgr->GetPlayerNameByGUID(arena->GetCaptain(), oldCaptainName);
arena->SetCaptain(targetGuid);
- handler->PSendSysMessage(LANG_ARENA_CAPTAIN, arena->GetName().c_str(), arena->GetId(), oldCaptainName.c_str(), target->GetName().c_str());
+ CharacterNameData const* oldCaptainNameData = sWorld->GetCharacterNameData(GUID_LOPART(arena->GetCaptain()));
+ if (!oldCaptainNameData)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ handler->PSendSysMessage(LANG_ARENA_CAPTAIN, arena->GetName().c_str(), arena->GetId(), oldCaptainNameData->m_name.c_str(), target->GetName().c_str());
if (handler->GetSession())
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "GameMaster: %s [GUID: %u] promoted player: %s [GUID: %u] to leader of arena team \"%s\"[Id: %u]",
handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow(), target->GetName().c_str(), target->GetGUIDLow(), arena->GetName().c_str(), arena->GetId());
else
TC_LOG_DEBUG(LOG_FILTER_ARENAS, "Console: promoted player: %s [GUID: %u] to leader of arena team \"%s\"[Id: %u]",
target->GetName().c_str(), target->GetGUIDLow(), arena->GetName().c_str(), arena->GetId());
+
return true;
}
@@ -288,20 +302,19 @@ public:
if (!teamId)
return false;
- ArenaTeam* Arena = sArenaTeamMgr->GetArenaTeamById(teamId);
+ ArenaTeam* arena = sArenaTeamMgr->GetArenaTeamById(teamId);
- if (!Arena)
+ if (!arena)
{
handler->PSendSysMessage(LANG_ARENA_ERROR_NOT_FOUND, teamId);
handler->SetSentErrorMessage(true);
return false;
}
- handler->PSendSysMessage(LANG_ARENA_INFO_HEADER, Arena->GetName().c_str(), Arena->GetId(), Arena->GetRating(), Arena->GetType(), Arena->GetType());
- for (ArenaTeam::MemberList::iterator itr = Arena->m_membersBegin(); itr != Arena->m_membersEnd(); ++itr)
- {
- handler->PSendSysMessage(LANG_ARENA_INFO_MEMBERS, itr->Name.c_str(), GUID_LOPART(itr->Guid), itr->PersonalRating, (Arena->GetCaptain() == itr->Guid ? "- Captain" : ""));
- }
+ handler->PSendSysMessage(LANG_ARENA_INFO_HEADER, arena->GetName().c_str(), arena->GetId(), arena->GetRating(), arena->GetType(), arena->GetType());
+ for (ArenaTeam::MemberList::iterator itr = arena->m_membersBegin(); itr != arena->m_membersEnd(); ++itr)
+ handler->PSendSysMessage(LANG_ARENA_INFO_MEMBERS, itr->Name.c_str(), GUID_LOPART(itr->Guid), itr->PersonalRating, (arena->GetCaptain() == itr->Guid ? "- Captain" : ""));
+
return true;
}
@@ -322,17 +335,16 @@ public:
ArenaTeamMgr::ArenaTeamContainer::const_iterator i = sArenaTeamMgr->GetArenaTeamMapBegin();
for (; i != sArenaTeamMgr->GetArenaTeamMapEnd(); ++i)
{
- ArenaTeam* Arena = i->second;
+ ArenaTeam* arena = i->second;
- if (Utf8FitTo(Arena->GetName(), wnamepart))
+ if (Utf8FitTo(arena->GetName(), wnamepart))
{
if (handler->GetSession())
- handler->PSendSysMessage(LANG_ARENA_LOOKUP, Arena->GetName().c_str(), Arena->GetId(), Arena->GetType(), Arena->GetType());
-
- if (!found)
- found = true;
-
- continue;
+ {
+ handler->PSendSysMessage(LANG_ARENA_LOOKUP, arena->GetName().c_str(), arena->GetId(), arena->GetType(), arena->GetType());
+ found = true;
+ continue;
+ }
}
}