Ejemplo n.º 1
0
    void Horseman()
    {
        if (HorsemanDeadCount = 0)
            DeadTimer = 15000;
            HorsemanDeadCount ++;

        if (BlaumeuxDead && RivendareDead && ZeliekDead && KorthazzDead)
        {
            SetData(TYPE_FOUR_HORSEMEN, DONE);
    
            AchievementEntry const *AchievHorsemen = GetAchievementStore()->LookupEntry(instance->IsRegularDifficulty() ? ACHIEVEMENT_HORSEMEN : H_ACHIEVEMENT_HORSEMEN);
            if(AchievHorsemen && this)
            {
                Map::PlayerList const &lPlayers = instance->GetPlayers();
                if (!lPlayers.isEmpty())
                {
                    for(Map::PlayerList::const_iterator itr = lPlayers.begin(); itr != lPlayers.end(); ++itr)
                    {
                        if (Player* pPlayer = itr->getSource())
                            pPlayer->GetAchievementMgr().CompletedAchievement(AchievHorsemen);
                    }
                }
            }
        }
    }
Ejemplo n.º 2
0
    void JustDied(Unit* pKiller)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if (m_pInstance)
            m_pInstance->SetData(TYPE_LOKEN, DONE);

        if (!m_bIsRegularMode)
        {
            if (m_bIsAchievInTime)
            {
                AchievementEntry const *AchievTimelyDeath = GetAchievementStore()->LookupEntry(ACHIEV_TIMELY_DEATH);
                if (AchievTimelyDeath)
                {
                    Map* pMap = m_creature->GetMap();
                    if (pMap && pMap->IsDungeon())
                    {
                        Map::PlayerList const &players = pMap->GetPlayers();
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                            itr->getSource()->CompletedAchievement(AchievTimelyDeath);
                    }
                }
            }
        }
    }
Ejemplo n.º 3
0
        void JustDied(Unit* /*killer*/)
        {
            DoScriptText(SAY_DEATH, me);

            if (pInstance)
            {
                /*if (IsHeroic() && !bMoreThanTwoIntenseCold)
                    pInstance->DoCompleteAchievement(ACHIEV_INTENSE_COLD);*/
                if (IsHeroic())
                {
                    AchievementEntry const *achievIntenseCold = GetAchievementStore()->LookupEntry(ACHIEV_INTENSE_COLD);
                    if (achievIntenseCold)
                    {
                        Map::PlayerList const &players = pInstance->instance->GetPlayers();
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        {
                            if (lMoreThanTwoIntenseCold.find(itr->getSource()->GetGUID()) != lMoreThanTwoIntenseCold.end())
                                continue;
                            else
                                itr->getSource()->CompletedAchievement(achievIntenseCold);
                        }
                    }
                }
                pInstance->SetData(DATA_KERISTRASZA_EVENT, DONE);
            }
        }
Ejemplo n.º 4
0
    static bool HandleAchievementAddCommand(ChatHandler* handler, const char *args)
    {
        if (!*args)
            return false;

        uint32 achievementId = atoi((char*)args);
        if (!achievementId)
        {
            if (char* cId = handler->extractKeyFromLink((char*)args, "Hachievement"))
                achievementId = atoi(cId);
            if (!achievementId)
                return false;
        }

        Player* target = handler->getSelectedPlayer();
        if (!target)
        {
            handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
            handler->SetSentErrorMessage(true);
            return false;
        }

        if (AchievementEntry const* pAE = GetAchievementStore()->LookupEntry(achievementId))
            target->CompletedAchievement(pAE);

        return true;
    }
Ejemplo n.º 5
0
        void JustDied(Unit* /*killer*/)
        {
		_JustDied();
            DoScriptText(SAY_DEATH, me);

            if (instance)
            {
                if (IsHeroic())
                {
                    if (lImpaledPlayers.size() == 5)
                        instance->DoCompleteAchievement(ACHIEV_SHARE_THE_LOVE);

                    AchievementEntry const *achievWhatTheEck = GetAchievementStore()->LookupEntry(ACHIEV_WHAT_THE_ECK);
                    if (achievWhatTheEck)
                    {
                        Map::PlayerList const &players = instance->instance->GetPlayers();
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                            if (itr->getSource()->HasAura(SPELL_ECK_RESIDUE))
                                itr->getSource()->CompletedAchievement(achievWhatTheEck);
                    }
                }

                instance->SetData(DATA_GAL_DARAH_EVENT, DONE);
            }
        }
Ejemplo n.º 6
0
    void JustDied(Unit* pKiller)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if (m_pInstance)
            m_pInstance->SetData(TYPE_MOORABI, DONE);

        if (!m_bIsRegularMode)
        {
            if(!m_creature->HasAura(SPELL_TRANSFORMATION, EFFECT_INDEX_0))
            {
                AchievementEntry const *AchievLessRabi = GetAchievementStore()->LookupEntry(ACHIEV_LESS_RABI);
                if (AchievLessRabi)
                {
                    Map* pMap = m_creature->GetMap();
                    if (pMap && pMap->IsDungeon())
                    {
                        Map::PlayerList const &players = pMap->GetPlayers();
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                            itr->getSource()->CompletedAchievement(AchievLessRabi);
                    }
                }
            }
        }
    }
Ejemplo n.º 7
0
    bool OnGossipHello(Player* pPlayer, Creature* pCreature)
    {
        const AchievementEntry * achiCrusader = GetAchievementStore()->LookupEntry(pPlayer->GetTeam() == TEAM_HORDE ? ACHI_CRUSADER_H : ACHI_CRUSADER_A);
        if (pPlayer->HasTitle(TITLE_CRUSADER) || pPlayer->GetAchievementMgr().HasAchieved(achiCrusader))
            pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);

        pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID());
        return true;
    }
Ejemplo n.º 8
0
    bool OnQuestReward(Player* pPlayer, Creature* /*pCreature*/, Quest const* pQuest, uint32 /*opt*/)
    {
        if(pQuest->GetQuestId() == 11023 && IsHolidayActive(HOLIDAY_FEAST_OF_WINTER_VEIL) && pPlayer->HasAura(62061))
        {
            if(AchievementEntry const* pAchievement = GetAchievementStore()->LookupEntry(1282))
                pPlayer->CompletedAchievement(pAchievement);
        }

        return true;
    }
Ejemplo n.º 9
0
// Complete Achievement for all players in instance
void InstanceScript::DoCompleteAchievement(uint32 achievement)
{
    AchievementEntry const* pAE = GetAchievementStore()->LookupEntry(achievement);
    Map::PlayerList const &PlayerList = instance->GetPlayers();

    if(!pAE)
        return;

    if(!PlayerList.isEmpty()) {
        for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
            if(Player* pPlayer = i->getSource())
                pPlayer->CompletedAchievement(pAE);
    }
}
// Complete Achievement for all players in instance
void InstanceScript::DoCompleteAchievement(uint32 achievement)
{
    AchievementEntry const* pAE = GetAchievementStore()->LookupEntry(achievement);
    Map::PlayerList const &PlayerList = instance->GetPlayers();

    if (!pAE)
    {
        sLog->outError("TSCR: DoCompleteAchievement called for not existing achievement %u", achievement);
        return;
    }

    if (!PlayerList.isEmpty())
        for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
            if (Player *pPlayer = i->getSource())
                pPlayer->CompletedAchievement(pAE);
}
Ejemplo n.º 11
0
    void JustDied(Unit* killer)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if (pInstance)
            pInstance->SetData(DATA_MAIDEN_OF_GRIEF_EVENT, DONE);

        AchievementEntry const *AchievGoodGrief = GetAchievementStore()->LookupEntry(ACHIEVEMENT_GOOD_GRIEF);
        Map* pMap = m_creature->GetMap();

        if (IsHeroic() && AchievTimer < 60000 && pMap && pMap->IsDungeon() && AchievGoodGrief)
        {
            Map::PlayerList const &players = pMap->GetPlayers();
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievGoodGrief);
        }
    }
Ejemplo n.º 12
0
    void JustDied(Unit* killer)
    {
        DoScriptText(SAY_DEATH_1, m_creature);

        if (pInstance)
            pInstance->SetData(DATA_HERALD_VOLAZJ, DONE);

        AchievementEntry const *AchievQuickDemise = GetAchievementStore()->LookupEntry(ACHIEVEMENT_QUICK_DEMISE);
        Map* pMap = m_creature->GetMap();

        if (IsHeroic() && uiEncounterTimer < 120000 && pMap && pMap->IsDungeon() && AchievQuickDemise)
        {
            Map::PlayerList const &players = pMap->GetPlayers();
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievQuickDemise);
        }
    }
Ejemplo n.º 13
0
// *****************************************************
// *******************Reward System*********************
// *****************************************************
void BattlefieldWG::DoCompleteOrIncrementAchievement(uint32 achievement, Player *player, uint8 /*incrementNumber */ )
{
    AchievementEntry const* AE = GetAchievementStore()->LookupEntry(achievement);

    switch (achievement)
    {
        case ACHIEVEMENTS_WIN_WG_100:
            {
                // player->GetAchievementMgr().UpdateAchievementCriteria();
            }
        default:
            {
                if (player)
                    player->CompletedAchievement(AE);
            }
            break;
    }
}
Ejemplo n.º 14
0
        void JustDied(Unit* /*killer*/)
        {
            DoScriptText(SAY_DEATH, me);

            AchievementEntry const *achievSnakes = GetAchievementStore()->LookupEntry(ACHIEV_SNAKES);
            if (achievSnakes && IsHeroic())
            {
                for (std::set<uint64>::const_iterator itr = lUnWrappedPlayers.begin(); itr != lUnWrappedPlayers.end(); ++itr)
                {
                    Player* temp = Unit::GetPlayer(*me, *itr);
                    if (temp && temp->isAlive() && (temp->GetDistance2d(me) < 100))
                        temp->CompletedAchievement(achievSnakes);
                }
            } 
     
            if (pInstance)
                pInstance->SetData(DATA_SLAD_RAN_EVENT, DONE);
        }
Ejemplo n.º 15
0
    void JustDied(Unit* Killer)
    {
        _JustDied();
        DoScriptText(SAY_DEATH, me);

        if(EncounterTime <= MAX_ENCOUNTER_TIME)
        {
            AchievementEntry const *AchievMakeQuickWerkOfHim = GetAchievementStore()->LookupEntry(ACHIEVEMENT_MAKE_QUICK_WERK_OF_HIM);
            if(AchievMakeQuickWerkOfHim)
            {
                Map *pMap = m_creature->GetMap();
                if(pMap && pMap->IsDungeon())
                {
                    Map::PlayerList const &players = pMap->GetPlayers();
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievMakeQuickWerkOfHim);
                }
            }
        }
    }
Ejemplo n.º 16
0
    void JustDied(Unit* /*who*/)
    {
        _JustDied();
        me->CastSpell(me, SPELL_DIES, true);

        CheckPlayersFrostResist();
        if (CanTheHundredClub)
        {
            AchievementEntry const *AchievTheHundredClub = GetAchievementStore()->LookupEntry(ACHIEVEMENT_THE_HUNDRED_CLUB);
            if (AchievTheHundredClub)
            {
                if (pMap && pMap->IsDungeon())
                {
                    Map::PlayerList const &players = pMap->GetPlayers();
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievTheHundredClub);
                }
            }
        }
    }
Ejemplo n.º 17
0
        void JustDied(Unit* /*killer*/)
        {
            DoScriptText(SAY_DEATH, me);

            if (pInstance)
            {
                AchievementEntry const *achievIntenseCold = GetAchievementStore()->LookupEntry(ACHIEV_INTENSE_COLD);
                if (achievIntenseCold && IsHeroic())
                {
                    for (std::set<uint64>::const_iterator itr = lIntenseColdPlayers.begin(); itr != lIntenseColdPlayers.end(); ++itr)
                    {
                        Player* temp = Unit::GetPlayer(*me, *itr);
                        if (temp && temp->isAlive() && (temp->GetDistance2d(me) < 50))
                            temp->CompletedAchievement(achievIntenseCold);
                    }
                }

                pInstance->SetData(DATA_KERISTRASZA_EVENT, DONE);
            }
        }
    void JustDied(Unit* killer)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if (pInstance)
        {
            pInstance->SetData(DATA_PRINCE_TALDARAM_EVENT, DONE);

            //The Party's Over achievement:
            AchievementEntry const *AchievThePartyIsOver = GetAchievementStore()->LookupEntry(ACHIEVEMENT_THE_PARTY_IS_OVER);
            Map* pMap = m_creature->GetMap();
            if (pMap && pMap->IsDungeon() && HeroicMode && AchievThePartyIsOver)
            {
                Map::PlayerList const &players = pMap->GetPlayers();
                if (players.getSize() < 5)
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievThePartyIsOver);
            }
        }
    }
Ejemplo n.º 19
0
    void JustDied(Unit* killer)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if (HeroicMode && !DeadChaoticRift)
        {
            AchievementEntry const *AchievChaosTheory = GetAchievementStore()->LookupEntry(ACHIEVEMENT_CHAOS_THEORY);
            if (AchievChaosTheory)
            {
                Map* pMap = m_creature->GetMap();
                if (pMap && pMap->IsDungeon())
                {
                    Map::PlayerList const &players = pMap->GetPlayers();
                    for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievChaosTheory);
                }
            }
        }

        if (pInstance)
            pInstance->SetData(DATA_ANOMALUS_EVENT, DONE);
    }
Ejemplo n.º 20
0
    void JustDied(Unit* pKiller)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if(m_pInstance)
			m_pInstance->SetData(TYPE_HEIGAN, DONE);

        if (!m_bIsPlayerDeath)
        {
            AchievementEntry const *AchievSafetyDance = GetAchievementStore()->LookupEntry(m_bIsRegularMode ? ACHIEV_SAFETY_DANCE : H_ACHIEV_SAFETY_DANCE);
            if (AchievSafetyDance)
            {
                Map* pMap = m_creature->GetMap();
                if (pMap && pMap->IsDungeon())
                {
                    Map::PlayerList const &players = pMap->GetPlayers();
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievSafetyDance);
                }
            }
        }
    }
Ejemplo n.º 21
0
        void JustDied(Unit* /*killer*/)
        {
            DoScriptText(SAY_DEATH, me);

            if (IsHeroic() && !ShatterFrostTomb)
            {
                AchievementEntry const *AchievOnTheRocks = GetAchievementStore()->LookupEntry(ACHIEVEMENT_ON_THE_ROCKS);
                if (AchievOnTheRocks)
                {
                    Map* pMap = me->GetMap();
                    if (pMap && pMap->IsDungeon())
                    {
                        Map::PlayerList const &players = pMap->GetPlayers();
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                            itr->getSource()->CompletedAchievement(AchievOnTheRocks);
                    }
                }
            }

            if (pInstance)
                pInstance->SetData(DATA_PRINCEKELESETH_EVENT, DONE);
        }
Ejemplo n.º 22
0
    void JustDied(Unit* killer)
    {
        DoScriptText(SAY_SLAY_3,m_creature);

        if (HeroicMode && !DeadAhnkaharGuardian)
        {
            AchievementEntry const *AchievRespectYourElders = GetAchievementStore()->LookupEntry(ACHIEVEMENT_RESPECT_YOUR_ELDERS);
            if (AchievRespectYourElders)
            {
                Map* pMap = m_creature->GetMap();
                if (pMap && pMap->IsDungeon())
                {
                    Map::PlayerList const &players = pMap->GetPlayers();
                    for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievRespectYourElders);
                }            
            }        
        }

        if (pInstance)
            pInstance->SetData(DATA_ELDER_NADOX_EVENT, DONE);
    }
    void JustDied(Unit* killer)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if (pInstance)
        {
            pInstance->SetData(DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, DONE);
            //Achievement: Watch him die
            AchievementEntry const *AchievWatchHimDie = GetAchievementStore()->LookupEntry(ACHIEVEMENT_WATCH_HIM_DIE);
            Map* pMap = m_creature->GetMap();
            Creature *pAdd1, *pAdd2, *pAdd3;
            if ((pAdd1 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_WATCHER_GASHRA))) && pAdd1->isAlive() &&
                (pAdd2 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_WATCHER_SILTHIK))) && pAdd2->isAlive() &&
                (pAdd3 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_WATCHER_NARJIL))) && pAdd3->isAlive() &&
                RegularMode && pMap && pMap->IsDungeon() && AchievWatchHimDie)
            {
                Map::PlayerList const &players = pMap->GetPlayers();
                for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                    itr->getSource()->CompletedAchievement(AchievWatchHimDie);
            }
        }
    }
Ejemplo n.º 24
0
     void JustDied(Unit *killer)
     {
         DoScriptText(SAY_DEATH, m_creature);

        if (HeroicMode && Phase == false)
        {
            AchievementEntry const *AchievLessRabi = GetAchievementStore()->LookupEntry(ACHIEVEMENT_LESS_RABI);
            if (AchievLessRabi)
            {
                Map *pMap = m_creature->GetMap();
                if (pMap && pMap->IsDungeon())
                {
                    Map::PlayerList const &players = pMap->GetPlayers();
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievLessRabi);
                }
            }
        }

        if (pInstance)
            pInstance->SetData(DATA_MOORABI_EVENT, DONE);
    }
    void JustDied(Unit* killer)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if (!m_bIsRegularMode && AchievementProgress == 2)
        {
            AchievementEntry const *AchievSplitPersonality = GetAchievementStore()->LookupEntry(ACHIEV_SPLIT_PERSONALITY);
            if (AchievSplitPersonality)
            {
                Map* pMap = m_creature->GetMap();
                if (pMap && pMap->IsDungeon())
                {
                    Map::PlayerList const &players = pMap->GetPlayers();
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievSplitPersonality);
                }
            }
        }

        if (m_pInstance)
            m_pInstance->SetData(DATA_MAGUS_TELESTRA_EVENT, DONE);
    }
Ejemplo n.º 26
0
    void JustDied(Unit* pKiller)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if (m_pInstance)
            m_pInstance->SetData(TYPE_PATCHWERK, DONE);

		if (m_bIsAchievInTime)
		{
			AchievementEntry const *AchievMakeQuick = GetAchievementStore()->LookupEntry(m_bIsRegularMode ? ACHIEV_MAKE_QUICK : H_ACHIEV_MAKE_QUICK);
			if (AchievMakeQuick)
			{
				Map* pMap = m_creature->GetMap();
				if (pMap && pMap->IsDungeon())
				{
					Map::PlayerList const &players = pMap->GetPlayers();
					for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
						itr->getSource()->CompletedAchievement(AchievMakeQuick);
				}
			}
		}
    }
Ejemplo n.º 27
0
    void JustDied(Unit* killer)
    {
        DoScriptText(SAY_DEATH, m_creature);

        if (!RegularMode && !MoreThanTwoIntenseCold)
        {
            AchievementEntry const *AchievIntenseCold = GetAchievementStore()->LookupEntry(ACHIEVEMENT_INTENSE_COLD);
            if (AchievIntenseCold)
            {
                Map* pMap = m_creature->GetMap();
                if (pMap && pMap->IsDungeon())
                {
                    Map::PlayerList const &players = pMap->GetPlayers();
                    for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                        itr->getSource()->CompletedAchievement(AchievIntenseCold);
                }
            }
        }

        if (pInstance)
            pInstance->SetData(DATA_KERISTRASZA_EVENT, DONE);
    }
Ejemplo n.º 28
0
        void JustDied(Unit* /*pKiller*/)
        {
            DoScriptText(SAY_DEATH, me);
            DespawnGolem();

            if (m_pInstance)
                m_pInstance->SetData(TYPE_VOLKHAN, DONE);

            if (IsHeroic() && GolemsShattered < 5)
            {
                AchievementEntry const *AchievShatterResistant = GetAchievementStore()->LookupEntry(ACHIEVEMENT_SHATTER_RESISTANT);
                if (AchievShatterResistant)
                {
                    Map* pMap = me->GetMap();
                    if (pMap && pMap->IsDungeon())
                    {
                        Map::PlayerList const &players = pMap->GetPlayers();
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                            itr->getSource()->CompletedAchievement(AchievShatterResistant);
                    }
                }
            }
        }
Ejemplo n.º 29
0
 void Update(uint32 uiDiff)
 {
     if (DeadTimer > uiDiff && UpdateCheck)
     {
         if (BlaumeuxDead && RivendareDead && ZeliekDead && KorthazzDead)
         {
             AchievementEntry const *AchievHorsemen = GetAchievementStore()->LookupEntry(instance->IsRegularDifficulty() ? ACHIEVEMENT_TOGETHER : H_ACHIEVEMENT_TOGETHER);
             if(AchievHorsemen && this)
             {
                 Map::PlayerList const &lPlayers = instance->GetPlayers();
                 if (!lPlayers.isEmpty())
                 {
                     for(Map::PlayerList::const_iterator itr = lPlayers.begin(); itr != lPlayers.end(); ++itr)
                     {
                         if (Player* pPlayer = itr->getSource())
                             pPlayer->GetAchievementMgr().CompletedAchievement(AchievHorsemen);
                     }
                 }
             }
             UpdateCheck = false;
         }
     }else DeadTimer -= uiDiff;
 }
Ejemplo n.º 30
0
void ArenaTeamMember::ModifyPersonalRating(Player* plr, int32 mod, uint32 slot)
{
    if (int32(PersonalRating) + mod < 0)
        PersonalRating = 0;
    else
        PersonalRating += mod;

    if (plr)
        {
        plr->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING, PersonalRating, slot);
            // Achievements
            switch (slot)
            {
                // 2x2
                case 0:
                    if (PersonalRating > 2200)
                    {
                        AchievementEntry const *youandme4 = GetAchievementStore()->LookupEntry(1159);
							plr->GetAchievementMgr().CompletedAchievement(youandme4);
                    } else
                    if (PersonalRating > 2000)
                    {
                        AchievementEntry const *youandme3 = GetAchievementStore()->LookupEntry(401);
							plr->GetAchievementMgr().CompletedAchievement(youandme3);
                    } else
                    if (PersonalRating > 1750)
                    {
                        AchievementEntry const *youandme2 = GetAchievementStore()->LookupEntry(400);
							plr->GetAchievementMgr().CompletedAchievement(youandme2);
                    } else
                    if (PersonalRating > 1550)
                    {
                        AchievementEntry const *youandme1 = GetAchievementStore()->LookupEntry(399); 
	    						plr->GetAchievementMgr().CompletedAchievement(youandme1);
                    }
                break;
                // 3x3
                case 1:
                    if (PersonalRating > 2200)
                    {
                        AchievementEntry const *trio4 = GetAchievementStore()->LookupEntry(1160);
							plr->GetAchievementMgr().CompletedAchievement(trio4);
                    } else
                    if (PersonalRating > 2000)
                    {
                        AchievementEntry const *trio3 = GetAchievementStore()->LookupEntry(405);
							plr->GetAchievementMgr().CompletedAchievement(trio3);
                    } else
                    if (PersonalRating > 1750)
                    {
                        AchievementEntry const *trio2 = GetAchievementStore()->LookupEntry(403);
							plr->GetAchievementMgr().CompletedAchievement(trio2);
                    } else
                    if (PersonalRating > 1550)
                    {
                        AchievementEntry const *trio1 = GetAchievementStore()->LookupEntry(402);
							plr->GetAchievementMgr().CompletedAchievement(trio1);
                    } 
                break;
                // 5x5
                case 2:
                    if (PersonalRating > 2200)
                    {
                        AchievementEntry const *bigfive4 = GetAchievementStore()->LookupEntry(1161);
							plr->GetAchievementMgr().CompletedAchievement(bigfive4);
                    } else
                    if (PersonalRating > 2000)
                    {
                        AchievementEntry const *bigfive3 = GetAchievementStore()->LookupEntry(404);
							plr->GetAchievementMgr().CompletedAchievement(bigfive3);
                    } else
                    if (PersonalRating > 1750)
                    {
                        AchievementEntry const *bigfive2 = GetAchievementStore()->LookupEntry(407);
							plr->GetAchievementMgr().CompletedAchievement(bigfive2);
                    } else
                    if (PersonalRating > 1550)
                    {
                        AchievementEntry const *bigfive1 = GetAchievementStore()->LookupEntry(406);
							plr->GetAchievementMgr().CompletedAchievement(bigfive1);
                    }
                break;
                default: break;
            }
        } 
}