aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/ObjectMgr.cpp36
-rw-r--r--src/game/Player.cpp16
-rw-r--r--src/game/QuestDef.cpp2
-rw-r--r--src/game/QuestDef.h4
4 files changed, 29 insertions, 29 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)
}
}
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index b0b49b4f3a4..4370953a7be 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -14338,11 +14338,11 @@ void Player::FailQuest(uint32 questId)
bool Player::SatisfyQuestSkillOrClass(Quest const* qInfo, bool msg)
{
- int32 zoneOrSort = qInfo->GetZoneOrSort();
- int32 skillOrClass = qInfo->GetSkillOrClass();
+ int32 zoneOrSort = qInfo->GetZoneOrSort();
+ int32 skillOrClassMask = qInfo->GetSkillOrClassMask();
// skip zone zoneOrSort and 0 case skillOrClass
- if (zoneOrSort >= 0 && skillOrClass == 0)
+ if (zoneOrSort >= 0 && skillOrClassMask == 0)
return true;
int32 questSort = -zoneOrSort;
@@ -14357,10 +14357,10 @@ bool Player::SatisfyQuestSkillOrClass(Quest const* qInfo, bool msg)
}
// check class
- if (skillOrClass < 0)
+ if (skillOrClassMask < 0)
{
- uint8 reqClass = -int32(skillOrClass);
- if (getClass() != reqClass)
+ uint8 reqClassMask = -int32(skillOrClassMask);
+ if (!(reqClassMask & getClassMask()))
{
if (msg)
SendCanTakeQuestResponse(INVALIDREASON_DONT_HAVE_REQ);
@@ -14368,9 +14368,9 @@ bool Player::SatisfyQuestSkillOrClass(Quest const* qInfo, bool msg)
}
}
// check skill
- else if (skillOrClass > 0)
+ else if (skillOrClassMask > 0)
{
- uint32 reqSkill = skillOrClass;
+ uint32 reqSkill = skillOrClassMask;
if (GetSkillValue(reqSkill) < qInfo->GetRequiredSkillValue())
{
if (msg)
diff --git a/src/game/QuestDef.cpp b/src/game/QuestDef.cpp
index e41dbfed425..c308f498ff0 100644
--- a/src/game/QuestDef.cpp
+++ b/src/game/QuestDef.cpp
@@ -27,7 +27,7 @@ Quest::Quest(Field * questRecord)
QuestId = questRecord[0].GetUInt32();
QuestMethod = questRecord[1].GetUInt32();
ZoneOrSort = questRecord[2].GetInt32();
- SkillOrClass = questRecord[3].GetInt32();
+ SkillOrClassMask = questRecord[3].GetInt32();
MinLevel = questRecord[4].GetUInt32();
MaxLevel = questRecord[5].GetUInt32();
QuestLevel = questRecord[6].GetInt32();
diff --git a/src/game/QuestDef.h b/src/game/QuestDef.h
index c694c65abb9..5872b2622b8 100644
--- a/src/game/QuestDef.h
+++ b/src/game/QuestDef.h
@@ -185,7 +185,7 @@ class Quest
uint32 GetQuestId() const { return QuestId; }
uint32 GetQuestMethod() const { return QuestMethod; }
int32 GetZoneOrSort() const { return ZoneOrSort; }
- int32 GetSkillOrClass() const { return SkillOrClass; }
+ int32 GetSkillOrClassMask() const { return SkillOrClassMask; }
uint32 GetMinLevel() const { return MinLevel; }
uint32 GetMaxLevel() const { return MaxLevel; }
uint32 GetQuestLevel() const { return QuestLevel; }
@@ -287,7 +287,7 @@ class Quest
uint32 QuestId;
uint32 QuestMethod;
int32 ZoneOrSort;
- int32 SkillOrClass;
+ int32 SkillOrClassMask;
uint32 MinLevel;
uint32 MaxLevel;
int32 QuestLevel;