Index: src/game/MiscHandler.cpp =================================================================== --- src/game/MiscHandler.cpp (Revision 5459) +++ src/game/MiscHandler.cpp (Arbeitskopie) @@ -582,24 +582,27 @@ if (friendGuid && friendResult==FRIEND_NOT_FOUND) { - if( pFriend && pFriend->IsInWorld() && pFriend->IsVisibleGloballyFor(GetPlayer())) + if(!(pFriend->GetSession()->GetSecurity()>=2 && GetSecurity()<2)) { - friendResult = FRIEND_ADDED_ONLINE; - friendArea = pFriend->GetZoneId(); - friendLevel = pFriend->getLevel(); - friendClass = pFriend->getClass(); - } - else - friendResult = FRIEND_ADDED_OFFLINE; + if( pFriend && pFriend->IsInWorld() && pFriend->IsVisibleGloballyFor(GetPlayer())) + { + friendResult = FRIEND_ADDED_ONLINE; + friendArea = pFriend->GetZoneId(); + friendLevel = pFriend->getLevel(); + friendClass = pFriend->getClass(); + } + else + friendResult = FRIEND_ADDED_OFFLINE; - if(!GetPlayer()->AddToFriendList(friendGuid, friendName)) - { - friendResult = FRIEND_LIST_FULL; - sLog.outDebug( "WORLD: %s's friend list is full.", GetPlayer()->GetName()); + if(!GetPlayer()->AddToFriendList(friendGuid, friendName)) + { + friendResult = FRIEND_LIST_FULL; + sLog.outDebug( "WORLD: %s's friend list is full.", GetPlayer()->GetName()); + } + + sLog.outDebug( "WORLD: %s Guid found '%u' area:%u Level:%u Class:%u.", + friendName.c_str(), GUID_LOPART(friendGuid), friendArea, friendLevel, friendClass); } - - sLog.outDebug( "WORLD: %s Guid found '%u' area:%u Level:%u Class:%u.", - friendName.c_str(), GUID_LOPART(friendGuid), friendArea, friendLevel, friendClass); } else if(friendResult==FRIEND_ALREADY) { @@ -653,6 +656,8 @@ unsigned char ignoreResult = FRIEND_IGNORE_NOT_FOUND; uint64 IgnoreGuid = 0; + Player *pIgnorand = NULL; + recv_data >> IgnoreName; if(IgnoreName.empty()) @@ -665,6 +670,7 @@ GetPlayer()->GetName(), IgnoreName.c_str() ); IgnoreGuid = objmgr.GetPlayerGUIDByName(IgnoreName); + pIgnorand = ObjectAccessor::FindPlayer(IgnoreGuid); if(IgnoreGuid) { @@ -681,9 +687,12 @@ if (IgnoreGuid && ignoreResult == FRIEND_IGNORE_NOT_FOUND) { - ignoreResult = FRIEND_IGNORE_ADDED; - - GetPlayer()->AddToIgnoreList(IgnoreGuid, IgnoreName); + if(!(pIgnorand->GetSession()->GetSecurity()>=2 && GetSecurity()<2)) + { + ignoreResult = FRIEND_IGNORE_ADDED; + + GetPlayer()->AddToIgnoreList(IgnoreGuid, IgnoreName); + } } else if(ignoreResult==FRIEND_IGNORE_ALREADY) {