diff options
| author | Warpten <vertozor@gmail.com> | 2012-12-17 00:41:46 +0100 | 
|---|---|---|
| committer | Warpten <vertozor@gmail.com> | 2012-12-17 00:41:46 +0100 | 
| commit | 78017ac222cdedffc8878ba88204cd94cadd864f (patch) | |
| tree | c872826e886f4bff60b95c543f020ee9d733e822 | |
| parent | 9731607c9d30bf5ef4b89fdd7ab54817e8d64b28 (diff) | |
Core/Guilds: Fixed guild news spam related to guild level-up.
| -rw-r--r-- | src/server/game/Guilds/Guild.cpp | 36 | 
1 files changed, 19 insertions, 17 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index c91b5746e84..3057a97eb27 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -3466,28 +3466,30 @@ void Guild::GiveXP(uint32 xp, Player* source)      {          _experience -= sGuildMgr->GetXPForGuildLevel(GetLevel());          ++_level; -    } -    // Find all guild perks to learn -    std::vector<uint32> perksToLearn; -    for (uint32 i = 0; i < sGuildPerkSpellsStore.GetNumRows(); ++i) -        if (GuildPerkSpellsEntry const* entry = sGuildPerkSpellsStore.LookupEntry(i)) -            if (entry->Level > oldLevel && entry->Level <= GetLevel()) -                perksToLearn.push_back(entry->SpellId); +        // Find all guild perks to learn +        std::vector<uint32> perksToLearn; +        for (uint32 i = 0; i < sGuildPerkSpellsStore.GetNumRows(); ++i) +            if (GuildPerkSpellsEntry const* entry = sGuildPerkSpellsStore.LookupEntry(i)) +                if (entry->Level > oldLevel && entry->Level <= GetLevel()) +                    perksToLearn.push_back(entry->SpellId); -    // Notify all online players that guild level changed and learn perks -    for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr) -    { -        if (Player* player = itr->second->FindPlayer()) +        // Notify all online players that guild level changed and learn perks +        for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)          { -            player->SetGuildLevel(GetLevel()); -            for (size_t i = 0; i < perksToLearn.size(); ++i) -                player->learnSpell(perksToLearn[i], true); +            if (Player* player = itr->second->FindPlayer()) +            { +                player->SetGuildLevel(GetLevel()); +                for (size_t i = 0; i < perksToLearn.size(); ++i) +                    player->learnSpell(perksToLearn[i], true); +            }          } -    } -    AddGuildNews(GUILD_NEWS_LEVEL_UP, 0, 0, _level); -    UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL, GetLevel(), 0, 0, NULL, source); +        AddGuildNews(GUILD_NEWS_LEVEL_UP, 0, 0, _level); +        UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL, GetLevel(), 0, 0, NULL, source); + +        ++oldLevel; +    }  }  void Guild::SendGuildXP(WorldSession* session /* = NULL */) const  | 
