aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Skills
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-03-04 21:18:38 +0100
committerShauren <shauren.trinity@gmail.com>2011-03-04 21:19:43 +0100
commit7120f1eff80c9f057a40831a10d8975c0a8a7439 (patch)
treee77c66ff87570d1484b2cf81be6920ad5cd5e7fd /src/server/game/Skills
parenta9582964d3ca140a1ec1d5894b79e72ed15a65a6 (diff)
Core/Spells:
* Implemented on CheckCast spell script hook * Added possibility to send SPELL_FAILED_CUSTOM_ERROR and added enum with all possible options for it Scripts/Spells: * Added example script for CheckCast hook with SPELL_FAILED_CUSTOM_ERROR (profession research and Book of Glyph Mastery)
Diffstat (limited to 'src/server/game/Skills')
-rwxr-xr-xsrc/server/game/Skills/SkillDiscovery.cpp16
-rwxr-xr-xsrc/server/game/Skills/SkillDiscovery.h1
2 files changed, 17 insertions, 0 deletions
diff --git a/src/server/game/Skills/SkillDiscovery.cpp b/src/server/game/Skills/SkillDiscovery.cpp
index c75d34079b6..c2af8dd1e48 100755
--- a/src/server/game/Skills/SkillDiscovery.cpp
+++ b/src/server/game/Skills/SkillDiscovery.cpp
@@ -191,6 +191,22 @@ uint32 GetExplicitDiscoverySpell(uint32 spellId, Player* player)
return 0;
}
+bool HasDiscoveredAllSpells(uint32 spellId, Player* player)
+{
+ SkillDiscoveryMap::const_iterator tab = SkillDiscoveryStore.find(spellId);
+ if (tab == SkillDiscoveryStore.end())
+ return true;
+
+ SkillLineAbilityMapBounds bounds = sSpellMgr->GetSkillLineAbilityMapBounds(spellId);
+ uint32 skillvalue = bounds.first != bounds.second ? player->GetSkillValue(bounds.first->second->skillId) : 0;
+
+ for (SkillDiscoveryList::const_iterator item_iter = tab->second.begin(); item_iter != tab->second.end(); ++item_iter)
+ if (!player->HasSpell(item_iter->spellId))
+ return false;
+
+ return true;
+}
+
uint32 GetSkillDiscoverySpell(uint32 skillId, uint32 spellId, Player* player)
{
uint32 skillvalue = skillId ? player->GetSkillValue(skillId) : 0;
diff --git a/src/server/game/Skills/SkillDiscovery.h b/src/server/game/Skills/SkillDiscovery.h
index da9a96c4bd9..ae4f3494534 100755
--- a/src/server/game/Skills/SkillDiscovery.h
+++ b/src/server/game/Skills/SkillDiscovery.h
@@ -25,6 +25,7 @@ class Player;
void LoadSkillDiscoveryTable();
uint32 GetSkillDiscoverySpell(uint32 skillId, uint32 spellId, Player* player);
+bool HasDiscoveredAllSpells(uint32 spellId, Player* player);
uint32 GetExplicitDiscoverySpell(uint32 spellId, Player* player);
#endif