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); } } } } }
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); } } } } }
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); } }
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; }
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); } }
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); } } } } }
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; }
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; }
// 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); }
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); } }
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); } }
// ***************************************************** // *******************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; } }
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); }
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); } } } }
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); } } } }
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); } } }
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); }
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); } } } }
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); }
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); } } }
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); }
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); } } } }
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); }
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); } } } }
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; }
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; } } }