aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Player/Player.cpp21
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Spells/SpellMgr.cpp61
3 files changed, 5 insertions, 79 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 19e68dd2e6c..406679616b7 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -111,22 +111,6 @@
static uint32 copseReclaimDelay[MAX_DEATH_COUNT] = { 30, 60, 120 };
-uint32 const MasterySpells[MAX_CLASSES] =
-{
- 0,
- 87500, // Warrior
- 87494, // Paladin
- 87493, // Hunter
- 87496, // Rogue
- 87495, // Priest
- 87492, // Death Knight
- 87497, // Shaman
- 86467, // Mage
- 87498, // Warlock
- 0,
- 87491, // Druid
-};
-
uint64 const MAX_MONEY_AMOUNT = 9999999999ULL;
Player::Player(WorldSession* session) : Unit(true)
@@ -26033,7 +26017,10 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
bool Player::CanUseMastery() const
{
- return HasSpell(MasterySpells[getClass()]);
+ if (ChrSpecializationEntry const* chrSpec = sChrSpecializationStore.LookupEntry(GetSpecId(GetActiveTalentGroup())))
+ return HasSpell(chrSpec->MasterySpellID[0]) || HasSpell(chrSpec->MasterySpellID[1]);
+
+ return false;
}
void Player::ValidateMovementInfo(MovementInfo* mi)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 9da5232ace7..d87ac5a91f9 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -116,8 +116,6 @@ struct PlayerSpell
bool disabled : 1; // first rank has been learned in result talent learn but currently talent unlearned, save max learned ranks
};
-TC_GAME_API extern uint32 const MasterySpells[MAX_CLASSES];
-
enum TalentSpecialization // talent tabs
{
TALENT_SPEC_MAGE_ARCANE = 62,
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 1744f6f638d..beeb1109dce 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -1617,66 +1617,7 @@ void SpellMgr::LoadSpellLearnSpells()
++dbc_count;
}
- uint32 mastery_count = 0;
- for (uint32 i = 0; i < sChrSpecializationStore.GetNumRows(); ++i)
- {
- ChrSpecializationEntry const* chrSpec = sChrSpecializationStore.LookupEntry(i);
- if (!chrSpec)
- continue;
-
- if (chrSpec->ClassID >= MAX_CLASSES)
- continue;
-
- uint32 masteryMainSpell = MasterySpells[chrSpec->ClassID];
-
- for (uint32 m = 0; m < MAX_MASTERY_SPELLS; ++m)
- {
- uint32 mastery = chrSpec->MasterySpellID[m];
- if (!mastery)
- continue;
-
- SpellLearnSpellMapBounds db_node_bounds = dbSpellLearnSpells.equal_range(masteryMainSpell);
- bool found = false;
- for (SpellLearnSpellMap::const_iterator itr = db_node_bounds.first; itr != db_node_bounds.second; ++itr)
- {
- if (itr->second.Spell == mastery)
- {
- TC_LOG_ERROR("sql.sql", "Found redundant record (entry: %u, SpellID: %u) in `spell_learn_spell`, spell added automatically as mastery learned spell from ChrSpecialization.dbc", masteryMainSpell, mastery);
- found = true;
- break;
- }
- }
-
- if (found)
- continue;
-
- // Check if it is already found in Spell.dbc, ignore silently if yes
- SpellLearnSpellMapBounds dbc_node_bounds = GetSpellLearnSpellMapBounds(masteryMainSpell);
- found = false;
- for (SpellLearnSpellMap::const_iterator itr = dbc_node_bounds.first; itr != dbc_node_bounds.second; ++itr)
- {
- if (itr->second.Spell == mastery)
- {
- found = true;
- break;
- }
- }
-
- if (found)
- continue;
-
- SpellLearnSpellNode masteryNode;
- masteryNode.Spell = mastery;
- masteryNode.OverridesSpell = 0;
- masteryNode.Active = true;
- masteryNode.AutoLearned = false;
-
- mSpellLearnSpells.insert(SpellLearnSpellMap::value_type(masteryMainSpell, masteryNode));
- ++mastery_count;
- }
- }
-
- TC_LOG_INFO("server.loading", ">> Loaded %u spell learn spells, %u found in Spell.dbc and %u from TalentTab.dbc in %u ms", count, dbc_count, mastery_count, GetMSTimeDiffToNow(oldMSTime));
+ TC_LOG_INFO("server.loading", ">> Loaded %u spell learn spells, %u found in Spell.dbc in %u ms", count, dbc_count, GetMSTimeDiffToNow(oldMSTime));
}
void SpellMgr::LoadSpellTargetPositions()