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
This commit is contained in:
click
2010-05-14 23:43:42 +02:00
parent 1a49477a17
commit 85ec98ff9f
6 changed files with 32 additions and 30 deletions
+8 -8
View File
@@ -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)