aboutsummaryrefslogtreecommitdiff
path: root/src/game/ObjectMgr.cpp
diff options
context:
space:
mode:
authorclick <none@none>2010-05-14 23:43:42 +0200
committerclick <none@none>2010-05-14 23:43:42 +0200
commit85ec98ff9f431347de41bf8c18aa9ec609abebf4 (patch)
tree35d93836af9d3144e4e5b4cc7aedeeea97f8137c /src/game/ObjectMgr.cpp
parent1a49477a1765c1ec58be8cf62f4fef92f506a908 (diff)
Allow multiple classes for quest requirements - patch by Shauren
(This should make Malcrom happy) Fixes issue 1476. Fixes issues 1972. Fixes issue 430. --HG-- branch : trunk
Diffstat (limited to 'src/game/ObjectMgr.cpp')
-rw-r--r--src/game/ObjectMgr.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index bfb939df191..44515128c9b 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -3562,8 +3562,8 @@ void ObjectMgr::LoadQuests()
mExclusiveQuestGroups.clear();
- // 0 1 2 3 4 5 6 7 8 9
- QueryResult_AutoPtr result = WorldDatabase.Query("SELECT entry, Method, ZoneOrSort, SkillOrClass, MinLevel, MaxLevel, QuestLevel, Type, RequiredRaces, RequiredSkillValue,"
+ // 0 1 2 3 4 5 6 7 8 9
+ QueryResult_AutoPtr result = WorldDatabase.Query("SELECT entry, Method, ZoneOrSort, SkillOrClassMask, MinLevel, MaxLevel, QuestLevel, Type, RequiredRaces, RequiredSkillValue,"
// 10 11 12 13 14 15 16 17 18 19
"RepObjectiveFaction, RepObjectiveValue, RepObjectiveFaction2, RepObjectiveValue2, RequiredMinRepFaction, RequiredMinRepValue, RequiredMaxRepFaction, RequiredMaxRepValue, SuggestedPlayers, LimitTime,"
// 20 21 22 23 24 25 26 27 28 29 30 31 32 33
@@ -3706,41 +3706,41 @@ void ObjectMgr::LoadQuests()
if (ClassByQuestSort(-int32(qinfo->ZoneOrSort)))
{
// SkillOrClass should not have class case when class case already set in ZoneOrSort.
- if (qinfo->SkillOrClass < 0)
+ if (qinfo->SkillOrClassMask < 0)
{
- sLog.outErrorDb("Quest %u has `ZoneOrSort` = %i (class sort case) and `SkillOrClass` = %i (class case), redundant.",
- qinfo->GetQuestId(),qinfo->ZoneOrSort,qinfo->SkillOrClass);
+ sLog.outErrorDb("Quest %u has `ZoneOrSort` = %i (class sort case) and `SkillOrClassMask` = %i (class case), redundant.",
+ qinfo->GetQuestId(),qinfo->ZoneOrSort,qinfo->SkillOrClassMask);
}
}
//check for proper SkillOrClass value (skill case)
if (int32 skill_id = SkillByQuestSort(-int32(qinfo->ZoneOrSort)))
{
// skill is positive value in SkillOrClass
- if (qinfo->SkillOrClass != skill_id)
+ if (qinfo->SkillOrClassMask != skill_id)
{
- sLog.outErrorDb("Quest %u has `ZoneOrSort` = %i (skill sort case) but `SkillOrClass` does not have a corresponding value (%i).",
+ sLog.outErrorDb("Quest %u has `ZoneOrSort` = %i (skill sort case) but `SkillOrClassMask` does not have a corresponding value (%i).",
qinfo->GetQuestId(),qinfo->ZoneOrSort,skill_id);
//override, and force proper value here?
}
}
}
- // SkillOrClass (class case)
- if (qinfo->SkillOrClass < 0)
+ // SkillOrClassMask (class case)
+ if (qinfo->SkillOrClassMask < 0)
{
- if (!sChrClassesStore.LookupEntry(-int32(qinfo->SkillOrClass)))
+ if (!(-int32(qinfo->SkillOrClassMask) & CLASSMASK_ALL_PLAYABLE))
{
- sLog.outErrorDb("Quest %u has `SkillOrClass` = %i (class case) but class (%i) does not exist",
- qinfo->GetQuestId(),qinfo->SkillOrClass,-qinfo->SkillOrClass);
+ sLog.outErrorDb("Quest %u has `SkillOrClassMask` = %i (class case) but classmask does not have valid class",
+ qinfo->GetQuestId(),qinfo->SkillOrClassMask);
}
}
- // SkillOrClass (skill case)
- if (qinfo->SkillOrClass > 0)
+ // SkillOrClassMask (skill case)
+ if (qinfo->SkillOrClassMask > 0)
{
- if (!sSkillLineStore.LookupEntry(qinfo->SkillOrClass))
+ if (!sSkillLineStore.LookupEntry(qinfo->SkillOrClassMask))
{
sLog.outErrorDb("Quest %u has `SkillOrClass` = %u (skill case) but skill (%i) does not exist",
- qinfo->GetQuestId(),qinfo->SkillOrClass,qinfo->SkillOrClass);
+ qinfo->GetQuestId(),qinfo->SkillOrClassMask,qinfo->SkillOrClassMask);
}
}
@@ -3753,10 +3753,10 @@ void ObjectMgr::LoadQuests()
// no changes, quest can't be done for this requirement
}
- if (qinfo->SkillOrClass <= 0)
+ if (qinfo->SkillOrClassMask <= 0)
{
sLog.outErrorDb("Quest %u has `RequiredSkillValue` = %u but `SkillOrClass` = %i (class case), value ignored.",
- qinfo->GetQuestId(),qinfo->RequiredSkillValue,qinfo->SkillOrClass);
+ qinfo->GetQuestId(),qinfo->RequiredSkillValue,qinfo->SkillOrClassMask);
// no changes, quest can't be done for this requirement (fail at wrong skill id)
}
}