Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void World::ResetWarModeMinority()
- {
- uint32 l_HordeCount = 0;
- uint32 l_AllianceCount = 0;
- uint32 l_BonusTeam = Team::TEAM_NONE;
- QueryResult l_Result = CharacterDatabase.Query("SELECT COUNT(guid) as count, faction FROM warmode_minority GROUP BY faction");
- if (l_Result)
- {
- do
- {
- Field* l_Fields = l_Result->Fetch();
- if (l_Fields[1].GetUInt16() == Team::ALLIANCE)
- l_AllianceCount = (uint32)l_Fields[0].GetUInt64();
- else if (l_Fields[1].GetUInt16() == Team::HORDE)
- l_HordeCount = (uint32)l_Fields[0].GetUInt64();
- }
- while (l_Result->NextRow());
- }
- CharacterDatabase.Execute("DELETE FROM `warmode_minority`");
- if (l_HordeCount > l_AllianceCount)
- l_BonusTeam = Team::ALLIANCE;
- else if (l_AllianceCount > l_HordeCount)
- l_BonusTeam = Team::HORDE;
- sWorld->setWorldState(WS_WEEKLY_WARMODE_MINORITY_RESET_TIME, getWorldState(WS_WEEKLY_WARMODE_MINORITY_RESET_TIME) + 7);
- sWorld->setWorldState(WS_WARMODE_BONUS_FACTION, uint64(l_BonusTeam));
- m_NextWarModeMinorityReset = time_t(m_NextWarModeMinorityReset + DAY * 7);
- m_WarModeFactionBonus = uint64(l_BonusTeam);
- ACE_Read_Guard<ACE_RW_Thread_Mutex> l_Guard(m_SessionsLock);
- for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
- {
- if (Player* l_Player = itr->second->GetPlayer())
- {
- if (!l_Player->IsWarMode())
- continue;
- l_Player->AddCriticalOperation([l_Player]()->void
- {
- if (Aura* l_Aura = l_Player->GetAura(WarModeSpells::Enlisted))
- l_Aura->RecalculateAmountOfEffects(true);
- if (Aura* l_Aura = l_Player->GetAura(WarModeSpells::EnlistedMod))
- l_Aura->RecalculateAmountOfEffects(true);
- l_Player->SendUpdateWorldState(17042, sWorld->GetWarModeFactionBonus(HORDE));
- l_Player->SendUpdateWorldState(17043, sWorld->GetWarModeFactionBonus(ALLIANCE));
- });
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement