diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Battlefield/Zones/BattlefieldWG.cpp | 2 | ||||
| -rwxr-xr-x | src/server/game/Battlegrounds/Battleground.cpp | 26 | ||||
| -rwxr-xr-x | src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp | 4 | ||||
| -rwxr-xr-x | src/server/game/Conditions/ConditionMgr.cpp | 2 | ||||
| -rwxr-xr-x | src/server/game/DungeonFinding/LFGMgr.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 48 | ||||
| -rwxr-xr-x | src/server/game/Entities/Player/Player.h | 9 | ||||
| -rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 2 | ||||
| -rwxr-xr-x | src/server/game/Instances/InstanceScript.cpp | 4 | ||||
| -rwxr-xr-x | src/server/game/Spells/Spell.cpp | 22 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_reset.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 24 |
14 files changed, 93 insertions, 58 deletions
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 9a701b5b044..2270bcf7927 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -459,7 +459,7 @@ void BattlefieldWG::DoCompleteOrIncrementAchievement(uint32 achievement, Player* { case ACHIEVEMENTS_WIN_WG_100: { - // player->GetAchievementMgr().UpdateAchievementCriteria(); + // player->UpdateAchievementCriteria(); } default: { diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index ab69ed40943..978e6eee3d9 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -864,7 +864,7 @@ void Battleground::EndBattleground(uint32 winner) loser_arena_team->MemberLost(player, winner_matchmaker_rating, loser_matchmaker_change); // Arena lost => reset the win_rated_arena having the "no_lose" condition - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA, ACHIEVEMENT_CRITERIA_CONDITION_NO_LOSE); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA, ACHIEVEMENT_CRITERIA_CONDITION_NO_LOSE); } } @@ -1195,17 +1195,17 @@ void Battleground::AddPlayer(Player* player) player->CastSpell(player, SPELL_PREPARATION, true); // reduces all mana cost of spells. } - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_BG, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); - player->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_BG, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); + player->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL, ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP, GetMapId(), true); // setup BG group membership PlayerAddedToBGCheckIfBGIsRunning(player); @@ -1944,7 +1944,7 @@ void Battleground::StartTimedAchievement(AchievementCriteriaTimedTypes type, uin { for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - player->GetAchievementMgr().StartTimedAchievement(type, entry); + player->StartTimedAchievement(type, entry); } void Battleground::SetBracket(PvPDifficultyEntry const* bracketEntry) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp index fd44e425e6e..dd94606b4cd 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp @@ -453,7 +453,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* Source, GameObject* target UpdateFlagState(HORDE, BG_WS_FLAG_STATE_ON_PLAYER); UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, 1); Source->CastSpell(Source, BG_WS_SPELL_SILVERWING_FLAG, true); - Source->GetAchievementMgr().StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_SPELL_TARGET, BG_WS_SPELL_SILVERWING_FLAG_PICKED); + Source->StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_SPELL_TARGET, BG_WS_SPELL_SILVERWING_FLAG_PICKED); if (_flagState[1] == BG_WS_FLAG_STATE_ON_PLAYER) _bothFlagsKept = true; } @@ -472,7 +472,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* Source, GameObject* target UpdateFlagState(ALLIANCE, BG_WS_FLAG_STATE_ON_PLAYER); UpdateWorldState(BG_WS_FLAG_UNK_HORDE, 1); Source->CastSpell(Source, BG_WS_SPELL_WARSONG_FLAG, true); - Source->GetAchievementMgr().StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_SPELL_TARGET, BG_WS_SPELL_WARSONG_FLAG_PICKED); + Source->StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_SPELL_TARGET, BG_WS_SPELL_WARSONG_FLAG_PICKED); if (_flagState[0] == BG_WS_FLAG_STATE_ON_PLAYER) _bothFlagsKept = true; } diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index c2513510fd9..f6a2c56b794 100755 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -83,7 +83,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) case CONDITION_ACHIEVEMENT: { if (Player* player = object->ToPlayer()) - condMeets = player->GetAchievementMgr().HasAchieved(ConditionValue1); + condMeets = player->HasAchieved(ConditionValue1); break; } case CONDITION_TEAM: diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 4bc1ca0a832..618032e5f97 100755 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -440,7 +440,7 @@ void LFGMgr::InitializeLockedDungeons(Player* player) locktype = LFG_LOCKSTATUS_TOO_HIGH_LEVEL; else if (locktype == LFG_LOCKSTATUS_OK && ar) { - if (ar->achievement && !player->GetAchievementMgr().HasAchieved(ar->achievement)) + if (ar->achievement && !player->HasAchieved(ar->achievement)) locktype = LFG_LOCKSTATUS_RAID_LOCKED; // FIXME: Check the correct lock value else if (player->GetTeam() == ALLIANCE && ar->quest_A && !player->GetQuestRewardStatus(ar->quest_A)) locktype = LFG_LOCKSTATUS_QUEST_NOT_COMPLETED; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6ddbe2d037d..977e85bd7eb 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1574,7 +1574,7 @@ void Player::Update(uint32 p_time) } } - GetAchievementMgr().UpdateTimedAchievements(p_time); + m_achievementMgr.UpdateTimedAchievements(p_time); if (HasUnitState(UNIT_STATE_MELEE_ATTACKING) && !HasUnitState(UNIT_STATE_CASTING)) { @@ -1828,9 +1828,9 @@ void Player::setDeathState(DeathState s) UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP, 1); UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DEATH, 1); UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON, 1); - GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH); - GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL, ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH); - GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS, ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH); + ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH); + ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL, ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH); + ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS, ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH); } Unit::setDeathState(s); @@ -14921,7 +14921,7 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) m_QuestStatusSave[quest_id] = true; - GetAchievementMgr().StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_QUEST, quest_id); + StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_QUEST, quest_id); //starting initial quest script if (questGiver && quest->GetQuestStartScript() != 0) @@ -15906,7 +15906,7 @@ void Player::KilledMonsterCredit(uint32 entry, uint64 guid) real_entry = killed->GetEntry(); } - GetAchievementMgr().StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_CREATURE, real_entry); // MUST BE CALLED FIRST + StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_CREATURE, real_entry); // MUST BE CALLED FIRST UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, real_entry, addkillcount, guid ? GetMap()->GetCreature(guid) : NULL); for (uint8 i = 0; i < MAX_QUEST_LOG_SIZE; ++i) @@ -18529,7 +18529,7 @@ bool Player::Satisfy(AccessRequirement const* ar, uint32 target_map, bool report leader = ObjectAccessor::FindPlayer(leaderGuid); if (ar->achievement) - if (!leader || !leader->GetAchievementMgr().HasAchieved(ar->achievement)) + if (!leader || !leader->HasAchieved(ar->achievement)) missingAchievement = ar->achievement; Difficulty target_difficulty = GetDifficulty(mapEntry->IsRaid()); @@ -24470,9 +24470,39 @@ void Player::HandleFall(MovementInfo const& movementInfo) RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_LANDING); // No fly zone - Parachute } +void Player::ResetAchievements() +{ + m_achievementMgr.Reset(); +} + +void Player::SendRespondInspectAchievements(Player* player) const +{ + m_achievementMgr.SendRespondInspectAchievements(player); +} + +bool Player::HasAchieved(uint32 achievementId) const +{ + return m_achievementMgr.HasAchieved(achievementId); +} + +void Player::StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost/* = 0*/) +{ + m_achievementMgr.StartTimedAchievement(type, entry, timeLost); +} + +void Player::RemoveTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry) +{ + m_achievementMgr.RemoveTimedAchievement(type, entry); +} + +void Player::ResetAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /*= 0*/, bool evenIfCriteriaComplete /* = false*/) +{ + m_achievementMgr.ResetAchievementCriteria(type, miscValue1, miscValue2, evenIfCriteriaComplete); +} + void Player::UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /*= 0*/, Unit* unit /*= NULL*/) { - GetAchievementMgr().UpdateAchievementCriteria(type, miscValue1, miscValue2, unit, this); + m_achievementMgr.UpdateAchievementCriteria(type, miscValue1, miscValue2, unit, this); // Update only individual achievement criteria here, otherwise we may get multiple updates // from a single boss kill @@ -24485,7 +24515,7 @@ void Player::UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 mis void Player::CompletedAchievement(AchievementEntry const* entry) { - GetAchievementMgr().CompletedAchievement(entry, this); + m_achievementMgr.CompletedAchievement(entry, this); } bool Player::LearnTalent(uint32 talentId, uint32 talentRank) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index ad17ee7844b..758e44aeefe 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2647,9 +2647,14 @@ class Player : public Unit, public GridObject<Player> void AddRunePower(uint8 index); void InitRunes(); - AchievementMgr<Player>& GetAchievementMgr() { return m_achievementMgr; } - AchievementMgr<Player> const& GetAchievementMgr() const { return m_achievementMgr; } + void SendRespondInspectAchievements(Player* player) const; + bool HasAchieved(uint32 achievementId) const; + void ResetAchievements(); + void CheckAllAchievementCriteria(); + void ResetAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, bool evenIfCriteriaComplete = false); void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = NULL); + void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost = 0); + void RemoveTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry); void CompletedAchievement(AchievementEntry const* entry); bool HasTitle(uint32 bitIndex); diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 56a4ed73513..1108e875be7 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1723,7 +1723,7 @@ void WorldSession::HandleQueryInspectAchievements(WorldPacket& recvData) if (!player) return; - player->GetAchievementMgr().SendAchievementInfo(_player); + player->SendRespondInspectAchievements(_player); } void WorldSession::HandleGuildAchievementProgressQuery(WorldPacket& recvData) diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 8d433ca6157..7ca8aa750eb 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -446,7 +446,7 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recvData) _player->TakeQuestSourceItem(questId, true); // remove quest src item from player _player->RemoveActiveQuest(questId); - _player->GetAchievementMgr().RemoveTimedAchievement(ACHIEVEMENT_TIMED_TYPE_QUEST, questId); + _player->RemoveTimedAchievement(ACHIEVEMENT_TIMED_TYPE_QUEST, questId); sLog->outInfo(LOG_FILTER_NETWORKIO, "Player %u abandoned quest %u", _player->GetGUIDLow(), questId); } diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 6888f77916a..d967ece9cf2 100755 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -339,7 +339,7 @@ void InstanceScript::DoStartTimedAchievement(AchievementCriteriaTimedTypes type, if (!PlayerList.isEmpty()) for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) if (Player* player = i->getSource()) - player->GetAchievementMgr().StartTimedAchievement(type, entry); + player->StartTimedAchievement(type, entry); } // Stop timed achievement for all players in instance @@ -350,7 +350,7 @@ void InstanceScript::DoStopTimedAchievement(AchievementCriteriaTimedTypes type, if (!PlayerList.isEmpty()) for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) if (Player* player = i->getSource()) - player->GetAchievementMgr().RemoveTimedAchievement(type, entry); + player->RemoveTimedAchievement(type, entry); } // Remove Auras due to Spell on all players in instance diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index d03c581013e..3f5811fa86f 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2566,17 +2566,17 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA PrepareScriptHitHandlers(); CallScriptBeforeHitHandlers(); - if (unit->GetTypeId() == TYPEID_PLAYER) + if (Player* player = unit->ToPlayer()) { - unit->ToPlayer()->GetAchievementMgr().StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_SPELL_TARGET, m_spellInfo->Id); - unit->ToPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, m_spellInfo->Id, 0, m_caster); - unit->ToPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2, m_spellInfo->Id); + player->StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_SPELL_TARGET, m_spellInfo->Id); + player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, m_spellInfo->Id, 0, m_caster); + player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2, m_spellInfo->Id); } - if (m_caster->GetTypeId() == TYPEID_PLAYER) + if (Player* player = m_caster->ToPlayer()) { - m_caster->ToPlayer()->GetAchievementMgr().StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_SPELL_CASTER, m_spellInfo->Id); - m_caster->ToPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2, m_spellInfo->Id, 0, unit); + player->StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_SPELL_CASTER, m_spellInfo->Id); + player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2, m_spellInfo->Id, 0, unit); } if (m_caster != unit) @@ -3233,15 +3233,15 @@ void Spell::cast(bool skipCheck) // set to real guid to be sent later to the client m_targets.UpdateTradeSlotItem(); - if (m_caster->GetTypeId() == TYPEID_PLAYER) + if (Player* player = m_caster->ToPlayer()) { if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_ITEM) && m_CastItem) { - m_caster->ToPlayer()->GetAchievementMgr().StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_ITEM, m_CastItem->GetEntry()); - m_caster->ToPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM, m_CastItem->GetEntry()); + player->StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_ITEM, m_CastItem->GetEntry()); + player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM, m_CastItem->GetEntry()); } - m_caster->ToPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL, m_spellInfo->Id); + player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL, m_spellInfo->Id); } if (!(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_AND_REAGENT_COST)) diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index b0bf3e03f58..b147543bb1a 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -60,7 +60,7 @@ public: return false; if (target) - target->GetAchievementMgr().Reset(); + target->ResetAchievements(); else AchievementMgr<Player>::DeleteFromDB(GUID_LOPART(targetGuid)); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index 9a3c8985371..7d67b92d421 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -1328,7 +1328,7 @@ class spell_algalon_supermassive_fail : public SpellScriptLoader if (!GetHitPlayer()) return; - GetHitPlayer()->GetAchievementMgr().ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, ACHIEVEMENT_CRITERIA_CONDITION_NO_SPELL_HIT, GetSpellInfo()->Id, true); + GetHitPlayer()->ResetAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, ACHIEVEMENT_CRITERIA_CONDITION_NO_SPELL_HIT, GetSpellInfo()->Id, true); } void Register() diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 69697c2d083..cad286f0dd3 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -2441,7 +2441,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader case NPC_ARGENT_STEED_ASPIRANT: case NPC_STORMWIND_STEED: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_STORMWIND)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_STORMWIND)) return SPELL_PENNANT_STORMWIND_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_STORMWIND) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_STORMWIND)) return SPELL_PENNANT_STORMWIND_VALIANT; @@ -2450,7 +2450,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader } case NPC_GNOMEREGAN_MECHANOSTRIDER: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_GNOMEREGAN)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_GNOMEREGAN)) return SPELL_PENNANT_GNOMEREGAN_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_GNOMEREGAN) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_GNOMEREGAN)) return SPELL_PENNANT_GNOMEREGAN_VALIANT; @@ -2459,7 +2459,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader } case NPC_DARK_SPEAR_RAPTOR: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_SEN_JIN)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_SEN_JIN)) return SPELL_PENNANT_SEN_JIN_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_SEN_JIN) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_SEN_JIN)) return SPELL_PENNANT_SEN_JIN_VALIANT; @@ -2469,7 +2469,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader case NPC_ARGENT_HAWKSTRIDER_ASPIRANT: case NPC_SILVERMOON_HAWKSTRIDER: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_SILVERMOON)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_SILVERMOON)) return SPELL_PENNANT_SILVERMOON_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_SILVERMOON) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_SILVERMOON)) return SPELL_PENNANT_SILVERMOON_VALIANT; @@ -2478,7 +2478,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader } case NPC_DARNASSIAN_NIGHTSABER: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_DARNASSUS)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_DARNASSUS)) return SPELL_PENNANT_DARNASSUS_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_DARNASSUS) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_DARNASSUS)) return SPELL_PENNANT_DARNASSUS_VALIANT; @@ -2487,7 +2487,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader } case NPC_EXODAR_ELEKK: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_THE_EXODAR)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_THE_EXODAR)) return SPELL_PENNANT_EXODAR_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_THE_EXODAR) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_THE_EXODAR)) return SPELL_PENNANT_EXODAR_VALIANT; @@ -2496,7 +2496,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader } case NPC_IRONFORGE_RAM: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_IRONFORGE)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_IRONFORGE)) return SPELL_PENNANT_IRONFORGE_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_IRONFORGE) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_IRONFORGE)) return SPELL_PENNANT_IRONFORGE_VALIANT; @@ -2505,7 +2505,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader } case NPC_FORSAKEN_WARHORSE: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_UNDERCITY)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_UNDERCITY)) return SPELL_PENNANT_UNDERCITY_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_UNDERCITY) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_UNDERCITY)) return SPELL_PENNANT_UNDERCITY_VALIANT; @@ -2514,7 +2514,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader } case NPC_ORGRIMMAR_WOLF: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_ORGRIMMAR)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_ORGRIMMAR)) return SPELL_PENNANT_ORGRIMMAR_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_ORGRIMMAR) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_ORGRIMMAR)) return SPELL_PENNANT_ORGRIMMAR_VALIANT; @@ -2523,7 +2523,7 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader } case NPC_THUNDER_BLUFF_KODO: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_THUNDER_BLUFF)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_THUNDER_BLUFF)) return SPELL_PENNANT_THUNDER_BLUFF_CHAMPION; else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_THUNDER_BLUFF) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_THUNDER_BLUFF)) return SPELL_PENNANT_THUNDER_BLUFF_VALIANT; @@ -2532,9 +2532,9 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader } case NPC_ARGENT_WARHORSE: { - if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_ALLIANCE) || player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_CHAMPION_HORDE)) + if (player->HasAchieved(ACHIEVEMENT_CHAMPION_ALLIANCE) || player->HasAchieved(ACHIEVEMENT_CHAMPION_HORDE)) return player->getClass() == CLASS_DEATH_KNIGHT ? SPELL_PENNANT_EBON_BLADE_CHAMPION : SPELL_PENNANT_ARGENT_CRUSADE_CHAMPION; - else if (player->GetAchievementMgr().HasAchieved(ACHIEVEMENT_ARGENT_VALOR)) + else if (player->HasAchieved(ACHIEVEMENT_ARGENT_VALOR)) return player->getClass() == CLASS_DEATH_KNIGHT ? SPELL_PENNANT_EBON_BLADE_VALIANT : SPELL_PENNANT_ARGENT_CRUSADE_VALIANT; else return player->getClass() == CLASS_DEATH_KNIGHT ? SPELL_PENNANT_EBON_BLADE_ASPIRANT : SPELL_PENNANT_ARGENT_CRUSADE_ASPIRANT; |
