diff options
-rw-r--r-- | sql/updates/world/2013_07_18_00_world_conditions.sql | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 2 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_arena.cpp | 88 |
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; + } } } |