From aa8bfeec4fe8e818ffc530b30de39cc86d89ff0d Mon Sep 17 00:00:00 2001 From: Chaplain Date: Sun, 1 Sep 2013 22:45:40 +0300 Subject: Auth/Misc: Code cleanup. *Random performance optimizations --- src/server/authserver/Main.cpp | 2 +- src/server/authserver/Server/AuthSocket.cpp | 23 +++++++++++----------- src/server/authserver/Server/RealmSocket.cpp | 6 ++---- .../shared/Debugging/WheatyExceptionReport.cpp | 3 +-- src/server/shared/Utilities/Util.h | 8 ++++---- 5 files changed, 20 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index 9a6cc89fdd4..b16e86a7f9f 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -298,7 +298,7 @@ bool StartDB() } // NOTE: While authserver is singlethreaded you should keep synch_threads == 1. Increasing it is just silly since only 1 will be used ever. - if (!LoginDatabase.Open(dbstring.c_str(), uint8(worker_threads), uint8(synch_threads))) + if (!LoginDatabase.Open(dbstring, uint8(worker_threads), uint8(synch_threads))) { TC_LOG_ERROR(LOG_FILTER_AUTHSERVER, "Cannot connect to database"); return false; diff --git a/src/server/authserver/Server/AuthSocket.cpp b/src/server/authserver/Server/AuthSocket.cpp index 93c03e26c88..1ab9ae6eb62 100644 --- a/src/server/authserver/Server/AuthSocket.cpp +++ b/src/server/authserver/Server/AuthSocket.cpp @@ -387,7 +387,7 @@ bool AuthSocket::_HandleLogonChallenge() TC_LOG_DEBUG(LOG_FILTER_AUTHSERVER, "[AuthChallenge] Account '%s' is locked to IP - '%s'", _login.c_str(), fields[3].GetCString()); TC_LOG_DEBUG(LOG_FILTER_AUTHSERVER, "[AuthChallenge] Player address is '%s'", ip_address.c_str()); - if (strcmp(fields[4].GetCString(), ip_address.c_str())) + if (strcmp(fields[4].GetCString(), ip_address.c_str()) != 0) { TC_LOG_DEBUG(LOG_FILTER_AUTHSERVER, "[AuthChallenge] Account IP differs"); pkt << uint8(WOW_FAIL_LOCKED_ENFORCED); @@ -930,12 +930,13 @@ bool AuthSocket::_HandleRealmList() size_t RealmListSize = 0; for (RealmList::RealmMap::const_iterator i = sRealmList->begin(); i != sRealmList->end(); ++i) { + const Realm &realm = i->second; // don't work with realms which not compatible with the client - bool okBuild = ((_expversion & POST_BC_EXP_FLAG) && i->second.gamebuild == _build) || ((_expversion & PRE_BC_EXP_FLAG) && !AuthHelper::IsPreBCAcceptedClientBuild(i->second.gamebuild)); + bool okBuild = ((_expversion & POST_BC_EXP_FLAG) && realm.gamebuild == _build) || ((_expversion & PRE_BC_EXP_FLAG) && !AuthHelper::IsPreBCAcceptedClientBuild(realm.gamebuild)); // No SQL injection. id of realm is controlled by the database. - uint32 flag = i->second.flag; - RealmBuildInfo const* buildInfo = AuthHelper::GetBuildInfo(i->second.gamebuild); + uint32 flag = realm.flag; + RealmBuildInfo const* buildInfo = AuthHelper::GetBuildInfo(realm.gamebuild); if (!okBuild) { if (!buildInfo) @@ -956,27 +957,27 @@ bool AuthSocket::_HandleRealmList() } // We don't need the port number from which client connects with but the realm's port - clientAddr.set_port_number(i->second.ExternalAddress.get_port_number()); + clientAddr.set_port_number(realm.ExternalAddress.get_port_number()); - uint8 lock = (i->second.allowedSecurityLevel > _accountSecurityLevel) ? 1 : 0; + uint8 lock = (realm.allowedSecurityLevel > _accountSecurityLevel) ? 1 : 0; uint8 AmountOfCharacters = 0; stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_NUM_CHARS_ON_REALM); - stmt->setUInt32(0, i->second.m_ID); + stmt->setUInt32(0, realm.m_ID); stmt->setUInt32(1, id); result = LoginDatabase.Query(stmt); if (result) AmountOfCharacters = (*result)[0].GetUInt8(); - pkt << i->second.icon; // realm type + pkt << realm.icon; // realm type if (_expversion & POST_BC_EXP_FLAG) // only 2.x and 3.x clients pkt << lock; // if 1, then realm locked pkt << uint8(flag); // RealmFlags pkt << name; - pkt << GetAddressString(GetAddressForClient(i->second, clientAddr)); - pkt << i->second.populationLevel; + pkt << GetAddressString(GetAddressForClient(realm, clientAddr)); + pkt << realm.populationLevel; pkt << AmountOfCharacters; - pkt << i->second.timezone; // realm category + pkt << realm.timezone; // realm category if (_expversion & POST_BC_EXP_FLAG) // 2.x and 3.x clients pkt << uint8(0x2C); // unk, may be realm number/id? else diff --git a/src/server/authserver/Server/RealmSocket.cpp b/src/server/authserver/Server/RealmSocket.cpp index 6710a6a88ae..88d81132306 100644 --- a/src/server/authserver/Server/RealmSocket.cpp +++ b/src/server/authserver/Server/RealmSocket.cpp @@ -45,8 +45,7 @@ RealmSocket::~RealmSocket(void) // delete RealmSocketObject must never be called from our code. closing_ = true; - if (session_) - delete session_; + delete session_; peer().close(); } @@ -286,8 +285,7 @@ int RealmSocket::handle_input(ACE_HANDLE) void RealmSocket::set_session(Session* session) { - if (session_ != NULL) - delete session_; + delete session_; session_ = session; } diff --git a/src/server/shared/Debugging/WheatyExceptionReport.cpp b/src/server/shared/Debugging/WheatyExceptionReport.cpp index d4bd630ca25..f4da4093dfa 100644 --- a/src/server/shared/Debugging/WheatyExceptionReport.cpp +++ b/src/server/shared/Debugging/WheatyExceptionReport.cpp @@ -350,13 +350,12 @@ void WheatyExceptionReport::PrintSystemInfo() //=========================================================================== void WheatyExceptionReport::printTracesForAllThreads() { - HANDLE hThreadSnap = INVALID_HANDLE_VALUE; THREADENTRY32 te32; DWORD dwOwnerPID = GetCurrentProcessId(); m_hProcess = GetCurrentProcess(); // Take a snapshot of all running threads - hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); + HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (hThreadSnap == INVALID_HANDLE_VALUE) return; diff --git a/src/server/shared/Utilities/Util.h b/src/server/shared/Utilities/Util.h index a5b2a7b9cc2..6d0216225da 100644 --- a/src/server/shared/Utilities/Util.h +++ b/src/server/shared/Utilities/Util.h @@ -242,7 +242,7 @@ inline bool isNumericOrSpace(wchar_t wchar) return isNumeric(wchar) || wchar == L' '; } -inline bool isBasicLatinString(std::wstring wstr, bool numericOrSpace) +inline bool isBasicLatinString(const std::wstring &wstr, bool numericOrSpace) { for (size_t i = 0; i < wstr.size(); ++i) if (!isBasicLatinCharacter(wstr[i]) && (!numericOrSpace || !isNumericOrSpace(wstr[i]))) @@ -250,7 +250,7 @@ inline bool isBasicLatinString(std::wstring wstr, bool numericOrSpace) return true; } -inline bool isExtendedLatinString(std::wstring wstr, bool numericOrSpace) +inline bool isExtendedLatinString(const std::wstring &wstr, bool numericOrSpace) { for (size_t i = 0; i < wstr.size(); ++i) if (!isExtendedLatinCharacter(wstr[i]) && (!numericOrSpace || !isNumericOrSpace(wstr[i]))) @@ -258,7 +258,7 @@ inline bool isExtendedLatinString(std::wstring wstr, bool numericOrSpace) return true; } -inline bool isCyrillicString(std::wstring wstr, bool numericOrSpace) +inline bool isCyrillicString(const std::wstring &wstr, bool numericOrSpace) { for (size_t i = 0; i < wstr.size(); ++i) if (!isCyrillicCharacter(wstr[i]) && (!numericOrSpace || !isNumericOrSpace(wstr[i]))) @@ -266,7 +266,7 @@ inline bool isCyrillicString(std::wstring wstr, bool numericOrSpace) return true; } -inline bool isEastAsianString(std::wstring wstr, bool numericOrSpace) +inline bool isEastAsianString(const std::wstring &wstr, bool numericOrSpace) { for (size_t i = 0; i < wstr.size(); ++i) if (!isEastAsianCharacter(wstr[i]) && (!numericOrSpace || !isNumericOrSpace(wstr[i]))) -- cgit v1.2.3 From 24f8b2b994bb22f460bf304936cfc8a57e1c1220 Mon Sep 17 00:00:00 2001 From: Sebastian Valle Date: Tue, 3 Sep 2013 15:09:37 -0500 Subject: Core/Misc: Fixed some more issues found by code analysis tools. --- src/server/game/AI/CreatureAI.cpp | 2 ++ src/server/game/Maps/Map.cpp | 7 +++---- .../EasternKingdoms/AlteracValley/boss_balinda.cpp | 2 +- src/tools/map_extractor/loadlib.cpp | 12 +++++------- src/tools/mmaps_generator/MapBuilder.cpp | 21 +++------------------ 5 files changed, 14 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index cbb79b47958..75a1488ed45 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -75,6 +75,8 @@ void CreatureAI::DoZoneInCombat(Creature* creature /*= NULL*/, float maxRangeToN } } + // Intended duplicated check, the code above this should select a victim + // If it can't find a suitable attack target then we should error out. if (!creature->HasReactState(REACT_PASSIVE) && !creature->GetVictim()) { TC_LOG_ERROR(LOG_FILTER_GENERAL, "DoZoneInCombat called for creature that has empty threat list (creature entry = %u)", creature->GetEntry()); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 27f97ba93d4..04c2c22c595 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2407,6 +2407,8 @@ bool InstanceMap::AddPlayerToMap(Player* player) mapSave = sInstanceSaveMgr->AddInstanceSave(GetId(), GetInstanceId(), Difficulty(GetSpawnMode()), 0, true); } + ASSERT(mapSave); + // check for existing instance binds InstancePlayerBind* playerBind = player->GetBoundInstance(GetId(), Difficulty(GetSpawnMode())); if (playerBind && playerBind->perm) @@ -2441,10 +2443,7 @@ bool InstanceMap::AddPlayerToMap(Player* player) if (groupBind->save != mapSave) { TC_LOG_ERROR(LOG_FILTER_MAPS, "InstanceMap::Add: player %s(%d) is being put into instance %d, %d, %d but he is in group %d which is bound to instance %d, %d, %d!", player->GetName().c_str(), player->GetGUIDLow(), mapSave->GetMapId(), mapSave->GetInstanceId(), mapSave->GetDifficulty(), GUID_LOPART(group->GetLeaderGUID()), groupBind->save->GetMapId(), groupBind->save->GetInstanceId(), groupBind->save->GetDifficulty()); - if (mapSave) - TC_LOG_ERROR(LOG_FILTER_MAPS, "MapSave players: %d, group count: %d", mapSave->GetPlayerCount(), mapSave->GetGroupCount()); - else - TC_LOG_ERROR(LOG_FILTER_MAPS, "MapSave NULL"); + TC_LOG_ERROR(LOG_FILTER_MAPS, "MapSave players: %d, group count: %d", mapSave->GetPlayerCount(), mapSave->GetGroupCount()); if (groupBind->save) TC_LOG_ERROR(LOG_FILTER_MAPS, "GroupBind save players: %d, group count: %d", groupBind->save->GetPlayerCount(), groupBind->save->GetGroupCount()); else diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp index a1f33e57907..1b5a42a83ef 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp @@ -79,7 +79,7 @@ public: if (Creature* pBalinda = Unit::GetCreature(*me, balindaGUID)) if (me->GetDistance2d(pBalinda->GetHomePosition().GetPositionX(), pBalinda->GetHomePosition().GetPositionY()) > 50) EnterEvadeMode(); - resetTimer = 5 * IN_MILLISECONDS; + resetTimer = 5 * IN_MILLISECONDS; } else resetTimer -= diff; DoMeleeAttackIfReady(); diff --git a/src/tools/map_extractor/loadlib.cpp b/src/tools/map_extractor/loadlib.cpp index 5dcb479a11c..f5b0ac40875 100644 --- a/src/tools/map_extractor/loadlib.cpp +++ b/src/tools/map_extractor/loadlib.cpp @@ -34,13 +34,11 @@ bool FileLoader::loadFile(char *filename, bool log) data_size = mf.getSize(); data = new uint8 [data_size]; - if (data) - { - mf.read(data, data_size); - mf.close(); - if (prepareLoadedData()) - return true; - } + mf.read(data, data_size); + mf.close(); + if (prepareLoadedData()) + return true; + printf("Error loading %s", filename); mf.close(); free(); diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp index ab584e27e03..9c2dda51621 100644 --- a/src/tools/mmaps_generator/MapBuilder.cpp +++ b/src/tools/mmaps_generator/MapBuilder.cpp @@ -571,19 +571,7 @@ namespace MMAP // merge per tile poly and detail meshes rcPolyMesh** pmmerge = new rcPolyMesh*[TILES_PER_MAP * TILES_PER_MAP]; - if (!pmmerge) - { - printf("%s alloc pmmerge FIALED!\n", tileString); - return; - } - rcPolyMeshDetail** dmmerge = new rcPolyMeshDetail*[TILES_PER_MAP * TILES_PER_MAP]; - if (!dmmerge) - { - printf("%s alloc dmmerge FIALED!\n", tileString); - return; - } - int nmerge = 0; // build all tiles for (int y = 0; y < TILES_PER_MAP; ++y) @@ -678,12 +666,9 @@ namespace MMAP rcFreeContourSet(tile.cset); tile.cset = NULL; - if (tile.pmesh) - { - pmmerge[nmerge] = tile.pmesh; - dmmerge[nmerge] = tile.dmesh; - nmerge++; - } + pmmerge[nmerge] = tile.pmesh; + dmmerge[nmerge] = tile.dmesh; + nmerge++; } } -- cgit v1.2.3 From 0450b74e9682c67f69d2c85985251d9234797a9b Mon Sep 17 00:00:00 2001 From: jackpoz Date: Tue, 3 Sep 2013 23:05:02 +0200 Subject: Core/Movement: Fix uninitialized MovementInfo fields Fix uninitialized fallTime and splineElevation fields of MovementInfo. Valgrind log: Conditional jump or move depends on uninitialised value(s) at 0x5FBEB50: deflate (in /lib/x86_64-linux-gnu/libz.so.1.2.7) by 0x1269883: UpdateData::Compress(void*, unsigned int*, void*, int) (UpdateData.cpp:85) by 0x1269BB6: UpdateData::BuildPacket(WorldPacket*) (UpdateData.cpp:133) by 0x130E9B3: Trinity::VisibleNotifier::SendToSelf() (GridNotifiers.cpp:68) by 0x117A89D: Player::UpdateVisibilityForPlayer() (Player.cpp:22344) by 0x117B334: Player::SendInitialPacketsAfterAddToMap() (Player.cpp:22567) by 0x15A48BC: WorldSession::HandlePlayerLogin(LoginQueryHolder*) (CharacterHandler.cpp:937) by 0x141D04B: WorldSession::ProcessQueryCallbacks() (WorldSession.cpp:1106) by 0x141994D: WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:391) by 0x14E289C: World::UpdateSessions(unsigned int) (World.cpp:2629) by 0x14E0613: World::Update(unsigned int) (World.cpp:1986) by 0x100B37F: WorldRunnable::run() (WorldRunnable.cpp:60) Uninitialised value was created by a heap allocation at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287) by 0x159E64F: void LoadHelper(std::set, std::allocator > const&, CoordPair<512u>&, GridRefManager&, unsigned int&, Map*) (ObjectGridLoader.cpp:94) by 0x159DECF: ObjectGridLoader::Visit(GridRefManager&) (ObjectGridLoader.cpp:150) by 0x159F092: void VisitorHelper(ObjectGridLoader&, ContainerMapList&) (TypeContainerVisitor.h:64) by 0x159EFF5: void VisitorHelper > >(ObjectGridLoader&, ContainerMapList > > >&) (TypeContainerVisitor.h:70) --- src/server/game/Entities/Object/Object.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index cb731bfe5e8..66b3a737e0c 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -450,7 +450,7 @@ struct MovementInfo float splineElevation; MovementInfo() : - guid(0), flags(0), flags2(0), time(0), pitch(0.0f) + guid(0), flags(0), flags2(0), time(0), pitch(0.0f), fallTime(0), splineElevation(0.0f) { pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f); transport.Reset(); -- cgit v1.2.3 From 2cfcf9d3ef6f06fbdd5d942177b4f57de03f95d4 Mon Sep 17 00:00:00 2001 From: Sebastian Valle Date: Tue, 3 Sep 2013 16:57:59 -0500 Subject: Scripts/HallsOfReflection: Fixed a typo detected by static analysis tool. --- .../Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index 3f81b517721..84da194aa2d 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1016,7 +1016,7 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript else if (_icewall == 3) me->AI()->Talk(SAY_JAINA_ESCAPE_5); } - else if (_instance->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE) + else if (_instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE) { if (_icewall == 1) me->AI()->Talk(SAY_SYLVANAS_ESCAPE_3); -- cgit v1.2.3 From 07d793b94b60941ea08fd6170d8165994452c49c Mon Sep 17 00:00:00 2001 From: Sebastian Valle Date: Tue, 3 Sep 2013 17:31:02 -0500 Subject: Core/Misc: Fixed some more issues found by static code analysis tools. --- src/server/authserver/Realms/RealmList.h | 2 +- src/server/game/Battlefield/Battlefield.cpp | 2 +- src/server/game/Battlefield/BattlefieldMgr.cpp | 7 ++- src/server/game/Battlefield/Zones/BattlefieldWG.h | 6 +- src/server/game/Battlegrounds/BattlegroundMgr.cpp | 69 +++++++++++----------- src/server/game/Calendar/CalendarMgr.h | 6 +- .../game/Entities/Creature/CreatureGroups.cpp | 14 +++-- src/server/game/Entities/Item/Item.cpp | 2 +- src/server/game/Globals/ObjectMgr.cpp | 6 +- src/server/game/Guilds/Guild.cpp | 2 +- src/server/game/Loot/LootMgr.cpp | 2 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 7 ++- src/server/scripts/Commands/cs_account.cpp | 4 +- src/server/scripts/Commands/cs_disable.cpp | 2 +- src/server/scripts/Commands/cs_modify.cpp | 2 +- src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp | 2 - .../BloodFurnace/instance_blood_furnace.cpp | 4 +- 17 files changed, 71 insertions(+), 68 deletions(-) (limited to 'src') diff --git a/src/server/authserver/Realms/RealmList.h b/src/server/authserver/Realms/RealmList.h index 68e6524c334..d59990135f2 100644 --- a/src/server/authserver/Realms/RealmList.h +++ b/src/server/authserver/Realms/RealmList.h @@ -66,7 +66,7 @@ public: void UpdateIfNeed(); - void AddRealm(Realm NewRealm) {m_realms[NewRealm.name] = NewRealm;} + void AddRealm(const Realm& NewRealm) { m_realms[NewRealm.name] = NewRealm; } RealmMap::const_iterator begin() const { return m_realms.begin(); } RealmMap::const_iterator end() const { return m_realms.end(); } diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index 32fd55fb364..97f91e7ba7a 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -806,7 +806,7 @@ bool BfGraveyard::HasNpc(uint64 guid) // ********************** Misc *************************** // ******************************************************* -Creature* Battlefield::SpawnCreature(uint32 entry, Position pos, TeamId team) +Creature* Battlefield::SpawnCreature(uint32 entry, const Position& pos, TeamId team) { return SpawnCreature(entry, pos.m_positionX, pos.m_positionY, pos.m_positionZ, pos.m_orientation, team); } diff --git a/src/server/game/Battlefield/BattlefieldMgr.cpp b/src/server/game/Battlefield/BattlefieldMgr.cpp index 8044cb96984..8bce2342899 100644 --- a/src/server/game/Battlefield/BattlefieldMgr.cpp +++ b/src/server/game/Battlefield/BattlefieldMgr.cpp @@ -74,11 +74,12 @@ void BattlefieldMgr::HandlePlayerEnterZone(Player* player, uint32 zoneid) if (itr == m_BattlefieldMap.end()) return; - if (itr->second->HasPlayer(player) || !itr->second->IsEnabled()) + Battlefield* bf = itr->second; + if (bf->HasPlayer(player) || !bf->IsEnabled()) return; - itr->second->HandlePlayerEnterZone(player, zoneid); - TC_LOG_DEBUG(LOG_FILTER_BATTLEFIELD, "Player %u entered outdoorpvp id %u", player->GetGUIDLow(), itr->second->GetTypeId()); + bf->HandlePlayerEnterZone(player, zoneid); + TC_LOG_DEBUG(LOG_FILTER_BATTLEFIELD, "Player %u entered outdoorpvp id %u", player->GetGUIDLow(), bf->GetTypeId()); } void BattlefieldMgr::HandlePlayerLeaveZone(Player* player, uint32 zoneid) diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index 8bf68cb42fa..e13eddd7672 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -579,8 +579,8 @@ struct WintergraspBuildingSpawnData struct WintergraspRebuildableBuildingData { - uint32 entry; uint64 Guid; + uint32 entry; uint32 WorldState; float x; float y; @@ -1559,7 +1559,7 @@ struct WintergraspWorkshopData } // Spawning associate creature and store them - void AddCreature(WintergraspObjectPositionData obj) + void AddCreature(const WintergraspObjectPositionData& obj) { if (Creature* creature = m_WG->SpawnCreature(obj.entryHorde, obj.x, obj.y, obj.z, obj.o, TEAM_HORDE)) m_CreatureOnPoint[TEAM_HORDE].insert(creature->GetGUID()); @@ -1569,7 +1569,7 @@ struct WintergraspWorkshopData } // Spawning Associate gameobject and store them - void AddGameObject(WintergraspObjectPositionData obj) + void AddGameObject(const WintergraspObjectPositionData& obj) { if (GameObject* gameobject = m_WG->SpawnGameObject(obj.entryHorde, obj.x, obj.y, obj.z, obj.o)) m_GameObjectOnPoint[TEAM_HORDE].insert(gameobject->GetGUID()); diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index efd7e0f3d73..557cb9de09f 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -262,6 +262,7 @@ void BattlegroundMgr::BuildPvpLogDataPacket(WorldPacket* data, Battleground* bg) Battleground::BattlegroundScoreMap::const_iterator itr2 = bg->GetPlayerScoresBegin(); for (Battleground::BattlegroundScoreMap::const_iterator itr = itr2; itr != bg->GetPlayerScoresEnd();) { + BattlegroundScore* score = itr2->second; itr2 = itr++; if (!bg->IsPlayerInBattleground(itr2->first)) { @@ -270,12 +271,12 @@ void BattlegroundMgr::BuildPvpLogDataPacket(WorldPacket* data, Battleground* bg) } *data << uint64(itr2->first); - *data << uint32(itr2->second->KillingBlows); + *data << uint32(score->KillingBlows); if (type == 0) { - *data << uint32(itr2->second->HonorableKills); - *data << uint32(itr2->second->Deaths); - *data << uint32(itr2->second->BonusHonor); + *data << uint32(score->HonorableKills); + *data << uint32(score->Deaths); + *data << uint32(score->BonusHonor); } else { @@ -285,8 +286,8 @@ void BattlegroundMgr::BuildPvpLogDataPacket(WorldPacket* data, Battleground* bg) team = player->GetBGTeam(); *data << uint8(team == ALLIANCE ? 1 : 0); // green or yellow } - *data << uint32(itr2->second->DamageDone); // damage done - *data << uint32(itr2->second->HealingDone); // healing done + *data << uint32(score->DamageDone); // damage done + *data << uint32(score->HealingDone); // healing done switch (bg->GetTypeID(true)) // battleground specific things { case BATTLEGROUND_RB: @@ -294,35 +295,35 @@ void BattlegroundMgr::BuildPvpLogDataPacket(WorldPacket* data, Battleground* bg) { case 489: *data << uint32(0x00000002); // count of next fields - *data << uint32(((BattlegroundWGScore*)itr2->second)->FlagCaptures); // flag captures - *data << uint32(((BattlegroundWGScore*)itr2->second)->FlagReturns); // flag returns + *data << uint32(((BattlegroundWGScore*)score)->FlagCaptures); // flag captures + *data << uint32(((BattlegroundWGScore*)score)->FlagReturns); // flag returns break; case 566: *data << uint32(0x00000001); // count of next fields - *data << uint32(((BattlegroundEYScore*)itr2->second)->FlagCaptures); // flag captures + *data << uint32(((BattlegroundEYScore*)score)->FlagCaptures); // flag captures break; case 529: *data << uint32(0x00000002); // count of next fields - *data << uint32(((BattlegroundABScore*)itr2->second)->BasesAssaulted); // bases asssulted - *data << uint32(((BattlegroundABScore*)itr2->second)->BasesDefended); // bases defended + *data << uint32(((BattlegroundABScore*)score)->BasesAssaulted); // bases asssulted + *data << uint32(((BattlegroundABScore*)score)->BasesDefended); // bases defended break; case 30: *data << uint32(0x00000005); // count of next fields - *data << uint32(((BattlegroundAVScore*)itr2->second)->GraveyardsAssaulted); // GraveyardsAssaulted - *data << uint32(((BattlegroundAVScore*)itr2->second)->GraveyardsDefended); // GraveyardsDefended - *data << uint32(((BattlegroundAVScore*)itr2->second)->TowersAssaulted); // TowersAssaulted - *data << uint32(((BattlegroundAVScore*)itr2->second)->TowersDefended); // TowersDefended - *data << uint32(((BattlegroundAVScore*)itr2->second)->MinesCaptured); // MinesCaptured + *data << uint32(((BattlegroundAVScore*)score)->GraveyardsAssaulted); // GraveyardsAssaulted + *data << uint32(((BattlegroundAVScore*)score)->GraveyardsDefended); // GraveyardsDefended + *data << uint32(((BattlegroundAVScore*)score)->TowersAssaulted); // TowersAssaulted + *data << uint32(((BattlegroundAVScore*)score)->TowersDefended); // TowersDefended + *data << uint32(((BattlegroundAVScore*)score)->MinesCaptured); // MinesCaptured break; case 607: *data << uint32(0x00000002); // count of next fields - *data << uint32(((BattlegroundSAScore*)itr2->second)->demolishers_destroyed); - *data << uint32(((BattlegroundSAScore*)itr2->second)->gates_destroyed); + *data << uint32(((BattlegroundSAScore*)score)->demolishers_destroyed); + *data << uint32(((BattlegroundSAScore*)score)->gates_destroyed); break; case 628: // IC *data << uint32(0x00000002); // count of next fields - *data << uint32(((BattlegroundICScore*)itr2->second)->BasesAssaulted); // bases asssulted - *data << uint32(((BattlegroundICScore*)itr2->second)->BasesDefended); // bases defended + *data << uint32(((BattlegroundICScore*)score)->BasesAssaulted); // bases asssulted + *data << uint32(((BattlegroundICScore*)score)->BasesDefended); // bases defended default: *data << uint32(0); break; @@ -330,35 +331,35 @@ void BattlegroundMgr::BuildPvpLogDataPacket(WorldPacket* data, Battleground* bg) break; case BATTLEGROUND_AV: *data << uint32(0x00000005); // count of next fields - *data << uint32(((BattlegroundAVScore*)itr2->second)->GraveyardsAssaulted); // GraveyardsAssaulted - *data << uint32(((BattlegroundAVScore*)itr2->second)->GraveyardsDefended); // GraveyardsDefended - *data << uint32(((BattlegroundAVScore*)itr2->second)->TowersAssaulted); // TowersAssaulted - *data << uint32(((BattlegroundAVScore*)itr2->second)->TowersDefended); // TowersDefended - *data << uint32(((BattlegroundAVScore*)itr2->second)->MinesCaptured); // MinesCaptured + *data << uint32(((BattlegroundAVScore*)score)->GraveyardsAssaulted); // GraveyardsAssaulted + *data << uint32(((BattlegroundAVScore*)score)->GraveyardsDefended); // GraveyardsDefended + *data << uint32(((BattlegroundAVScore*)score)->TowersAssaulted); // TowersAssaulted + *data << uint32(((BattlegroundAVScore*)score)->TowersDefended); // TowersDefended + *data << uint32(((BattlegroundAVScore*)score)->MinesCaptured); // MinesCaptured break; case BATTLEGROUND_WS: *data << uint32(0x00000002); // count of next fields - *data << uint32(((BattlegroundWGScore*)itr2->second)->FlagCaptures); // flag captures - *data << uint32(((BattlegroundWGScore*)itr2->second)->FlagReturns); // flag returns + *data << uint32(((BattlegroundWGScore*)score)->FlagCaptures); // flag captures + *data << uint32(((BattlegroundWGScore*)score)->FlagReturns); // flag returns break; case BATTLEGROUND_AB: *data << uint32(0x00000002); // count of next fields - *data << uint32(((BattlegroundABScore*)itr2->second)->BasesAssaulted); // bases assaulted - *data << uint32(((BattlegroundABScore*)itr2->second)->BasesDefended); // bases defended + *data << uint32(((BattlegroundABScore*)score)->BasesAssaulted); // bases assaulted + *data << uint32(((BattlegroundABScore*)score)->BasesDefended); // bases defended break; case BATTLEGROUND_EY: *data << uint32(0x00000001); // count of next fields - *data << uint32(((BattlegroundEYScore*)itr2->second)->FlagCaptures); // flag captures + *data << uint32(((BattlegroundEYScore*)score)->FlagCaptures); // flag captures break; case BATTLEGROUND_SA: *data << uint32(0x00000002); // count of next fields - *data << uint32(((BattlegroundSAScore*)itr2->second)->demolishers_destroyed); - *data << uint32(((BattlegroundSAScore*)itr2->second)->gates_destroyed); + *data << uint32(((BattlegroundSAScore*)score)->demolishers_destroyed); + *data << uint32(((BattlegroundSAScore*)score)->gates_destroyed); break; case BATTLEGROUND_IC: *data << uint32(0x00000002); // count of next fields - *data << uint32(((BattlegroundICScore*)itr2->second)->BasesAssaulted); // bases assaulted - *data << uint32(((BattlegroundICScore*)itr2->second)->BasesDefended); // bases defended + *data << uint32(((BattlegroundICScore*)score)->BasesAssaulted); // bases assaulted + *data << uint32(((BattlegroundICScore*)score)->BasesDefended); // bases defended break; case BATTLEGROUND_NA: case BATTLEGROUND_BE: diff --git a/src/server/game/Calendar/CalendarMgr.h b/src/server/game/Calendar/CalendarMgr.h index d1b3d0a9dd6..402a8cb00df 100644 --- a/src/server/game/Calendar/CalendarMgr.h +++ b/src/server/game/Calendar/CalendarMgr.h @@ -165,7 +165,7 @@ struct CalendarInvite void SetStatusTime(time_t statusTime) { _statusTime = statusTime; } time_t GetStatusTime() const { return _statusTime; } - void SetText(std::string text) { _text = text; } + void SetText(const std::string& text) { _text = text; } std::string GetText() const { return _text; } void SetStatus(CalendarInviteStatus status) { _status = status; } @@ -222,10 +222,10 @@ struct CalendarEvent void SetGuildId(uint32 guildId) { _guildId = guildId; } uint32 GetGuildId() const { return _guildId; } - void SetTitle(std::string title) { _title = title; } + void SetTitle(const std::string& title) { _title = title; } std::string GetTitle() const { return _title; } - void SetDescription(std::string description) { _description = description; } + void SetDescription(const std::string& description) { _description = description; } std::string GetDescription() const { return _description; } void SetType(CalendarEventType type) { _type = type; } diff --git a/src/server/game/Entities/Creature/CreatureGroups.cpp b/src/server/game/Entities/Creature/CreatureGroups.cpp index f8966ba1923..2a3829b7aeb 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.cpp +++ b/src/server/game/Entities/Creature/CreatureGroups.cpp @@ -176,18 +176,20 @@ void CreatureGroup::MemberAttackStart(Creature* member, Unit* target) if (m_leader) // avoid crash if leader was killed and reset. TC_LOG_DEBUG(LOG_FILTER_UNITS, "GROUP ATTACK: group instance id %u calls member instid %u", m_leader->GetInstanceId(), member->GetInstanceId()); - //Skip one check - if (itr->first == member) + Creature* other = itr->first; + + // Skip self + if (other == member) continue; - if (!itr->first->IsAlive()) + if (!other->IsAlive()) continue; - if (itr->first->GetVictim()) + if (other->GetVictim()) continue; - if (itr->first->IsValidAttackTarget(target) && itr->first->AI()) - itr->first->AI()->AttackStart(target); + if (other->IsValidAttackTarget(target)) + other->AI()->AttackStart(target); } } diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index ed4341dea8a..a0b6fdafb06 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1259,7 +1259,7 @@ void Item::ItemContainerSaveLootToDB() trans->Append(stmt_items); // Now insert the items - for (LootItemList::const_iterator _li = loot.items.begin(); _li != loot.items.end(); _li++) + for (LootItemList::const_iterator _li = loot.items.begin(); _li != loot.items.end(); ++_li) { // When an item is looted, it doesn't get removed from the items collection // but we don't want to resave it. diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index f5d8cca70e3..7f1d231ebd9 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1732,7 +1732,7 @@ uint32 ObjectMgr::AddGOData(uint32 entry, uint32 mapId, float x, float y, float return guid; } -bool ObjectMgr::MoveCreData(uint32 guid, uint32 mapId, Position pos) +bool ObjectMgr::MoveCreData(uint32 guid, uint32 mapId, const Position& pos) { CreatureData& data = NewOrExistCreatureData(guid); if (!data.id) @@ -7323,7 +7323,7 @@ static LanguageType GetRealmLanguageType(bool create) } } -bool isValidString(std::wstring wstr, uint32 strictMask, bool numericOrSpace, bool create = false) +bool isValidString(const std::wstring& wstr, uint32 strictMask, bool numericOrSpace, bool create = false) { if (strictMask == 0) // any language, ignore realm { @@ -7627,7 +7627,7 @@ void ObjectMgr::LoadFishingBaseSkillLevel() TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Loaded %u areas for fishing base skill level in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); } -bool ObjectMgr::CheckDeclinedNames(std::wstring w_ownname, DeclinedName const& names) +bool ObjectMgr::CheckDeclinedNames(const std::wstring& w_ownname, DeclinedName const& names) { // get main part of the name std::wstring mainpart = GetMainPartOfName(w_ownname, 0); diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 3c6f002a7fc..ab0f1e572f1 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1461,7 +1461,7 @@ void Guild::HandleSetMemberNote(WorldSession* session, std::string const& name, } } -void Guild::HandleSetRankInfo(WorldSession* session, uint8 rankId, std::string const& name, uint32 rights, uint32 moneyPerDay, GuildBankRightsAndSlotsVec rightsAndSlots) +void Guild::HandleSetRankInfo(WorldSession* session, uint8 rankId, std::string const& name, uint32 rights, uint32 moneyPerDay, const GuildBankRightsAndSlotsVec& rightsAndSlots) { // Only leader can modify ranks if (!_IsLeader(session->GetPlayer())) diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index 33c21163a4a..cb2e2a8682b 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -1248,7 +1248,7 @@ void LootTemplate::AddEntry(LootStoreItem* item) Entries.push_back(item); } -void LootTemplate::CopyConditions(ConditionList conditions) +void LootTemplate::CopyConditions(const ConditionList& conditions) { for (LootStoreItemList::iterator i = Entries.begin(); i != Entries.end(); ++i) (*i)->conditions.clear(); diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 08e66124e4a..3d55d9de16f 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -2243,14 +2243,15 @@ void AuraEffect::HandleAuraModDisarm(AuraApplication const* aurApp, uint8 mode, // Handle damage modification, shapeshifted druids are not affected if (target->GetTypeId() == TYPEID_PLAYER && !target->IsInFeralForm()) { - if (Item* pItem = target->ToPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) + Player* player = target->ToPlayer(); + if (Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) { uint8 attacktype = Player::GetAttackBySlot(slot); if (attacktype < MAX_ATTACK) { - target->ToPlayer()->_ApplyWeaponDamage(slot, pItem->GetTemplate(), NULL, !apply); - target->ToPlayer()->_ApplyWeaponDependentAuraMods(pItem, WeaponAttackType(attacktype), !apply); + player->_ApplyWeaponDamage(slot, item->GetTemplate(), NULL, !apply); + player->_ApplyWeaponDependentAuraMods(item, WeaponAttackType(attacktype), !apply); } } } diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp index 40bfd46e19f..ada26e69c14 100644 --- a/src/server/scripts/Commands/cs_account.cpp +++ b/src/server/scripts/Commands/cs_account.cpp @@ -459,7 +459,7 @@ public: return false; } - if ((pwConfig == PW_EMAIL || pwConfig == PW_RBAC && handler->HasPermission(RBAC_PERM_EMAIL_CONFIRM_FOR_PASS_CHANGE)) && !emailConfirmation) + if ((pwConfig == PW_EMAIL || (pwConfig == PW_RBAC && handler->HasPermission(RBAC_PERM_EMAIL_CONFIRM_FOR_PASS_CHANGE))) && !emailConfirmation) { handler->SendSysMessage(LANG_CMD_SYNTAX); handler->SetSentErrorMessage(true); @@ -479,7 +479,7 @@ public: return false; } - if ((pwConfig == PW_EMAIL || pwConfig == PW_RBAC && handler->HasPermission(RBAC_PERM_EMAIL_CONFIRM_FOR_PASS_CHANGE)) // Either PW_EMAIL or PW_RBAC with the Permission + if ((pwConfig == PW_EMAIL || (pwConfig == PW_RBAC && handler->HasPermission(RBAC_PERM_EMAIL_CONFIRM_FOR_PASS_CHANGE))) // Either PW_EMAIL or PW_RBAC with the Permission && !AccountMgr::CheckEmail(handler->GetSession()->GetAccountId(), std::string(emailConfirmation))) { handler->SendSysMessage(LANG_COMMAND_WRONGEMAIL); diff --git a/src/server/scripts/Commands/cs_disable.cpp b/src/server/scripts/Commands/cs_disable.cpp index 23e7fa8eb98..1b9955ddaf2 100644 --- a/src/server/scripts/Commands/cs_disable.cpp +++ b/src/server/scripts/Commands/cs_disable.cpp @@ -357,7 +357,7 @@ public: if (!*args) return false; - return HandleAddDisables(handler, args, DISABLE_TYPE_MAP); + return HandleRemoveDisables(handler, args, DISABLE_TYPE_MAP); } static bool HandleRemoveDisableBattlegroundCommand(ChatHandler* handler, char const* args) diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index bdca4dac1ba..c3d461f6170 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -1170,7 +1170,7 @@ public: int32 amount = 0; char *rankTxt = strtok(NULL, " "); - if (!factionTxt || !rankTxt) + if (!factionId || !rankTxt) return false; amount = atoi(rankTxt); diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp index 32a819e2e0d..c77d05e1150 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp @@ -215,8 +215,6 @@ bool OutdoorPvPNA::SetupOutdoorPvP() // halaa m_obj = new OPvPCapturePointNA(this); - if (!m_obj) - return false; AddCapturePoint(m_obj); return true; diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp index 2193d3841a6..54a1ccece51 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp @@ -304,7 +304,7 @@ class instance_blood_furnace : public InstanceMapScript HandleGameObject(PrisonCell8GUID, false); } - void ResetPrisoners(std::set prisoners) + void ResetPrisoners(const std::set& prisoners) { for (std::set::iterator i = prisoners.begin(); i != prisoners.end(); ++i) if (Creature* prisoner = instance->GetCreature(*i)) @@ -398,7 +398,7 @@ class instance_blood_furnace : public InstanceMapScript } } - void ActivatePrisoners(std::set prisoners) + void ActivatePrisoners(const std::set& prisoners) { for (std::set::iterator i = prisoners.begin(); i != prisoners.end(); ++i) if (Creature* prisoner = instance->GetCreature(*i)) -- cgit v1.2.3 From 88df2ca6d4dc4e4dcc101ebf78e303b7860e59f2 Mon Sep 17 00:00:00 2001 From: Sebastian Valle Date: Tue, 3 Sep 2013 17:43:11 -0500 Subject: Core/Build: Updated the header files to fix the build. --- src/server/game/Battlefield/Battlefield.h | 2 +- src/server/game/Globals/ObjectMgr.h | 2 +- src/server/game/Guilds/Guild.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Battlefield/Battlefield.h b/src/server/game/Battlefield/Battlefield.h index 534bfd620f0..788bbf9cb2e 100644 --- a/src/server/game/Battlefield/Battlefield.h +++ b/src/server/game/Battlefield/Battlefield.h @@ -286,7 +286,7 @@ class Battlefield : public ZoneScript // Misc methods Creature* SpawnCreature(uint32 entry, float x, float y, float z, float o, TeamId team); - Creature* SpawnCreature(uint32 entry, Position pos, TeamId team); + Creature* SpawnCreature(uint32 entry, const Position& pos, TeamId team); GameObject* SpawnGameObject(uint32 entry, float x, float y, float z, float o); Creature* GetCreature(uint64 GUID); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 3fb9369b07d..aa15fd04b44 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1136,7 +1136,7 @@ class ObjectMgr void RemoveGameobjectFromGrid(uint32 guid, GameObjectData const* data); uint32 AddGOData(uint32 entry, uint32 map, float x, float y, float z, float o, uint32 spawntimedelay = 0, float rotation0 = 0, float rotation1 = 0, float rotation2 = 0, float rotation3 = 0); uint32 AddCreData(uint32 entry, uint32 team, uint32 map, float x, float y, float z, float o, uint32 spawntimedelay = 0); - bool MoveCreData(uint32 guid, uint32 map, Position pos); + bool MoveCreData(uint32 guid, uint32 map, const Position& pos); // reserved names void LoadReservedPlayersNames(); diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index 017221b13bd..fab39f48fca 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -668,7 +668,7 @@ public: void HandleSetLeader(WorldSession* session, std::string const& name); void HandleSetBankTabInfo(WorldSession* session, uint8 tabId, std::string const& name, std::string const& icon); void HandleSetMemberNote(WorldSession* session, std::string const& name, std::string const& note, bool officer); - void HandleSetRankInfo(WorldSession* session, uint8 rankId, std::string const& name, uint32 rights, uint32 moneyPerDay, GuildBankRightsAndSlotsVec rightsAndSlots); + void HandleSetRankInfo(WorldSession* session, uint8 rankId, std::string const& name, uint32 rights, uint32 moneyPerDay, const GuildBankRightsAndSlotsVec& rightsAndSlots); void HandleBuyBankTab(WorldSession* session, uint8 tabId); void HandleInviteMember(WorldSession* session, std::string const& name); void HandleAcceptMember(WorldSession* session); -- cgit v1.2.3 From a37f18a67a6265282470191b92fc71d173dcedff Mon Sep 17 00:00:00 2001 From: Sebastian Valle Date: Tue, 3 Sep 2013 21:55:35 -0500 Subject: Core/Build: Fixed build --- src/server/game/Globals/ObjectMgr.h | 2 +- src/server/game/Loot/LootMgr.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index aa15fd04b44..e44333c4a7a 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1147,7 +1147,7 @@ class ObjectMgr static PetNameInvalidReason CheckPetName(std::string const& name); static bool IsValidCharterName(std::string const& name); - static bool CheckDeclinedNames(std::wstring w_ownname, DeclinedName const& names); + static bool CheckDeclinedNames(const std::wstring& w_ownname, DeclinedName const& names); GameTele const* GetGameTele(uint32 id) const { diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h index d338f6f503b..c2f74aab701 100644 --- a/src/server/game/Loot/LootMgr.h +++ b/src/server/game/Loot/LootMgr.h @@ -228,7 +228,7 @@ class LootTemplate void AddEntry(LootStoreItem* item); // Rolls for every item in the template and adds the rolled items the the loot void Process(Loot& loot, bool rate, uint16 lootMode, uint8 groupId = 0) const; - void CopyConditions(ConditionList conditions); + void CopyConditions(const ConditionList& conditions); void CopyConditions(LootItem* li) const; // True if template includes at least 1 quest drop entry -- cgit v1.2.3 From 5eff0b62aea32174eb32ffb5fb71534a6bf43c6f Mon Sep 17 00:00:00 2001 From: jackpoz Date: Wed, 4 Sep 2013 21:55:10 +0200 Subject: Core/Command Line: Fix memory leak Fix memory leak in command line handler on platforms other than Windows. The result of readline() is supposed to be freed with free() as described at http://cnswww.cns.cwru.edu/php/chet/readline/readline.html#SEC24 . Valgrind log: 11 bytes in 2 blocks are definitely lost in loss record 6 of 61 at 0x4C28BED: malloc (vg_replace_malloc.c:263) by 0x4E5F6E8: xmalloc (in /lib/x86_64-linux-gnu/libreadline.so.6.2) by 0x4E4571A: readline_internal_teardown (in /lib/x86_64-linux-gnu/libreadline.so.6.2) by 0x4E46541: readline (in /lib/x86_64-linux-gnu/libreadline.so.6.2) by 0x1005284: CliRunnable::run() (CliRunnable.cpp:161) by 0x163A3DA: ACE_Based::Thread::ThreadTask(void*) (Threading.cpp:186) by 0x518C555: ACE_OS_Thread_Adapter::invoke() (OS_Thread_Adapter.cpp:103) by 0x61D7B4F: start_thread (pthread_create.c:304) by 0x6C66A7C: clone (clone.S:112) --- src/server/worldserver/CommandLine/CliRunnable.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/server/worldserver/CommandLine/CliRunnable.cpp b/src/server/worldserver/CommandLine/CliRunnable.cpp index e136269e2a0..1ebb58eef1a 100644 --- a/src/server/worldserver/CommandLine/CliRunnable.cpp +++ b/src/server/worldserver/CommandLine/CliRunnable.cpp @@ -175,6 +175,8 @@ void CliRunnable::run() { #if PLATFORM == PLATFORM_WINDOWS printf("TC>"); +#else + free(command_str); #endif continue; } @@ -184,6 +186,8 @@ void CliRunnable::run() { #if PLATFORM == PLATFORM_WINDOWS printf("TC>"); +#else + free(command_str); #endif continue; } @@ -192,6 +196,7 @@ void CliRunnable::run() sWorld->QueueCliCommand(new CliCommandHolder(NULL, command.c_str(), &utf8print, &commandFinished)); #if PLATFORM != PLATFORM_WINDOWS add_history(command.c_str()); + free(command_str); #endif } else if (feof(stdin)) -- cgit v1.2.3 From 7ef1f0738be5a063602ec75162626da34e4ecbcf Mon Sep 17 00:00:00 2001 From: joschiwald Date: Thu, 5 Sep 2013 00:59:22 +0200 Subject: Core/Battlegrounds/IoC: fix fortress teleport pads (and replace a hack with an other hack) Closes #5846 Closes #7993 Ref #8984 --- .../world/2013_09_04_03_world_isle_of_conquest.sql | 26 ++++++++++++++++++++++ src/server/game/Spells/SpellEffects.cpp | 23 ------------------- src/server/game/Spells/SpellMgr.cpp | 8 +++++++ src/server/scripts/Spells/spell_quest.cpp | 4 +--- 4 files changed, 35 insertions(+), 26 deletions(-) create mode 100644 sql/updates/world/2013_09_04_03_world_isle_of_conquest.sql (limited to 'src') diff --git a/sql/updates/world/2013_09_04_03_world_isle_of_conquest.sql b/sql/updates/world/2013_09_04_03_world_isle_of_conquest.sql new file mode 100644 index 00000000000..471ee3adefb --- /dev/null +++ b/sql/updates/world/2013_09_04_03_world_isle_of_conquest.sql @@ -0,0 +1,26 @@ +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (66548,66549,66550,66551); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (66550,66551); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(13,1,66550,0,0,31,0,3,22515,0,0,0,0,'','Isle of Conquest - Teleport Fortress Out'), +(13,1,66550,0,0,35,0,1,10,1,0,0,0,'','Isle of Conquest - Teleport Fortress Out'), +(13,1,66551,0,0,31,0,3,22515,0,0,0,0,'','Isle of Conquest - Teleport Fortress In'), +(13,1,66551,0,0,35,0,1,10,1,0,0,0,'','Isle of Conquest - Teleport Fortress In'); + +SET @CGUID := 90179; +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+13; +INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES +(@CGUID+0, 22515, 628, 3, 1, 392.4965, -859.4583, 48.99871, 3.036873, 7200, 0, 0), -- A IN +(@CGUID+1, 22515, 628, 3, 1, 313.2344, -918.0452, 48.85597, 4.869469, 7200, 0, 0), -- A OUT +(@CGUID+2, 22515, 628, 3, 1, 279.8698, -832.8073, 51.55094, 0, 7200, 0, 0), -- A CENTER +(@CGUID+3, 22515, 628, 3, 1, 323.4965, -883.8021, 48.99959, 1.466077, 7200, 0, 0), -- A IN +(@CGUID+4, 22515, 628, 3, 1, 430.6007, -857.0052, 48.31177, 0.1396263, 7200, 0, 0), -- A OUT +(@CGUID+5, 22515, 628, 3, 1, 325.9167, -781.8993, 49.00521, 4.590216, 7200, 0, 0), -- A IN +(@CGUID+6, 22515, 628, 3, 1, 326.2135, -744.0243, 49.43576, 1.308997, 7200, 0, 0), -- A OUT +(@CGUID+7, 22515, 628, 3, 1, 1139.498, -779.4739, 48.73496, 3.001966, 7200, 0, 0), -- H OUT +(@CGUID+8, 22515, 628, 3, 1, 1162.913, -745.908, 48.71506, 0.1396263, 7200, 0, 0), -- H IN +(@CGUID+9, 22515, 628, 3, 1, 1234.304, -688.2986, 49.22296, 4.677482, 7200, 0, 0), -- H IN +(@CGUID+10, 22515, 628, 3, 1, 1232.524, -666.3246, 48.13402, 2.303835, 7200, 0, 0), -- H OUT +(@CGUID+11, 22515, 628, 3, 1, 1233.106, -838.316, 48.99958, 1.466077, 7200, 0, 0), -- H IN +(@CGUID+12, 22515, 628, 3, 1, 1232.387, -861.0243, 48.99959, 3.560472, 7200, 0, 0), -- H OUT +(@CGUID+13, 22515, 628, 3, 1, 1296.526, -766.1823, 50.70293, 3.089233, 7200, 0, 0); -- H CENTER diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 91a5c35955a..45a07fee945 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1133,29 +1133,6 @@ void Spell::EffectTeleportUnits(SpellEffIndex /*effIndex*/) if (!unitTarget || unitTarget->IsInFlight()) return; - // Pre effects - switch (m_spellInfo->Id) - { - case 66550: // teleports outside (Isle of Conquest) - if (Player* target = unitTarget->ToPlayer()) - { - if (target->GetTeamId() == TEAM_ALLIANCE) - m_targets.SetDst(442.24f, -835.25f, 44.30f, 0.06f, 628); - else - m_targets.SetDst(1120.43f, -762.11f, 47.92f, 2.94f, 628); - } - break; - case 66551: // teleports inside (Isle of Conquest) - if (Player* target = unitTarget->ToPlayer()) - { - if (target->GetTeamId() == TEAM_ALLIANCE) - m_targets.SetDst(389.57f, -832.38f, 48.65f, 3.00f, 628); - else - m_targets.SetDst(1174.85f, -763.24f, 48.72f, 6.26f, 628); - } - break; - } - // If not exist data for dest location - return if (!m_targets.HasDst()) { diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 5d471492553..bc5f8edc9ac 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2975,6 +2975,7 @@ void SpellMgr::LoadSpellInfoCustomAttributes() spellInfo->AttributesCu |= SPELL_ATTR0_CU_NEGATIVE_EFF0; break; case 38729: // Rod of Purification + case 51858: // Siphon of Acherus spellInfo->AttributesCu |= SPELL_ATTR0_CU_TRIGGERED_BY_CASTER; break; default: @@ -3750,6 +3751,13 @@ void SpellMgr::LoadSpellInfoCorrections() // Crashes client on pressing ESC spellInfo->AttributesEx4 &= ~SPELL_ATTR4_TRIGGERED; break; + // ISLE OF CONQUEST SPELLS + // + case 66551: // Teleport + spellInfo->RangeEntry = sSpellRangeStore.LookupEntry(13); // 50000yd + break; + // ENDOF ISLE OF CONQUEST SPELLS + // default: break; } diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 8804410d814..919046d3c38 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -2072,8 +2072,6 @@ class spell_q12641_death_comes_from_on_high : public SpellScriptLoader { uint32 spellId = 0; - TC_LOG_DEBUG(LOG_FILTER_SPELLS_AURAS, "spell_q12641_death_comes_from_on_high:: Caster: %s (GUID: %u) On Hit Target: Creature: %s (Entry: %u GUID: %u)", - GetOriginalCaster()->GetName().c_str(), GetOriginalCaster()->GetGUIDLow(), GetHitCreature()->GetName().c_str(), GetHitCreature()->GetEntry(), GetHitCreature()->GetGUIDLow()); switch (GetHitCreature()->GetEntry()) { case NPC_NEW_AVALON_FORGE: @@ -2092,7 +2090,7 @@ class spell_q12641_death_comes_from_on_high : public SpellScriptLoader return; } - GetOriginalCaster()->CastSpell((Unit*)NULL, spellId, true); + GetCaster()->CastSpell((Unit*)NULL, spellId, true); } void Register() OVERRIDE -- cgit v1.2.3 From 458f5b9502da9f861ba729142dd63c3a98191ece Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Thu, 5 Sep 2013 16:16:23 +0200 Subject: Core/SAI: Added SMART_ACTION_SUMMON_CREA / SMART_ACTION_SUMMON_GO log for has already summon spell --- src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src') diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 01f9080fba1..c93ffe90add 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -771,6 +771,26 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) case SMART_ACTION_SUMMON_CREATURE: if (!IsCreatureValid(e, e.action.summonCreature.creature)) return false; + + for (uint32 i = 0; i < sSpellMgr->GetSpellInfoStoreSize(); ++i) + { + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(i); + if (!spellInfo) + continue; + + for (uint32 j = 0; j < MAX_SPELL_EFFECTS; ++j) + { + if (spellInfo->Effects[j].Effect == SPELL_EFFECT_SUMMON) + { + uint32 creatureSummonEntry = spellInfo->Effects[j].MiscValue; + + if (e.action.killedMonster.creature == creatureSummonEntry) + TC_LOG_ERROR(LOG_FILTER_SQL, "SmartAIMgr: Entry %d SourceType %u Event %u Action %u creature summon: %u has already summon spell (SpellId: %u effect: %u)", + e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.killedMonster.creature, spellInfo->Id, j); + } + } + } + if (e.action.summonCreature.type < TEMPSUMMON_TIMED_OR_DEAD_DESPAWN || e.action.summonCreature.type > TEMPSUMMON_MANUAL_DESPAWN) { TC_LOG_ERROR(LOG_FILTER_SQL, "SmartAIMgr: Entry %d SourceType %u Event %u Action %u uses incorrect TempSummonType %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.summonCreature.type); @@ -828,6 +848,25 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) case SMART_ACTION_SUMMON_GO: if (!IsGameObjectValid(e, e.action.summonGO.entry)) return false; + + for (uint32 i = 0; i < sSpellMgr->GetSpellInfoStoreSize(); ++i) + { + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(i); + if (!spellInfo) + continue; + + for (uint32 j = 0; j < MAX_SPELL_EFFECTS; ++j) + { + if (spellInfo->Effects[j].Effect == SPELL_EFFECT_SUMMON_OBJECT_WILD) + { + uint32 goSummonEntry = spellInfo->Effects[j].MiscValue; + + if (e.action.summonGO.entry == goSummonEntry) + TC_LOG_ERROR(LOG_FILTER_SQL, "SmartAIMgr: Entry %d SourceType %u Event %u Action %u gameobject summon: %u has already summon spell (SpellId: %u effect: %u)", + e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.summonGO.entry, spellInfo->Id, j); + } + } + } break; case SMART_ACTION_ADD_ITEM: case SMART_ACTION_REMOVE_ITEM: -- cgit v1.2.3