diff --git a/common/skills.cpp b/common/skills.cpp index 2eefd49c8..24a32196e 100644 --- a/common/skills.cpp +++ b/common/skills.cpp @@ -38,3 +38,19 @@ bool EQEmu::IsTradeskill(SkillUseTypes skill) return false; } } + +bool EQEmu::IsSpecializedSkill(SkillUseTypes skill) +{ + // this could be a simple if, but if this is more portable if any IDs change (probably won't) + // or any other specialized are added (also unlikely) + switch (skill) { + case SkillSpecializeAbjure: + case SkillSpecializeAlteration: + case SkillSpecializeConjuration: + case SkillSpecializeDivination: + case SkillSpecializeEvocation: + return true; + default: + return false; + } +} diff --git a/common/skills.h b/common/skills.h index 939223e56..b4064ab3f 100644 --- a/common/skills.h +++ b/common/skills.h @@ -263,6 +263,7 @@ typedef enum { // for skill related helper functions namespace EQEmu { bool IsTradeskill(SkillUseTypes skill); + bool IsSpecializedSkill(SkillUseTypes skill); } #endif diff --git a/tests/skills_util_test.h b/tests/skills_util_test.h index 63b5cde5a..96507256e 100644 --- a/tests/skills_util_test.h +++ b/tests/skills_util_test.h @@ -27,6 +27,7 @@ class SkillsUtilsTest: public Test::Suite { public: SkillsUtilsTest() { TEST_ADD(SkillsUtilsTest::IsTradeskill); + TEST_ADD(SkillsUtilsTest::IsSpecializedSkill); } ~SkillsUtilsTest() { @@ -37,6 +38,11 @@ public: TEST_ASSERT(EQEmu::IsTradeskill(SkillPottery)); TEST_ASSERT(!EQEmu::IsTradeskill(SkillParry)); } + + void IsSpecializedSkill() { + TEST_ASSERT(EQEmu::IsSpecializedSkill(SkillSpecializeConjuration)); + TEST_ASSERT(!EQEmu::IsSpecializedSkill(SkillConjuration)) + } }; #endif